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

無料レッスン

ルーターをまたいでパケットを追う

このレッスンのあとで: ルーターをまたいでパケットがたどる道を追える。

50分のレッスンコマンド5件スタティックルーティングのラボ:小さなネットワークの経路をブラウザーで作る

宛名だけの宅配便

通販で頼んだ荷物は、倉庫から宛名だけを貼って出発します。最初から最後まで道を知っている運転手はいません。

それぞれの営業所が知っているのは、「次にどのトラックに載せるか」だけです。それを繰り返すうちに、荷物は家に届きます。

インターネットのパケットも同じです。ルーターが決めるのは、次の一歩だけです。

このレッスンのゴール

メモ

ルーターをまたいでパケットがたどる道を追える。

重要な言葉

ことばいみれい
ルーターネットワークとネットワークの間でパケットを渡す機器
経路表(ルーティングテーブル)ネットワークごとに、どこへ送るかを書いた表
ネクストホップパケットを次に渡す相手のルーター
デフォルトルートほかのどの行にも合わないときに使う行default via 10.0.1.1
直接接続ルーターが自分のケーブルでつながっているネットワーク
ホップ一台から次の一台へ進む一歩

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

経路表はネットワークの一覧

アドレスを持つ機器は、どれも経路表を持っています。一行ごとにネットワークが一つ書かれ、そこ宛てのパケットをどこへ送るかが決まっています。

ホストの表は短く、自分のネットワークと デフォルトルート だけです。デフォルトルートは「それ以外は全部ルーターへ」という意味です。

ルーターの表はもっと長く、ケーブルでつながったネットワークをすべて知っています。

h1の経路表を読む

コマンド
sudo ip netns exec h1 ip route

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

r1の経路表を読む

コマンド
sudo ip netns exec r1 ip route

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

二つの表が言っていること

h1 の表は二行です。default via 10.0.1.1 は、すべてを r1 に送るという行です。10.0.1.0/24 dev to-r1 は h1 自身のネットワークです。

r1 の表も二行で、10.0.1.0/24 と 10.0.12.0/24 です。どちらも直接接続です。r1 には、h2 のネットワーク 10.0.3.0/24 の行も、デフォルトルートもありません。

いちばん細かい行が勝つ

一つのパケットが、二つ以上の行に合うことがあります。たとえばデフォルトルートは、どんな宛先にも合います。

ルーターは、スラッシュの後ろの数がいちばん大きい行を選びます。それがいちばん細かく絞り込んだ行だからです。これを最長一致と言います。

どの行にも合わず、デフォルトルートも無ければ、ルーターはパケットを捨てます。そして「そのネットワークには届かない」と送り主に伝えます。

例:会社のルーターの選び方

宛先合う行選ばれる行ネクストホップ
172.20.5.9172.20.0.0/16、172.20.5.0/24、default172.20.5.0/24172.20.0.2
172.20.8.9172.20.0.0/16、default172.20.0.0/16172.20.0.1
8.8.8.8defaultdefault192.0.2.1

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

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

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

パケットが止まった場所

ping は From 10.0.1.1 ... Destination Net Unreachable を二回出します。このメッセージを送ったのは h2 ではなく r1 です。

traceroute に出るホップは 10.0.1.1 の一つだけで、!N という印が付きます。「ネットワークに届かない」という意味です。

r1 は RTNETLINK answers: Network is unreachable と答えます。表に 10.0.3.0/24 の行が無いからです。これを直すのがラボです。

よくある間違い

注意

ルーターは相手までの道を全部知っている、と思いがちです。知っているのは次の一歩だけです。途中のルーターがみな遠くのネットワークの行を持ち、さらに相手の側にも返事のための帰り道が要ります。

さらに挑戦:返事の帰り道

ラボが動いたら、もう一度 sudo ip netns exec r2 ip route を実行しましょう。

r2 が h1 へ返事を送れるのは、どの行のおかげですか。その行を課題の形に書き直して表に足し、自分の next_hop で確かめましょう。

このラボとソースについて: スタティックルーティングのラボ:小さなネットワークの経路をブラウザーで作る

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