FreeBSD による PPP 接続方法
本稿では、FreeBSD と PPP に関する簡単な基礎知識と、
FreeBSD による姫路工大アクセスサーバへの
PPP 接続に関する設定方法等について紹介する。
【4. FreeBSD での PPP 〜設定応用編〜】
前章の基本設定だけで、姫路工大アクセスサーバへのPPP接続は
``取り敢えず''出来るが、
本章では応用的な使用方法と設定方法を簡単に紹介する。
- → 4.1 ログインスクリプト
- → 4.2 動的発呼
- → 4.3 パケットのフィルタリング
- → 4.4 ログファイル
- → 4.5 iij-pppのその他の設定・利用方法
- → 4.6 reachable環境での設定・利用方法
- → 4.7 PPP 接続へのまとめ
● 4.1 ログインスクリプト
他のPPPサーバでは、電話回線接続後にlogin手順が
必要とされる場合がある。この際、
などと、set login によりログインの手順を指定するスクリプトを
設定し、自動loginすることが出来る。
書式は基本的に、「受信すべき文字列」と
それを受信した際に返答する「送信文字列」を空白で区切り、交互に記述する。
前述のダイヤルスクリプト同様、
``\r'' (Ctl-Rを表現) 等の特殊シーケンスが使用出来る。
● 4.2 動的発呼
起動時に -auto を指定することにより、
「パケットの流れに応じ、必要になれば自動的にダイヤルして接続する」
という ``自動動的発呼モード'' で起動することも可能である。
但し、ダイヤリング動作のトリガパケットを指定しておく (4.3参照)・
set ifaddr による接続先のアドレスの指定…などの
準備・設定が必要である。
詳しい設定方法については、
iij-pppのドキュメントを参照して欲しい [3]。
● 4.3 パケットのフィルタリング
PPPで継っている間、外界とIP reachableになっている訳であるから、
逆に外のマシンからtelnetやftp等される可能性もあり、
セキュリティ面で不安
である。
これに対し、iij-pppではパケットのフィルタリングが指定出来、
通過パケットを制限することが可能である。
- filter名
受信 = ifilter / 送信 = ofilter / ダイヤリング動作のトリガ (動的発呼指定時のみ) = dfilter
- 規則no.
0〜9で指定。番号順に検索し、見つかった時点でその規則に指定されている
action に従って処理される。但し、規則no.0が定義されていないと、
全ての規則は無効 (全パケットの通過を許可)。
-1で対応するフィルタの定義を全てクリア
- action
そのパケットの通過を許可 = permit / 禁止=deny。
clear で対応する番号の規則定義をクリア
- src_addr
パケットのソースアドレスを指定
- dst_addr
パケットのデスティネーションアドレスを指定
- proto
パケットのプロトコル種別を指定 = icmp / udp / tcp
- icmp src eq icmp-type
指定タイプの ICMP パケットに対し適用
- udp src op port dst op value
指定したポート番号の UDP パケットに対し適用
- tcp src op port dst op value [estab]
指定したポート番号の TCP パケットに適用
estabを指定すると、既に接続が確立されている場合にだけ適用
オペランド op には eq / lt / gt の
どれかを指定出来る。
具体的な設定の例はリスト4-1に示す。
[リスト4-1] フィルタの設定例
これは、
- ICMPパケットをトリガとしての動的発呼禁止 (4.2参照)
- パケット通過に関する許可・禁止の設定
- authパケット (port番号 113)を許可する
- 外への telnetアクセス (port番号 23) を許可する
- 外への ftpアクセス (port番号 20,21) を許可する
- DNS (Domain Name System) パケット (port番号 53) の通過を許可する
- 学内ネットワークとの通信を許可する
- ping (ICMPパケットを使用)/ tracerouteパケット (port番号 33434) の通過を許可する
- その他の全てのパケットの通過は禁止する
という設定である。
telnet/ftpアクセスに関する estab 指定は、
自分側からの接続要求に関しては受信される様にするものである。
なおこれらのフィルタの設定状態は、
PPPプロンプト (PPP ON MyHost>)から、
show filter名 で確認出来る。
● 4.4 ログファイル
ログは設定する際の指針になるものである。
通常の設定では、iij-ppp のログは /var/log/ppp.log に出力される。
このログの記録レベルは、 set debug コマンドで指定出来る
(表4-1参照。同時に複数指定も可能)。
[表4-1] ログレベル
指定 |
ログレベル |
指定 |
ログレベル |
phase |
フェーズの遷移状態 |
tcp/ip |
IPパケットの状態 |
chat |
モデムとのチャット状態 |
hdlc |
HDLCレベルのパケット全内容 |
lcp |
LCP/IPCP/CHAP の動作状態 |
lqm |
LQMの状態 |
async |
モデムとの間のパケット全内容 |
|
|
図4aは phase レベル指定時のログ出力の例である。
[図4a] ログ出力の例 (phaseレベル)
このログには、
- interface tun0を使用してPPP開始し、ネゴシエーション完了
(3.3の手順5に相当)
- 認証のフェーズで、相手側は c023 (=PAP)、
自分側は 0 (=全ての提案を無条件受理)を提案
- PAP の authname/authkey を送信…これらがACK (ACKnowledge, 肯定応答)された
- ネットワークのフェーズへ移行。
IPCP により IP アドレスを決定 (自分側=150.12.xxx.bbbに)
- OsLinkupが表示された時点で、PPP接続手順が完了
(プロンプトが大文字(3.3の手順6)に)
ということが示されている。
これらのログ出力により、
うまく接続出来ない場合の問題解決に役立つであろう。
例えば 図4bであるが、
この例では authkey を ``FailPassword'' と誤って設定していたために、
PAP 認証時に NAK (Negative AcKnowledge) が返され、
認証失敗として PPP が強制終了している。
[図4b] ログ出力の例 (接続失敗例。phaseレベル)
なお、authname / authkey の設定は、show auth で表示される。
尚、正常にPPP接続手順が終了していても、telnetなどがうまく出来ない場合には、
ルーティング、ネットマスクやフィルタリングの設定に問題がある可能性が高い。
ping/tracerouteだけでなく、netstat/ifconfigなどの
ネットワークインターフェース
の状態をチェックするコマンドで調べてみるとよい。
● 4.5 iij-pppのその他の設定・利用方法
- set openmode
iij-pppでは、相手側がPPPでの接続を開始するまで、
こちら側からは何の接続動作も行なわないようになっている。
これによって、接続後のLCP発信は相手側から行なわれるのを待つ (受動的)。
しかし接続先によっては、相手側もLCP発信を待つ設定になっていることがあり、
この場合は、お互いに相手がLCP発信を行なうのを待ち続けるために、
いつまでたっても接続が行なわれないことになってしまう。
そこで set openmode コマンドにより、こちら側のLCP発信方法を
指定することが可能である。
能動的 (active) と
受動的 (passive) のどちらかを指定出来る (デフォルトは passive)。
なお現在の設定状態は、PPPプロンプトから show lcp で確認出来る。
- set speed
モデムとのDTE通信速度を設定する。
sync を指定すると同期モードで動作する。
同期モードには、ISDN TAなどの同期通信を行なう同期式のデバイスが必要である
- termコマンド
非同期モード下のコマンドモードからのみ使用可能。
PPPプロンプトからtermコマンドを用いると、コマンドモードから
端末モードに変わる。このモードではモデムと直接通信が出来るので、
ダイヤリングや相手システムへのログイン手順などが手動で行なえる。
但し使用にあたっては、
set parity op でパリティ
を指定しておく必要がある。
オペランド op には none / even / odd の
いずれかを指定出来る。
端末モードでは、表4-2 に示す特殊シーケンスが利用出来る。
[表4-2] 端末モードでの特殊シーケンス
入力 |
動作 |
~p |
パケットモードでの通信動作開始。
同時に端末モードを終了し、コマンドモードに戻る |
~. |
端末モードを終了し、コマンドモードに戻る |
~? |
特殊シーケンスの一覧を表示 |
● 4.6 reachable環境での設定・利用方法
PPP 接続で IP reachable になることにより、telnet/ftp や WWW の利用以外にも
種々の設定・利用が可能である。
- DNSサーバの参照
DNS/BIND の仕組みやサーバ構築方法等については
専門書に譲るとして、簡単に説明すると、
DNSは「人間にとって便利なホスト名」
(hogehoge.himeji-tech.ac.jp などという表記) と
「コンピュータが取り扱うことの出来るIPアドレス」
(150.12.ccc.ddd などという番号での表記) との間の対応付けを
行ない、ホストに関する様々な情報の公開・問い合わせのための標準的手段と
なっているものである。
telnet・ftp・電子メール・Netscapeなど、
ほとんど全ての Internet 上のソフトウェアで利用されている。
ここでは DNS サーバを参照する方法を説明する。
出来るだけ近くの
DNS サーバのIPアドレスを
/etc/resolv.conf ファイルに以下の書式で指定する。
更に FreeBSD では、参照時の問い合わせ順を /etc/host.conf で設定出来る。
- hosts……/etc/hostsファイルを参照する
- bind ……DNSを参照する
- nis………NIS (Network Information Service) を参照する
の3つが指定出来る。
/etc/hosts は IP アドレスとホスト名の対応を記述するローカルなファイルで、
の書式で登録する (参照: hosts(5))。
通常は/etc/host.confに、bind だけを指定するか、
もしくは hosts, bindの順
に設定 (例:リスト4-2)
しておき、個人的に別名をつけておきたいホストを
/etc/hosts で定義登録しておく…等という使い方をする。
[リスト4-2] /etc/host.conf の設定例
これで、上述したtelnet・ftp…などからDNSを参照
することが可能となる (参考: nslookup(8))。
- 電子メールの利用
日頃使用しているマシンへtelnetして、メールを読み書きするという
のが基本的な使用方法ではあるが、折角IP reachableであるので、
自分のマシン上でメールの作成・送信/受信を行なう方法を紹介する。
DNSサーバへの正式登録が行なわれていれば、
自分のマシン自身のsendmailを利用してメールを送受信することも
不可能ではないが、sendmail自体の設定が複雑
になる上、管理面でも大変である。
そこで通常では、
メールサーバとの間にPOP (Post Office Protocol, 参照: RFC918,937。
POP Version3についてはRFC1081,1725) を利用してメールの送受信が行なわれる。
POPは元々、sendmailなどのMTA (Mail (又は Message) Transfer Agent)を
インストールする
余裕のないマシン上でメールを読むために考案されたもので、
Macintosh の Eudora や Windows上 の Winbiff などもこれを利用している。
簡単に説明すると、自分のマシン上の
メール読み書きプログラム (MUA=Mail (又は Message) User Agent)が、
メールサーバとポート 109/udp を使用
してメールファイルのやりとりを
行なうものである。
利用には、メールサーバとなるマシンでPOPデーモンが動いていることと、
自分のマシンにPOP対応のMUA (例: POP対応として作成したMH
など)をインストールしてあることが必要である。
またPOPにも、ユーザ認証方法の違い等によりAPOP/DPOP/KPOP/MPOP/RPOPなど
いくつか種類があるので、詳細についてはシステムの管理者に問い合わせて貰いたい。
- NTPサーバの参照
直接的に必要な設定ではないが、参考までに紹介する。
ファイルのタイムスタンプ、ログイン/ログアウトの記録等々、
UNIXシステムに限らずコンピューター上では
様々な場面に時刻情報を必要とする。
しかしマシンの内蔵時計の精度がそれほど高くないため、
これを基にする時刻情報ではマシン個々によりバラつきが生じる。
またネットワーク上では、メールのやりとり、分散型ファイルの管理などの際に、
全てのマシンの時刻が正確に同期しているほうが望ましい。
ネットワーク上でのコンピュータの時刻合わせには
rdateコマンドやtimedによる同期システムがあるが、
大規模な時刻同期のシステムとしては通常、
NTP (network time protocol, 参照: RFC1128,1129) が使用される。
詳しい解説や設定方法は解説書
に譲るとして簡単に説明すると、
時刻同期のための情報を提供するサーバと
その情報に基づいて時刻を同期するクライアントが、
協定世界時UTC (Universal Time Coordinated)
に同期したサーバを根本として
階層的木構造で構成されるシステムである。
通常の構成では、組織内にNTPサーバ
が用意され、
これをクライアントとなる各マシンが情報を取得しに行く様にするか、
もしくはサーバ側から発せられるNTP broadcastパケットに基づいて時刻を同期する。
これにより、マイクロ秒オーダーの誤差で時刻を合わせることが出来る。
しかし通常のPPPクライアント接続では、
NTP broadcastパケットを安定して充分拾うほど長時間接続している
可能性も低いので、ここではNTPクライアントの設定ではなく、
rdateコマンド同様に
単にNTPサーバを直接参照する方法を示す (図4c)。
150.12.xxx.xxxは参照するNTPサーバ
である。
[図4c] ntpdate の実行例
このntpdateコマンド (参照: ntpdate(8)) は、
NTPを利用したrdateコマンドのようなものである。
これをPPP接続時に実行することで、
自分側の時刻を正しく合わせることが可能である。
● 4.7 PPP 接続へのまとめ
今回紹介したこれらの設定は、姫路工大アクセスサーバへPPP接続
する場合のものを中心として説明した。
組織外からのIP利用に際しては、ファイアウォールが
設置してあれば、設定なども異なったものになるが、
PPP接続の設定方法は他のプロバイダ等の場合でも基本的には類似であるので、
ログ出力等も参照にして色々と設定に挑戦して貰いたい。
© Haruhisa Hayashi 1997
気まぐれにより個々のファイル名を変えてしまう可能性もありますので、
Link/Bookmark される場合は、
%7Ehayashi/internet/ppp.html にお願いします。
目次へ・
第1章・
第2章・
第3章・
第5章
直接このファイルに飛んで来た場合…
フレーム版メニューへ
by
はやし はるひさ