事務所のパソコンがネットにつながらない
ネットワークの切り分けとは、つながらない原因を、近い所から順に確かめて絞ることです。順番を決めておくと、どこで止まったかがすぐ分かります。
朝、制作のパソコンがネットにつながらないと言われたとします。pingと経路表を使って、原因を見つける手順を身につけましょう。
このレッスンのゴール
メモ
出力を読んで、つながらない原因を一つに絞れる。
重要な言葉
| ことば | いみ |
|---|---|
| 切り分け | 原因がある場所を、少しずつ絞ること |
| ping | 相手に届くかを調べる小さな問いかけ |
| 経路表 | どこへどう送るかを書いたルーターの表 |
| タイムアウト | 待っても返事が来ないこと |
| 名前解決 | DNSで名前をアドレスに変えること |
| ホップ | パケットが通るルーターの一つ |
学生が入力するセルは、このプレビューでは空白です。
近い所から順に確かめる
遠くの相手から調べると、どこが悪いのか分かりません。まず自分、次に出口、その次に外、最後に名前の順に調べます。
一つ前の段階が通ったら、次へ進みます。止まった段階が、原因のある場所です。
例:調べる四つの段階
| 段階 | 調べること | 使う道具 |
|---|---|---|
| 1 | 自分のアドレスと出口 | ip route get |
| 2 | 出口のルーターに届くか | ping(出口のアドレス) |
| 3 | 外のアドレスに届くか | ping、traceroute |
| 4 | 名前がアドレスになるか | ping(名前)、dig |
学生が入力するセルは、このプレビューでは空白です。
h1が出口をどう選ぶか
sudo ip netns exec h1 ip route get 10.0.1.1ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
出口のルーターにping
sudo ip netns exec h1 ping -c 2 -W 1 10.0.1.1ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
段階2までは通っている
一つ目は 10.0.1.1 dev to-r1 で始まり、via がありません。出口のルーター r1 は、h1 と同じネットワークにいます。
二つ目は、二回とも返事が来て、0% packet loss と出ます。h1 から出口までは、問題がありません。
ping の失敗の文面で原因が絞れる
pingは、失敗の理由によって違う文を出します。文面を読むと、原因が近い場所か遠い場所かが分かります。
Destination Host Unreachable は、同じネットワークの相手が見つからないという意味です。Destination Net Unreachable は、途中のルーターに道が無いという意味です。
例:出力と考えられる原因
| 出力 | 意味 | 次に調べる所 |
|---|---|---|
| Destination Host Unreachable | 同じネットワークの相手が見つからない | 相手の電源とケーブル |
| Destination Net Unreachable | 送り先のルーターに道が無い | そのルーターの経路表 |
| 100% packet loss だけ | 返事が来ない | 途中のルールや帰り道 |
| Name or service not known | 名前がアドレスにならない | DNSの設定 |
学生が入力するセルは、このプレビューでは空白です。
h1からh2へping
sudo ip netns exec h1 ping -c 2 -W 1 10.0.3.2ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
通るルーターをたどる
sudo ip netns exec h1 traceroute -n -m 4 -w 1 10.0.3.2ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
r1にどこへ送るか聞く
sudo ip netns exec r1 ip route get 10.0.3.2ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
パケットはr1で止まった
ping は From 10.0.1.1 ... Destination Net Unreachable を二回出します。送ったのは h2 ではなく、出口の r1 です。
traceroute には 10.0.1.1 の一つだけが !N つきで出ます。r1 は Network is unreachable と答えます。r1 の経路表に、10.0.3.0/24 の行が無いのが原因です。
名前だけが通らないときは名前解決
アドレスを打つと通るのに、名前を打つと通らないことがあります。これは、DNSの設定か、DNSサーバーに届いていないことが原因です。
Name or service not known や Temporary failure in name resolution が出たら、道は無事で、名前の問題だと考えられます。
例:アドレスと名前の組み合わせ
| アドレスで試すと | 名前で試すと | 原因の見当 |
|---|---|---|
| 通る | 通る | 問題なし |
| 通る | 通らない | DNSの設定 |
| 通らない | 通らない | 経路かルール |
学生が入力するセルは、このプレビューでは空白です。
よくある間違い
注意
pingが通らないのは、相手が壊れているからだと思いがちです。途中で止まっていることも、相手がpingを断る設定のこともあります。一つの結果で決めず、近い所から順に確かめます。
さらに挑戦:帰り道が無いとき
ラボが動いたら、sudo ip netns exec r2 ip route を実行しましょう。r2 が h1 へ返事を送れるのは、どの行のおかげでしょうか。
行が無いと、行きの ping は届いても返事が戻らず、100% packet loss だけが出ます。自分の diagnose で、その出力の答えを確かめましょう。