この節では、ご使用の PPP 設定の動作を確認するために行う必要があると思われるいくつかの共通の確認事項について説明します。
これらの確認を行うためにはスーパーユーザーになる必要があります。
すべてのモデムケーブルと電源ケーブルがしっかりと接続されていることを確認します。PPP に問題が生じたときは、常に、モデム、ケーブル、シリアルカード、および電話回線を最初に検査してください。
PPP を起動したあとは、PPP インタフェース名だけを引数として指定した ifconfig を使用して、回線の現在の状態が監視できます。例 23-4 に示すのは、実行中の PPP リンクについての ifconfig のサンプル出力です。
特権 (root) ユーザーが ifconfig コマンドを発行した場合は、上記のようにマシンのアドレスが出力に表示されます。
nomadb# ifconfig ipdptp0 ipdptp0: flags=28d1<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST,UNNUMBERED> mtu 1500 inet 129.144.111.26 --> 129.144.116.157 netmask ffff0000 ether 0:0:0:0:0:0 |
標準と動的のどちらのポイントツーポイントリンクの場合も、例 23-5 に示すような出力が得られます。
nubian# ifconfig ipd0 ipd0: flags=c1<UP,RUNNING,NOARP> mtu 1500 inet 129.144.201.191 netmask ffffff00 ether 0:0:0:0:0:0 |
ifconfig に UP と RUNNING が表示されない場合は、PPP が正しく構成されていないことを示します。ifconfig の詳細は、「ifconfig コマンド」と、ifconfig(1M) のマニュアルページを参照してください。
ping コマンドを使用して、接続が up 状態であるか、または確立可能であるかを検査します。たとえば、次のような単純な往復テストを考えてみてください。
スーパーユーザーになります。
次のように入力します。
# ping elvis |
elvis はリモートホスト上の PPP インタフェースの名前です。結果の表示が次のとおりであったとします。
elvis is alive |
この場合は、elvis との間でパケットを送受信できます。この結果が得られなかったとすれば、ローカルホストとリモートホストの間のどこかに、ルーティングに関する問題があります。ping についての詳細は、「ping コマンド」と、ping(1M) のマニュアルページを参照してください。
パケットが正しく送受信されているかどうかを検査するには、netstat コマンドを使用します。
「netstat コマンド」と netstat(1M) のマニュアルページを参照してください。
ローカルルーティングテーブルを表示するには、netstat コマンドを使用します。
次に出力例を示します。
Routing tables Destination Gateway Flags Ref Use Interface ------------- ------------ ----- ------ ------- ---------- sahara deserted UGH 0 0 ie1 karakum labia UGH 0 0 ie1 frodo bilbo UGH 1 12897 ipdptp0 route7 route7 UGH 0 0 ie0 eastgate route71 UGH 0 158 ie0 backbone pitstopbb U 1 16087 ie1 dresdenpc route1 UG 0 0 ie1 loopback localhost U 2 113436 lo0 swan-bb pitstop U 406 146044 ie0 dallas2 route7 UG 0 0 ie0 trainingpc route62 UG 0 0 ie1 |
到達可能なネットワークごとに、ルーティングテーブルエントリが存在することを確認します。特に、Interface の欄に示される PPP デバイスが、Gateway の欄に示される適切なホスト名と適合している必要があります。同様に、Gateway エントリは、Destination の欄の正しいエントリと適合している必要があります。
この条件が満たされていない場合は、静的ルーティングを使用しているのであれば、適正な静的ルートを追加します。
in.routed によって動的ルーティングを使用しているときは、次の手順を行います。
スーパーユーザーになります。
次のように入力して、in.routed が実行中であることを確認します。
# ps -e | grep route |
それでもまだルーティングテーブルが正しくない場合は、スーパーユーザーになって次の手順に進みます。
ps -e から入手したプロセス ID を kill の引数として指定して、in.routed を終了します。たとえば、1384 がプロセス ID であるとすれば、次のように入力します。
# kill 1384 |
# /usr/sbin/route -f |
# /usr/sbin/in.routed |
rsh を使用しようとして、Permission denied というメッセージが出力された場合は、リモートシステムの /etc/hosts.equiv ファイルまたは /.rhosts ファイルに、送信側システムのホスト名が含まれていないか、行 + が含まれていません。
次にパケットフローを検査します。snoop コマンドを使用して、ネットワークからパケットや、各パケットの内容を観察します。例 23-6 に、snoop からの出力例を示します。
# snoop -d ipdptp0 Using device ipdptp0 (promiscuous mode) corey -> pacifica7 RLOGIN C port=1019 hugo -> ponc3 RPC R XID=22456455 Success ponc3 -> hugo NFS C WRITE FH=1B29 at 32768 commlab3 -> commlab4 TELNET R port=34148 commlab4 -> commlab3 IP D=129.144.88.3 S=129.144.88.4 LEN=46, ID=41925 commlab3 -> commlab4 TELNET R port=34148 commlab4 -> commlab3 ICMP Echo request commlab3 -> commlab4 ICMP Echo reply commlab4 -> commlab3 FTP C port=34149 commlab4 -> commlab3 FTP C port=34149 commlab3 -> commlab4 FTP R port=34149 commlab4 -> commlab3 FTP C port=34149 |
出力の最初の行の Using device ipdptp0 に含まれている ipdptp0 というデバイス名は、ポイントツーポイント接続を示しています。
snoop を使用して回線の状態を検査するには、リンクが up 状態にあり、トラフィックがある程度生成されている必要があります。
snoop は、ネットワークからパケットを取り込んで、その内容を表示します。snoop は、パケットフィルタモジュールとストリームバッファーモジュールの両方を使用して、ネットワークから効率的にパケットを取り込みます。取り込んだパケットは、受け取ると同時に表示することも、あとで見るためにファイルに保存しておくこともできます。
snoop は、単一行要約形式と複数行詳細形式のどちらでも、パケットを表示できます。要約形式の場合は、最高レベルのプロトコルに関するデータだけが表示されます。たとえば、NFS パケットについては NFS に関する情報だけが表示されます。その下位にある RPC、UDP、IP、Ethernet フレームの情報は抑止されますが、詳細形式オプションのどれかを選択した場合は表示されます。