クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

接続が途切れる場所を探す

このレッスンのあとで: 一段階ずつ試して、接続が途切れる場所を見つけられる。

55分のレッスンコマンド11件NAT ゲートウェイのラボ:nftables でマスカレードとポート転送をブラウザーで学ぶ

「インターネットが落ちた」

ネットワークの障害の切り分けは、機器から外へ向かって一段階ずつ試し、接続が途切れる場所を見つけることです。あいまいな訴えを、直せる一つの故障に変えます。

月曜の朝、課長がヘルプデスクに電話します。インターネットが落ちたそうです。十分後、止まっていたのはプリンターが一台だけだとわかります。

腕のよい技術者は、当てずっぽうをしません。機器から外へ向かって、一段階ずつ試し、最初に失敗した段階で止まります。

今日は、その順番を学び、一段階を自分で壊して、見つけます。

このレッスンのゴール

メモ

一段階ずつ試して、接続が途切れる場所を見つけられる。

重要な言葉

ことばいみ
症状利用者から見て、うまくいかないこと
デフォルトルート他の経路に当たらないとき、機器が通信を送る道
到達不能そのネットワークへの経路が無いこと
タイムアウト時間内に返事が戻らないこと
拒否機器が答えて、ノーと言ったこと
traceroute道のりにあるルーターを順に並べる道具

学生が入力するセルは、このプレビューでは空白です。

一段階ずつ試す

接続には、いくつものものが順に必要です。アドレス、ゲートウェイへの道、経路、道のり、名前、開いたポートです。途中の段階の故障は、その先のすべてを隠します。

だから、この順に試します。最初に失敗した段階が見る場所で、その先は、まだ試す価値がありません。

例: 六つの段階

段階問い命令
1 アドレスこの機器にアドレスはあるかip -br -4 addr
2 ゲートウェイ自分のゲートウェイに届くかゲートウェイへのping
3 経路目的地への道を知っているかip route get
4 道のりパケットはどこで止まるかtraceroute -n
5 名前名前はアドレスになるかdig、getent hosts
6 ポートポートで答えるものはあるかnc -zv、curl

学生が入力するセルは、このプレビューでは空白です。

段階1: LAN機器のアドレスを読む

コマンド
sudo ip netns exec lan ip -br -4 addr

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

段階2: ゲートウェイにpingする

コマンド
sudo ip netns exec lan ping -c 1 -W 1 10.0.0.1

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

段階3: 経路を聞く

コマンド
sudo ip netns exec lan ip route get 203.0.113.2

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

一段階を壊して、見つける

今度は、LAN機器のデフォルトルートを自分で消します。そのあと、段階を順に試して、どれが最初に失敗するか見ます。

この部分の最後の実行が、ルートを元に戻します。必ず最後まで行いましょう。

デフォルトルートを消す

コマンド
sudo ip netns exec lan ip route del default

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

段階2をもう一度: ゲートウェイは答える

コマンド
sudo ip netns exec lan ping -c 1 -W 1 10.0.0.1 | tail -n 2

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

段階3をもう一度: 外のサーバーを聞く

コマンド
sudo ip netns exec lan ip route get 203.0.113.2

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

ウェブのリクエストは今どう言うか

コマンド
sudo ip netns exec lan curl --noproxy '*' -sS -m 3 http://203.0.113.2:8000/; echo "curl exit code $?"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

デフォルトルートを戻す

コマンド
sudo ip netns exec lan ip route add default via 10.0.0.1

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

失敗の言葉は、それぞれ違うことを言う

到達不能はすぐに出て、経路が無いという意味です。拒否は速く出て、機器が答えてノーと言ったという意味です。

タイムアウトはゆっくり出て、沈黙という意味です。dropか、道を見つけられない返事です。次の三つの実行が、あとの二つを示します。

拒否: 機器は答えた

コマンド
sudo ip netns exec gw nc -zv -w 2 10.0.0.2 9999; echo "nc exit code $?"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

タイムアウト: LANに誰も答えない

コマンド
sudo ip netns exec lan curl --noproxy '*' -sS -m 3 http://203.0.113.2:8000/; echo "curl exit code $?"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

段階4: パケットが止まる場所を見る

コマンド
sudo ip netns exec lan traceroute -n -q 1 -w 1 -m 3 203.0.113.2

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

よくある間違い

注意

「pingが通れば、接続は問題ない」と考える人が多いのですが、pingが証明するのは一段階だけです。ウェブのリクエストには、戻りの経路、名前、開いたポートも必要です。ここでは、ゲートウェイはpingに答えますが、ウェブのリクエストはタイムアウトします。

例: 症状から次に見る場所へ

見えるもの意味次に見る場所
Network is unreachable、すぐそのネットワークへの経路が無いルーティング表とデフォルトルート
Could not resolve host名前がアドレスにならなかったhostsファイルとDNSサーバー
Connection refused、速い機器は動いていて、待つものが無いプログラム、そのポート、rejectのルール
Timed out、ゆっくり返事がまったく戻らないdropのルール、または戻りの道

学生が入力するセルは、このプレビューでは空白です。

発展: 自分の順番

このレッスンの六つの段階を、自分の言葉で書き、それぞれに命令を一つずつ付けましょう。

次に、仕事や家で出会った故障を一つ選び、どの段階が最初にそれを見つけたかを言いましょう。そのページは取っておきます。自分用のチェックリストの始まりです。

このラボとソースについて: NAT ゲートウェイのラボ:nftables でマスカレードとポート転送をブラウザーで学ぶ

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。