原作: Brian Somers, 協力:
Nik Clayton, Dirk-Willem van Gulik <Dirk.vanGulik@jrc.it>
,
Peter Childs <pjchilds@imforei.apana.org.au>
.
以下の情報を手に入れておく必要があるでしょう:
PPP で接続するインターネットサービスプロバイダ (ISP) のアカウント. さらに, 接続済みのモデム (またはその他のデバイス) があり, プロバイダとの接続が可能なように正しく設定されている.
プロバイダの電話番号.
ログイン名とパスワード. これは通常の unix 形式のログイン名と パスワードの組という場合もありますし, PPP PAP または CHAP の ログイン名とパスワードの組という場合もあります.
一つ以上のネームサーバの IP アドレス. 通常,
プロバイダから IP アドレスを二つ指示されている はずです.
一つすら提供されていないならば, ppp.conf
ファイル中で enable dns
コマンドを使って
ppp にネームサーバを設定するよう
指示できます.
プロバイダからは以下の情報が提供されているはずですが, どうしても必要というわけではありません:
プロバイダのゲートウェイの IP アドレス. ゲートウェイとは, あなたがそこに接続をおこなって, デフォルトルート として設定することになるマシンです. プロバイダがこのアドレスを明示していなくても, 最初は 適当に設定しておいて, 接続時にプロバイダの PPP サーバから 正しいアドレスを教えてもらうことができます.
このアドレスは, ppp から
HISADDR
として参照されます.
プロバイダのネットマスク設定.
プロバイダが明示していないとしても, ネットマスクとして
255.255.255.0
を使用しておけば問題ありません.
もしプロバイダから固定の IP アドレスとホスト名の割り当てを 受けていれば, その情報を指定しておくこともできます. 割り当てを受けていなければ, 接続先から適切な IP アドレスを指定してもらいます.
もし, 必要な情報が不足していれば, プロバイダに連絡を取って 確認しておいてください.
説明でも述べているように, ppp
はカーネルの tun
デバイスを使います.
使っているカーネルがどれであっても,
tun
デバイスを設定しなければなりません.
FreeBSDに付属しているデフォルトの
GENERIC
カーネルに合うように
tun
デバイスは前もって設定されています.
しかしながら, 自分で修正したカーネルをインストールするのであれば,
pppが正しく動くよう, カーネルが設定されているか確認しなくてはいけません.
これを確認するには, カーネルコンパイルディレクトリ
(/sys/i386/conf
または
/sys/pc98/conf
) に移動して,
カーネルコンフィグレーションファイルを調べます.
以下の行がどこかに含まれている必要があります.
pseudo-device tun 1
この行がカーネルコンフィグレーションファイルに
含まれていない場合, この行を追加して
カーネルの再コンパイルとインストールをおこなう必要があります.
元々の GENERIC
カーネルは
標準でこれを含んでいますので,
カスタムカーネルをインストールしているのではなかったり,
/sys
ディレクトリが存在しないのであれば,
何も変更する必要はありません.
カーネルコンフィグレーションの詳細については,
FreeBSD
カーネルのコンフィグレーション
を参照してください.
以下のコマンドを実行することで, 現在のカーネルにトンネルデバイスが いくつ組み込まれているかを調べることができます:
#
ifconfig -a
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500 inet 200.10.100.1 --> 203.10.100.24 netmask 0xffffffff tun1: flags=8050<POINTOPOINT,RUNNING,MULTICAST> mtu 576 tun2: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500 inet 203.10.100.1 --> 203.10.100.20 netmask 0xffffffff tun3: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
FreeBSD 4.0やより最近のリリースでは, すでに使われている
tun
デバイスしか見つけることが
できないでしょう. これは, 全く
tun
デバイスを見つけることが
できないかもしれないということです. しかし, もしこうなって
しまっても, 心配することはありません. そのデバイスは
ppp
が使おうとする時に動的に作られるはず
だからです.
この例ではトンネルデバイスが四つ存在し, そのうち二つに
設定がおこなわれ, 使用中であることがわかります. 上の例で
RUNNING
フラグがオンになっている
ものがありますが, これは
そのインタフェースが何かに使用されていることを示している
だけであるということに注意してください. つまり,
RUNNING
になっていない
インタフェースがあったとしても, それはエラーではありません.
トンネルデバイスがカーネルに組み込まれておらず, 何らかの理由で カーネルの再構築ができない場合でも, 方法がないわけではありません. 動的にデバイスをロードすることができるはずです. 詳細については modload(8) や lkm(4) など, 適切なマニュアルを参照してください.
ほとんどのユーザは tun
デバイス
(/dev/tun0
) が一つあれば充分でしょう.
より多くのデバイスを使う場合 (すなわち,
カーネルコンフィグレーション ファイルで pseudo-device
tun
の行に 1
以外の数値を指定している場合), 以下で
tun0
と書かれている部分をすべて,
あなたが使うデバイスの番号に
あわせて読みかえてください.
tun0
デバイスが正しく作成されていることを確認する最も簡単な方法は,
それを作り直すことです. そのためには,
以下のコマンドを実行します:
#
cd /dev
#
./MAKEDEV tun0
カーネルに 16 個のトンネルデバイスを組み込んだのであれば,
tun0
だけでなく他の tun
デバイスも作成しておく必要があるでしょう:
#
cd /dev
#
./MAKEDEV tun15
また, カーネルが正しく設定されているかどうかを調べるために 以下のコマンドを実行して, このような出力が得られることを確認します:
#
ifconfig tun0
tun0: flags=8050<POINTOPOINT,RUNNING,MULTICAST> mtu 1500
まだ RUNNING
フラグがセットされていない場合もあります.
その時は以下のような出力が得られるでしょう:
#
ifconfig tun0
tun0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
前述したように, FreeBSD 4.0 以降のリリースでは
tun
デバイスは要求に応じて
作られるので, もしそのデバイスがまだ使われていなければ,
見つけられないかもしれないということを思い出してください.
リゾルバ (resolver) はシステムの一部分で, IP
アドレスとホスト名との 変換をおこないます. IP
アドレスとホスト名を対応させるためのマップを,
二つの場所のうちの一つから探すように設定できます. 一つめは
/etc/hosts
(man 5
hosts
) と呼ばれるファイルです. 二つめはインターネット
ドメインネームサービス (DNS) と呼ばれる
分散データベースですが, これに関する議論は
このドキュメントで扱う範囲を 越えていますので,
これについての説明はおこないません.
リゾルバは名前のマッピングを
おこなうシステムコールの集合体です. ただし
どこからマッピング情報を見つけるのかは,
最初に指示しておく必要があります. これは まず
/etc/host.conf
ファイルを編集することでおこないます. 混乱の元になりますので,
このファイルを /etc/hosts.conf
と
呼んだりしてはいけません (余分な
s
がついていますね).
このファイルには 以下の 2 行が (この順番で) 書かれているはずです:
hosts bind
これは, 最初に /etc/hosts
ファイルを調べ, そこで目的の名前が 見つけられなかった場合に
DNS を引きにいくようリゾルバに指示します.
このファイルはローカルネットワーク上に存在するマシンの
IP アドレスと ホスト名を含んでいるはずです. 最低でも ppp
を動作させるマシンのエントリが 含まれている必要があります.
そのマシンのホスト名が foo.bar.com
で, IP アドレスが
10.0.0.1
であると仮定すると,
/etc/hosts
は
以下の行を含んでいなければいけません:
127.0.0.1 localhost.bar.com localhost 127.0.0.1 localhost.bar.com. 10.0.0.1 foo.bar.com foo 10.0.0.1 foo.bar.com.
一つめの行は localhost
を現在のマシンの別名として定義しています. マシン固有の IP
アドレスが何であっても, この行の IP アドレスは 常に
127.0.0.1
でなければいけません.
二つめの行はホスト名 foo.bar.com
(と, その省略形
foo
) を IP アドレス
10.0.0.1
にマップします.
もしプロバイダから固定の IP
アドレスとホスト名を割り当てられて いるのであれば, それを
10.0.0.1
エントリのかわりに使ってください.
/etc/resolv.conf
はリゾルバの振舞いを指定します. もし自前の DNS
サーバを走らせているのなら, このファイルは空のままに
しておくこともできます. 通常は,
以下のように書いておく必要があるでしょう:
domainbar.com
nameserverx.x.x.x
nameservery.y.y.y
と x.x.x.x
はプロバイダから指示されたアドレスで,
接続するプロバイダが提供しているネームサーバを
すべて書いてください. y.y.y.y
domain
に指定するのは このマシンのデフォルトのドメイン名で,
おそらく 書かなくても問題は無いでしょう.
このファイルの各エントリの詳細については,
resolv.conf
のマニュアルページを参照してください.
バージョン 2 以降の ppp を使用している場合には,
enable dns
コマンドを使用してネームサーバのアドレスを
プロバイダに問い合わせるように指示することができます.
上の指定とは異なるアドレスをプロバイダが指定してきた場合
(または /etc/resolv.conf
でネームサーバが指定されていない場合), ppp
はプロバイダが指定したアドレスで
resolv.conf
を書きかえます.
ユーザ ppp と pppd
(カーネルレベルの
PPP 実装) は どちらも /usr/share/examples/ppp
ディレクトリに置かれた設定ファイルを使います.
ここには設定ファイルのサンプルが用意されていて, ユーザ ppp
の設定を おこなう際に大変参考になりますので,
削除したりしないでください.
ppp
の設定をするためには,
必要に応じていくつかのファイルを編集する必要が あります.
書き込む内容は, プロバイダが静的に IP アドレスを割り当てる
(つまり, 固定の IP アドレスを一つ与えられて, 常にそれを使う)
か, または動的に IP アドレスを割り当てる (つまり, PPP
セッションごとに IP アドレスが変化する可能性がある)
かということに ある程度依存します.
まず /etc/ppp/ppp.conf
という設定ファイルを作成する必要があります.
これは以下の例とほとんど同じようなものになるでしょう.
:
で終る行は 1 カラム目から始め,
その他の行はスペースまたはタブで以下の例のように
段をつける (インデントする) 必要があります.
1 default: 2 set device /dev/cuaa0 3 set speed 115200 4 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" ATE1Q0 OK-AT-OK \\dATDT\\TTIMEOUT 40 CONNECT" 5 provider: 6 set phone "(123) 456 7890" 7 set login "TIMEOUT 10 \"\" \"\" gin:--gin: foo word: bar col: ppp" 8 set timeout 300 9 set ifaddrx.x.x.x
y.y.y.y
255.255.255.0 0.0.0.0 10 add default HISADDR 11 enable dns
ファイルでは行番号を取り除いておいてください. これは解説の際に参照する行を示すためにつけたものです.
デフォルトエントリを指定します. このエントリ中のコマンドは ppp が起動された際に自動的に実行されます.
モデムが接続されているデバイスを指定します.
COM1:
は
/dev/cuaa0
に,
COM2:
は
/dev/cuaa1
になります.
通信速度 (DTE 速度) を指定します. もし 115200 が使えない (最近のモデムなら大抵使えるはずですが) 場合には, かわりに 38400 を指定してみてください.
ダイアルスクリプトを指定します. ユーザ PPP は chat(8) 言語に似た, 受信待ち文字列と 送信文字列の対からなるスクリプトを使用します. この言語の機能に関しては, マニュアルページを参照してください.
接続するプロバイダの名前 「provider」 を エントリ名として指定します.
このプロバイダの電話番号を指定します.
複数の電話番号を :
や
|
で区切って指定することができます.
これら区切り文字の違いについては, ppp(8)
に 詳しく書かれています.
要約すると, 毎回違う番号に かけたいのであれば
:
を使います. 常に
まず先頭の番号にかけてみて, つながらない時にだけ 2
番目以降の番号に かけたいのであれば
|
を使います.
例に示されているように, 常に電話番号全体を引用符で
くくって (クォートして) おきます.
ダイアルスクリプトと同様に, ログインスクリプトも chat 言語風の記述をおこないます. この例は, 以下のようなログインセッションを使用する プロバイダのためのものです:
J. Random Provider login:foo
password:bar
protocol: ppp
このスクリプトは必要に応じて 書きかえなければならないでしょう. 初めてスクリプトを書く時には, 予想した通りに 処理が進んだかどうかを確認するため, 「chat」 ログを とるようにしておいた方が良いでしょう.
PAP や CHAP を使用する場合には, ここでログインすることは ありませんから, ログイン文字列は空白のままにしておくべきです. 詳細については PAP および CHAP による認証を参照してください.
デフォルトの接続タイムアウト時間を (秒数で) 指定します. この例では, 300 秒間 通信がおこなわれなければ 自動的に接続を切るように指定しています. タイムアウトさせたくない場合には, この値を 0 に設定します.
インタフェースのアドレスを指定します. 文字列
x.x.x.x
は
プロバイダに割り当てられた IP
アドレスで置きかえてください. 文字列
y.y.y.y
はプロバイダから指示されたゲートウェイ
(接続先となるマシン) の IP
アドレスで置きかえてください.
プロバイダがゲートウェイのアドレスを
指示していない場合は, 10.0.0.2/0
を使用しておいてください. もし 「仮の」
アドレスを使用する必要がある場合には,
動的 IP アドレスによる
PPP 接続に関する指示に従って,
/etc/ppp/ppp.linkup
にエントリを作成していることを 確認してください.
この行が省略されている場合, ppp を
-auto
モードで動作させることはできません.
プロバイダのゲートウェイへの経路を
デフォルトルートとして 追加します. 特殊文字列
HISADDR
は, 9 行目で指定された
ゲートウェイのアドレスで置きかえられます.
HISADDR
は 9
行目までは初期化されていませんので,
その行よりも後でしか使えないことに
注意してください.
ネームサーバのアドレスが正しいか
どうかを確認するため,
プロバイダに問い合わせをおこなうよう ppp に指示します.
プロバイダがこの機能をサポートしていれば, ppp は
/etc/resolv.conf
のネームサーバエントリを
正しいアドレスに更新することができます.
静的な IP アドレスを持っていて,
接続が完了する前にルーティングテーブルの
エントリが正しく設定されているのであれば,
ppp.linkup
に
エントリを追加する必要はありません. しかし,
この場合でもエントリを追加して, 接続が完了した時点で
プログラムを呼び出したいことがあるかもしれません.
これについては後ほど sendmail を例として説明します.
これらの設定ファイルのサンプルが
/usr/share/examples/ppp
ディレクトリに
置かれています.
プロバイダが静的な IP
アドレスの割り当てをおこなっていない場合,
ppp
が相手側のホスト (ゲートウェイ)
と交渉して, こちら側と相手側のアドレスを
決めるように設定することができます. これは,
起動時には「仮の」アドレスを使っておいて,
接続後に IP コンフィグレーション プロトコル (IPCP)
を使用して ppp
が IP
アドレスを正しく設定できるようにすることで実現されます.
静的 IP アドレスによる PPP
接続に 以下の変更を加える以外は,
ppp.conf
の設定は同じです:
9 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0
繰り返しますが, 行番号は取り除いておいてください. これは解説の際に参照する行を示すためにつけたものです. なお, 少なくともスペース 1 個分の段づけ (インデント) が必要です.
/
文字の後ろの数字は,
アドレス交渉の際に固定しておきたい ビットの数です.
場合によっては, もっと適切な IP アドレスを
指定しておきたいこともあるかもしれませんが,
ほとんどの場合には 上の例の通りで問題ありません.
最後の引数 (0.0.0.0
) は,
アドレスの交渉の際に 10.0.0.1
ではなく 0.0.0.0
を使用するよう ppp
に指示するためのものです. set
ifaddr
コマンドの最初の引数として
0.0.0.0
を指定してはいけません.
さもないと, -auto
モードで動作させる際に
初期経路を設定することができなくなります.
バージョン 1.X の ppp を使用する場合,
/etc/ppp/ppp.linkup
にもエントリを作成しておく必要があります.
ppp.linkup
は接続が確立された後に使用されます. この時点では,
ppp
は実際にどの IP
アドレスを使うべきなのか わかっているはずです.
以下のエントリは存在する仮の経路を削除し,
正しい経路を作成します:
1 provider: 2 delete ALL 3 add default HISADDR
接続を確立する際に, ppp
は以下のルールに従って
ppp.linkup
のエントリを検索します: まず
ppp.conf
で使用されたのと同じラベルを探します.
もし見つからなければ, ゲートウェイの IP
アドレスのエントリを 探します. このエントリは 4
オクテットの IP アドレス形式の ラベルです. それでも
まだエントリが見つからなければ,
MYADDR
エントリを探します.
この行は, 使用する tun
インタフェースに関する既存の経路を
(ダイレクトルートのエントリを除き) すべて削除するよう
ppp
に指示します.
この行は HISADDR
への経路をデフォルトルートとして 追加するように ppp
に指示します. HISADDR
は IPCP で
決定されたゲートウェイの IP
アドレスで置きかえられます.
詳細なサンプルについては,
/usr/share/examples/ppp/ppp.conf.sample
ファイル中のpmdemand エントリと
/usr/share/examples/ppp/ppp.linkup.sample
を参照してください.
バージョン 2 の ppp から 「sticky routes」
が導入されました. MYADDR
や
HISADDR
を含む add
コマンドと delete
コマンドを記憶して,
MYADDR
や HISADDR
の
アドレスが変化した際には経路の再設定をおこないます.
したがって, これらのコマンドを
ppp.linkup
に
繰り返し記述する必要は無くなりました.
かかってきた電話を ppp
が受けるように設定する際に, そのマシンが LAN
に接続されているのであれば, パケットを LAN
に転送するかどうかを決定する必要があります.
転送をおこなう場合には, その LAN のサブネットから IP
アドレスを ppp クライアントに割り当て,
以下のコマンドを指定するのが良いでしょう.
gateway_enable=YES
getty でダイアルアップサービスをおこなう場合の優れた解説が FreeBSD でダイアルアップサービスをおこなうための設定 にあります.
getty
に代わるものとしては,
mgetty があります. これは
getty
をより柔軟にしたもので,
ダイアルアップ回線での使用を意図して
設計されています.
mgetty
を使う場合の利点は,
mgetty
が積極的にモデムと通信する
ということです. つまり, もし
/etc/ttys
でポートを閉じている場合,
モデムは電話をとらなくなります.
最近のバージョンの mgetty
(0.99beta
以降) では, PPP ストリームの
自動検出もサポートされています. これにより,
クライアント側で スクリプトを準備しなくてもサーバに
アクセスすることができます.
mgetty
に関する,
より詳細な情報については
Mgetty と AutoPPP
を参照してください.
ppp
は通常, ID 0 のユーザ (root)
として動作しなければいけませんが, 以下で説明するように,
ppp
を通常のユーザとしてサーバモードで実行させたい 場合には,
そのユーザを /etc/group
の
network
グループに 追加して, ppp
を実行する許可を与えておかなければいけません.
また, そのユーザが設定ファイル内の目的のエントリに
アクセスできるように, 以下のように
allow
コマンドで許可を与えておく必要があります:
allow users fred mary
このコマンドがデフォルトエントリに 書かれている場合には, 指定されたユーザは すべてのエントリをアクセスできるようになります.
/etc/ppp/ppp-shell
という名前で,
以下のような内容のファイルを 作成します:
#!/bin/sh IDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'` CALLEDAS="$IDENT" TTY=`tty` if [ x$IDENT = xdialup ]; then IDENT=`basename $TTY` fi echo "PPP for $CALLEDAS on $TTY" echo "Starting PPP for $IDENT" exec /usr/sbin/ppp -direct $IDENT
このスクリプトには実行可能属性をつけておきます. 次に,
以下のコマンドを実行し, ppp-dialup
という名前で このスクリプトへのリンクを作成します:
#
ln -s ppp-shell /etc/ppp/ppp-dialup
すべてのダイアルアップ ppp
ユーザのログインシェルとして
このスクリプトを使用します. 以下は
pchilds
というユーザ名の
ダイアルアップユーザを /etc/password
へ登録した場合の例です.
(パスワードファイルを直接エディタで編集したりせず,
vipw
を使ってください)
pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup
任意のユーザが読むことのできる,
/home/ppp
ディレクトリを 作成します.
/etc/motd
が表示されないようにするため,
このディレクトリには以下のように大きさが 0
バイトのファイルを 作成しておきます.
-r--r--r-- 1 root wheel 0 May 27 02:23 .hushlogin -r--r--r-- 1 root wheel 0 May 27 02:22 .rhosts
上記と同じように ppp-shell
ファイルを作成し, 静的な IP
アドレスを割り当てるアカウントそれぞれについて
ppp-shell
へのシンボリックリンクを作成します.
例えば, クラス C ネットワークの経路制御を必要とする,
三人のダイアルアップユーザ fred
,
sam
, mary
がいるとすると,
以下のコマンドを実行することになります:
#
ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred
#
ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam
#
ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary
これらのユーザのダイアルアップアカウントでは,
上で作成した それぞれのシンボリックリンクを
ログインシェルとして設定しておきます. (つまり, ユーザ
mary
のログインシェルは
/etc/ppp/ppp-mary
に
なります).
/etc/ppp/ppp.conf
ファイルは,
大体以下のような内容になるでしょう:
default: set debug phase lcp chat set timeout 0 ttyd0: set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255 enable proxy ttyd1: set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255 enable proxy
上の例のように段をつける (インデントする) 必要があることに注意してください.
default:
エントリはセッションごとにロードされます.
/etc/ttys
で有効にしてある各ダイアルアップ回線ごとに一つ, 上記の
ttyd0:
のようなエントリを作成します.
各行の相手側アドレスとして, それぞれ別の IP アドレスを
動的 IP ユーザのための IP
アドレスのプールから割り当てておく必要があります.
上のサンプルの
/usr/share/examples/ppp/ppp.conf
の内容に加えて, 静的に IP
を割り当てられたダイアルアップユーザ
それぞれのためのエントリを追加する必要があります.
ここでも fred
,
sam
, mary
の例を使うことにしましょう.
fred: set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255 sam: set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255 mary: set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255
必要であれば, それぞれの静的 IP
ユーザに対する経路制御情報も
/etc/ppp/ppp.linkup
ファイルに書いておくべきでしょう.
以下の例ではクライアントの PPP リンクを経由する, クラス C
の 203.14.101.0
ネットワークへの経路を追加しています.
fred: add 203.14.101.0 netmask 255.255.255.0 HISADDR sam: add 203.14.102.0 netmask 255.255.255.0 HISADDR mary: add 203.14.103.0 netmask 255.255.255.0 HISADDR
AUTO_PPP
オプションつきでコンパイルした mgetty
を使えば, mgetty
が PPP 接続の LCP
フェーズを検出して, 自動的に PPP シェルを起動するように
設定することができます. しかし この場合, デフォルトの
login/password シーケンスは発生しないので,
ユーザの認証は PAP または CHAP
を使っておこなう必要があります.
このセクションでは, ユーザ (あなた) が問題なく
AUTO_PPP
オプションつきの
mgetty
(v0.99beta またはそれ以降)
の設定, コンパイル,
インストールができているものと仮定しています.
/usr/local/etc/mgetty+sendfax/login.config
ファイルが
以下の行を含んでいることを確認してください:
/AutoPPP/ - - /etc/ppp/ppp-pap-dialup
これにより, PPP 接続を検出したら
mgetty
が
ppp-pap-dialup
スクリプトを実行するようになります.
/etc/ppp/ppp-pap-dialup
という名前で, 以下のような内容のファイルを 作成します
(このファイルには実行可能属性を
つけておく必要があります):
#!/bin/sh exec /usr/sbin/ppp -direct pap
さらに, かかってきた電話すべてを自分で扱うエントリを
/etc/ppp/ppp.conf
に作成します.
pap: enable pap set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40 enable proxy
この方法でログインする それぞれのユーザは, PAP
によるユーザ認証を おこなうために
/etc/ppp/ppp.secret
ファイルにユーザ名とパスワードを 書いておくか, または
/etc/password
ファイルを使うように,
enable passwdauth
ユーザに静的な IP アドレスを割り当てる場合には,
そのアドレスを /etc/ppp/ppp.secret
の第三引数として指定することができます.
サンプルについては,
/usr/share/examples/ppp/ppp.secret.sample
を参照してください.
クライアントからの要求に応じて, ppp が DNS や NetBIOS ネームサーバの アドレスを通知するように 設定をおこなうこともできます.
バージョン 1.X の ppp で
これらの拡張機能を有効にするには, 以下の行を
/etc/ppp/ppp.conf
の適切なセクションに追加する必要があるでしょう.
enable msext set ns 203.14.100.1 203.14.100.2 set nbns 203.14.100.5
バージョン 2 以降の ppp では, 以下のようになります:
accept dns set dns 203.14.100.1 203.14.100.2 set nbns 203.14.100.5
これにより, クライアントはプライマリと セカンダリのネームサーバアドレス および NetBIOS ネームサーバホストを知ることができます.
バージョン 2 以降の ppp では, set
dns
の行を省略した場合には
/etc/resolv.conf
に書かれているネームサーバのアドレスを使用します.
いくつかのプロバイダでは, PAP または CHAP
のいずれかの認証メカニズムを
使用して接続時の認証をおこなうように
システムを設定しています. この場合, プロバイダは接続の際に
login:
プロンプトを送信せず, 最初から PPP
で通信を始めようとするでしょう.
PAP ではパスワードがそのまま送られてしまうため, CHAP に比べると安全性が 低くなりますが, このパスワードはシリアル回線のみを通して送られます. そのため, クラッカーが 「盗み聞き」 する余地は多くないので, 通常ここの セキュリティは問題にはなりません.
静的 IP アドレスによる PPP 接続または 動的 IP アドレスによる PPP 接続の セクションに戻って, 以下の変更をおこないます:
7 set login … 12 set authnameMyUserName
13 set authkeyMyPassword
これまでと同様に, 行番号は取り除いておいてください. これは解説の際に参照する行を示すためにつけたものです. なお, 少なくともスペース 1 個分の段づけ (インデント) が必要です.
PAP または CHAP を使用する場合, 通常 プロバイダはサーバへの ログインを必要としません. そのため, 「set login」 文字列を 無効にしておかなければいけません.
この行は PAP/CHAP ユーザ名を指定します.
MyUserName
に
正しい値を入れておく必要があります.
この行は PAP/CHAP パスワードを指定します.
MyPassword
に
正しい値を入れておく必要があります.
PAP と CHAP はデフォルトで両方とも
受け付けられるようになって
いますが, PAP や CHAP を使用するという
意思を明示するために,
15 accept PAP
または
15 accept CHAP
という行を追加しておくのも良いでしょう.
適切な診断ポートが設定されている場合には,
バックグラウンドで動作中の ppp
プログラムと通信することができます.
この設定をおこなうためには,
以下の行を設定ファイルに追加しておきます:
set server /var/run/ppp-tun%d DiagnosticPassword 0177
これにより, ppp は指定された unix ドメインの
ソケットをモニタして,
クライアントから正しいパスワードを受け取った後に
アクセスを許可します. このソケット名に含まれる
%d
は, この ppp が使用している
tun
デバイスの デバイス番号で置きかえられます.
一旦ソケットの設定が終了したら, スクリプト中で pppctl(8) を 使用して, 動作中の ppp を操作することができるでしょう.
これで ppp
の設定は終りました. しかし
ppp
を動かす前に,
まだ少し必要なことがあります. それらの設定は, すべて
/etc/rc.conf
ファイルを
編集することでおこないます. (このファイルは以前には
/etc/sysconfig
と呼ばれていました)
このファイルを上から順に設定していきます. まずは
hostname=
の行が設定されていることを確認します.
例えば以下のように:
hostname="foo.bar.com"
もしプロバイダが静的な IP アドレスとホスト名を割り当てているのなら, ホスト名としてそれを使うのが おそらくベストでしょう.
次に network_interfaces
変数を調べます.
必要に応じて (on demand)
プロバイダにダイアルするようにシステムを設定したい場合には,
tun0
デバイスがこのリストに追加されていることを確認しておきます.
それ以外の場合には, tun0
デバイスをリストから削除しておきます.
network_interfaces="lo0 tun0" ifconfig_tun0=
ifconfig_tun0
変数が空で,
/etc/start_if.tun0
という名前の
ファイルが作成されていなければなりません.
このファイルの内容は以下のようになります.
ppp -auto mysystem
このスクリプトはネットワークの設定時に実行され, ppp
デーモンを自動モードで立ち上げます. このマシンがもし LAN
のゲートウェイであれば, -alias
スイッチも使用したいと思うかもしれません. 詳細に関しては,
マニュアルページを参照してください.
以下のようにルータプログラムを NO
に設定します.
router_enable="NO"
routed
は, ppp
が作成したデフォルトのルーティングテーブル
エントリを削除してしまう場合がありますので,
(初期設定では起動されるようになっている)
routed
デーモンが
起動されないようにしておくことが重要です.
sendmail_flags
行が -q
オプションを含まないように 設定しておいた方がよいでしょう.
さもないと, sendmail
が
アドレスを調べようとして発信をおこなってしまう場合があります.
以下のような設定で良いでしょう:
sendmail_flags="-bd"
この結果, PPP リンクを立ち上げた時には
いつでも以下のコマンドを実行して, キューにたまっているメールを
sendmail
に送信させる作業が必要になるでしょう.
#
/usr/sbin/sendmail -q
ppp.linkup
中で
!bg
コマンドを使用することで,
これを自動的に おこなうこともできます:
1 provider: 2 delete ALL 3 add 0 0 HISADDR 4 !bg sendmail -bd -q30m
こうするのが嫌であれば, SMTP トラフィックをブロックするように 「dfilter」 を設定しておくこともできます. 詳細についてはサンプルファイルを参照してください.
後はマシンをリブートするだけです.
リブートが終ったら,
#
ppp
コマンドを実行し, 続いて PPP セッションを開始させるために
dial provider
と入力することもできますし,
(start_if.tun0
スクリプトを作成していない場合に),
外部へのトラフィックが発生した時に, ppp
が自動的に セッションを確立してくれるようにしたいのであれば,
以下のコマンドを実行することもできます.
#
ppp -auto provider
要約すると, 初めて ppp を設定する際には, 以下のステップが不可欠です:
クライアント側:
カーネルに tun
デバイスが組み込まれていることを確認.
/dev
ディレクトリに
tunX
デバイスファイルが 存在することを確認.
/etc/ppp/ppp.conf
にエントリを作成. ほとんどのプロバイダでは,
pmdemand
の例で充分でしょう.
動的 IP アドレスを使用するなら,
/etc/ppp/ppp.linkup
に
エントリを作成.
/etc/rc.conf
(または
sysconfig
) ファイルを更新.
必要に応じてダイヤル (demand dialing)
したいのであれば, start_if.tun0
スクリプトを作成.
サーバ側:
カーネルに tun
デバイスが組み込まれていることを確認.
/dev
ディレクトリに
tunX
デバイスファイルが 存在することを確認.
(vipw(8) コマンドを使って)
/etc/passwd
にエントリを作成.
このユーザのホームディレクトリに ppp -direct
direct-server
か何かを実行するプロファイルを作成.
/etc/ppp/ppp.conf
にエントリを作成. direct-server
の例で充分でしょう.
/etc/ppp/ppp.linkup
にエントリを作成.
/etc/rc.conf
ファイルを更新.
本文書、および他の文書は https://download.freebsd.org/ftp/doc/ からダウンロードできます。
FreeBSD に関する質問がある場合には、
ドキュメント を読んだ上で
<questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、
<doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。