FreeBSD による PPP 接続方法
本稿では、FreeBSD と PPP に関する簡単な基礎知識と、
FreeBSD による姫路工大アクセスサーバ
への PPP 接続に関する設定方法等について紹介する。
【3. FreeBSD での PPP 〜設定基礎編〜】
- → 3.1 ppp.conf
- → 3.2 ppp.linkup
- → 3.3 ppp.secret
- → 3.4 PPP の起動
PPP では様々な接続方法・モデム関連設定が詳細に可能であるが、
本稿では姫路工大のアクセスサーバを利用する場合の設定方法に絞って解説する。
使用するモデムは、
接続先の機器の性能や電話回線状態に依存するが、
DCE (データ回線終端装置) 速度
が速い程レスポンスがよいであろう。
モデムの基本設定としては、
- フロー制御には RTS (Ready To Send) / CTS (Clear To Send) 信号を使用
- DCD (Data Carrier Detect) 信号はキャリア検出に同期
- DTR (Data Terminal Ready) 信号オフで回線を切断
- DTE (Data Terminal Equipment) 速度は
CPU などの性能に応じて出来るだけ高速に設定
として使用する。設定方法等は各モデムの取扱説明書を参照して欲しい。
FreeBSD での PPP クライアントプログラムとしては、
OS に附属している iij-ppp を使用する。
iij-ppp では、OS内からトンネルデバイスの /dev/tun を
用いて動作する。
iij-ppp の起動に必要なファイル (通常 /etc/ppp のディレクトリに置く)
として、以下のものがある。
- ppp.conf
- モデムとの接続に関する設定・接続先に関する設定等のファイル。
インタラクティブに実行するコマンドをそのまま順に列挙したもの。
(~/.ppp.confがあるとこれを優先して読む)
- ppp.linkup
- 相手側と接続した際に実行するコマンド記述ファイル。
主に routing を指定する。
(~/.ppp.linkupがあるとこれを優先して読む)
- ppp.secret
- 接続相手を Password Authentication Protocol (PAP)/
Challenge-Handshake Authentication Protocol (CHAP) で
認証する際に参照するファイル
これらのファイルがなくとも、Kermit-like なユーザインターフェースにより
対話的に設定可能である。
● 3.1 ppp.conf
ppp.conf の表記規則は、次の通りである。
- # で始まる行はコメント行である
- ラベル名は行の左端から記述する。ラベル行はラベル名の定義のみ記述
- そのラベルによりコマンド群が定義される
コマンドはラベル名の次行から、1行に1つ記述。各行は先頭に1つ以上の空白を入れる
- default: というラベル名のコマンド群は、
PPP の起動時に自動的に実行される
ラベルで定義されるコマンド群は、対話的に上から順次実行される。
下のリスト3-1は、姫路工大アクセスサーバへの接続するための
最も単純な ppp.conf ファイルの設定例である。
[リスト3-1] ppp.conf の設定例
- hit-ppp:
ラベル名
- device
モデムに使用するシリアルデバイス (/dev/cuaa0)
- phone
アクセスサーバの電話番号 (0123-45-6789)
デバイスは各自の設定に応じて、
電話番号は利用承認時の通知に応じて変更すること。
- 通信フラグの設定
PPP による IP 接続の認証として PAP を使用する
- accept pap…接続先 (姫路工大アクセスサーバ) 側からの
PAP 利用提案を受付る
- disable chap…こちら側からは CHAP の利用提案はしない
通信フラグは、相手側のサポートしている機能に応じて、
表3-1に示す指定が、
通信方向別に表3-2に対して設定可能である。
これらは display コマンドで設定状況の表示が出来る (図3a)。
[表3-1] 通信フラグ
指定 |
設定 |
指定 |
設定 |
enable |
自分側から相手側に対する 利用提案をする |
disable |
自分側から相手側に対する 利用提案を禁止 |
accept |
相手側からの利用提案を受付 |
deny |
相手側からの利用提案を拒否 |
[表3-2] 通信フラグのパラメータ
パラメータ |
内容 |
デフォルトの設定 |
自分側 |
相手側 |
vjcomp |
VJヘッダ圧縮機能の動作制御 |
enable |
accept |
lqr |
LQR (Link-Quality-Report) を使用する |
enable |
accept |
chap |
認証プロトコルにchapを使用する |
disable |
accept |
pap |
認証プロトコルにpapを使用する |
disable |
accept |
acfcomp |
ACF 圧縮 (Address-and-Control-Field-Compression) を行なう |
enable |
accept |
protocomp |
PFC (Protocol-Field-Compression) を行なう |
enable |
accept |
pred1 |
Predictor Type1 圧縮を行なう |
enable |
accept |
proxy |
arp (Address Resolution Protocol) table の対応付けを行なう |
disable |
deny |
[図3a] display コマンドの実行例
- PAPの接続認証時に送信されるユーザ名とパスワード
- authname…PPPのユーザ名 (PPPusername)
- authkey…PPPのパスワード (PPPpassword)
これらは利用承認時の通知に応じて設定変更すること。
- set timeout
packet が流れないと回線切断するアイドル時間 (秒) の設定 (デフォルトは180秒)
この機能を使用しない場合は 0 を指定する
アイドル時間の設定が機能した場合、
回線 (リンク層) の接続は切断されるが
アプリケーション (TCP層) の接続は切断されない。
従って再度回線の接続を行なうと、切断前のセッションをそのまま続けることも
可能である (但し、切断される前と同じIPアドレスが使用出来た時に限られる)。
- set dial
ダイヤルスクリプト (パルス (ダイヤル式) 回線時)。
但し、トーン (プッシュ式) 回線を使用の場合は、``ATDP'' を
``ATDT'' にすること
- dial
phone 引数で指定された接続先にダイヤリング (し、ログイン) する
ダイヤルスクリプトとは、ダイヤリング時の手順を設定するものである。
「ABORT 文字列」で、
その文字列を受信すると ABORT (中断) することを示す。
「TIMEOUT 時間(秒) 文字列」で、
その文字列が返ってくるまでの待ち時間を示す。
返ってこない場合は失敗したものとみなされる。
つまり今回の設定は、以下の手順を行なうものである。
- 「BUSY」や「NO CARRIER」が帰ってきたら
即座に中断 (``\''は space を示す)
- 5秒間、空の「受信すべき文字列」を表す "" (設定では
\"\"とする)が帰ってくるのを待つ
- 帰ってきたら ATDP 電話番号 (``\T''は
phone で定義した電話番号を示す) を発信する
- 30秒間、「CONNECT」が帰ってくるのを待つ。
最終的に「CONNECT」が帰ってくれば、成功したものとして手順を終了する。
ここで ``\T'' や ``\s'' は、
「特殊シーケンス」と呼ばれるものである (表3-3)。
[表3-3] 特殊シーケンス一覧
\d |
2秒間待ち |
\p |
0.25秒間待ち |
\s |
Space |
\t |
Tab |
\r |
CR (Carriage-Return) |
\n |
LF (Line-Feed) |
^X |
Ctrl-X |
\c |
CRを付加しない (送信時) |
\\ |
Back-Slash |
\T |
phone値 |
\U |
authname値 |
\P+ |
authkey値 |
この様にラベルをつけてコマンドを登録すれば、
[図3b] pppの起動例
としてコマンド群を自動的に実行出来る。
コマンド群の最後に dial コマンドを指定してあれば、
自動的にダイヤリングも行なう
(設定していない場合は、更に括弧内の操作でダイヤリングを行なう)。
● 3.2 ppp.linkup
PPP では接続時に IPCP により、
接続先との間で双方が用いる IPアドレスを相談して決定する。
この際、使用希望アドレス (範囲) を設定したり、
routing指定を設定するファイルが ppp.linkup である。
現在の姫路工大アクセスサーバの設定であれば、
IPアドレスの決定も routing設定も
完全にサーバ側に「お任せ」状態にしておいてよい (リスト3-2)。
[リスト3-2] ppp.linkupの設定例
- hit-ppp:
ラベル名。ppp.conf で定義したラベル名と同一のものにしておく
- ifaddr
インターフェースの自分側&相手側として使用したいアドレス (範囲) を指定する
0 は相手の提案を無条件に受け入れる という設定
- add
ルーティング追加コマンド
[destination] [subnetmask] [gateway] の3つの引数を必要とする
0 は同様に相手の提案を無条件受諾の設定
``{\tt HISADDR}''は接続先のアドレスを表現する文字列
これで接続先のアドレスが予め判らない・動的に変化する等の場合にも対応出来る
この設定で、接続時のIPアドレスについては相手側である姫路工大アクセス
サーバの提案を無条件に受け入れて決定し、さらに接続後にルーティング情報を
追加することで、経路を確保する。
● 3.3 ppp.secret
接続相手に自分を認証して貰う場合は authname/authkey 変数値が
使用されるが、逆に相手を自分が認証する際にはこのファイルでの設定が参照される。
書式は以下の通りである。
相手認証名 認証password [IPアドレス範囲]
着信機能・コールバックなどをはじめとして、
接続相手側を自分が認証する様な設定になっている場合以外、
通常のPPPクライアント使用では何も記述する必要はないであろう。
● 3.4 PPP の起動
上記の設定で iij-ppp を起動してみる。
この使用方法では iij-ppp は tty を一つ占有するので、
tty を複数使用出来る環境
(仮想コンソールや Window System が使える環境)
から行なう。起動時の画面表示例としては図3cの様になる。
[図3c] ppp実行例
- ppp.confファイルに default: の定義部がない旨の警告
- Log levelの表示。ログに関しては次章参照
- ppp.secretファイルにpasswordエントリがない旨の警告
これは上述した様に「相手を自分が認証する」際のpassword設定がない
ので、「誰でも使える (=相手を認証しない) けどいいのか?」と
注意されているもの
- interface としてトンネルデバイス{\tt tun0}を使用する旨の表示
ppp.confで device に指定したデバイス名でなく、PPPがOS内から
使用するデバイス名の表示
- ダイヤルし、相手とのネゴシエーションが完了したことを示す
LCP (Link Control Protocol) によりリンクレベルでの情報を交換開始する
- 認証 (この設定ではPAP) が行なわれる。認証がOKと確認され
IPCPの接続に成功すれば、プロンプトが小文字の
「ppp ON MyHost>」から
大文字の「PPP ON MyHost>」に変わる
プロンプトが変われば、接続・認証成功で
Internetに継ったことになる
PPPのセッションが正しく接続出来ているかなどの確認には、
ping/traceroute などで行なえばよい。
また現在の接続設定は show ipcpコマンドで確認出来る (図3d)。
[図3d] show ipcp実行例
この例での150.12.xxx.aaaは、IPCPにより決定された相手側使用IPアドレス、
150.12.xxx.bbbは同様に決定された自分側使用IPアドレスである。
尚、PPP接続を終了する際には、まず closeコマンドでLCPを切断して
相手側との接続を終了し、quitコマンドで PPPプログラム自体を終了させる。
また、接続中に使用されていたルーティング設定は、
終了時に自動的に削除される。
© Haruhisa Hayashi 1997
気まぐれにより個々のファイル名を変えてしまう可能性もありますので、
Link/Bookmark される場合は、
%7Ehayashi/internet/ppp.html にお願いします。
目次へ・
第1章・
第2章・
第4章・
第5章
直接このファイルに飛んで来た場合…
フレーム版メニューへ
by
はやし はるひさ