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

無料レッスン

パケットの通り道を決める(静的ルーティング)

このレッスンのあとで: ルーティングテーブルを読んで、パケットが通る経路を選ぶことができる。

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

荷物の仕分けは全体を考えない

物流センターの仕分け機は、荷札の郵便番号を読んで、荷物を一本のベルトに流します。目的地までの道のり全部は考えません。

ルーターもパケットに対して同じことをします。宛先のアドレスを読み、表から一行を選び、次へ渡します。

途中のルーターも、それぞれ同じ仕事を繰り返します。

このレッスンのゴール

メモ

ルーティングテーブルを読んで、パケットが通る経路を選ぶことができる。

重要な言葉

ことばいみれい
ルーティングテーブルルーターが持つ、行き先ごとの送り方の一覧
次のホップパケットを次に受け取る、隣のルーターvia 10.0.1.1
直接つながった経路ルーターが直接つながっているネットワーク
静的経路人が手で書いた経路
デフォルト経路他にどの行も合わないときに使う行0.0.0.0/0
最長一致合う行のうち、ネットワークのビットが一番多い行を選ぶ決まり

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

機器は直接かゲートウェイへ

機器は、まず一つ確かめます。宛先は自分と同じネットワークにあるか、です。

同じなら、直接送ります。違うなら、同じネットワークにいるルーターであるデフォルトゲートウェイへ送ります。

機器は、その先の道のりまでは考えません。

h1の経路を読む

コマンド
sudo ip netns exec h1 ip route

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

h1の送り先を聞く

コマンド
sudo ip netns exec h1 ip route get 10.0.3.2

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

答えを読む

最初の実行は2行を出します。一つは h1 がいるネットワーク、もう一つは default via 10.0.1.1 で始まる行です。それ以外はすべて r1 へ送ります。

次の実行は 10.0.3.2 via 10.0.1.1 dev to-r1 で始まります。via の後ろが次のホップです。

ルーターは表に従う

ルーターには、いくつものインターフェース(口)と、ルーティングテーブルがあります。表の一行は「このネットワークなら、こちらへ」と言います。

設定する前のルーターが持つのは、直接つながった経路だけです。他のネットワークは、人が静的経路を足すか、プロトコルが経路を教えて、はじめて知ります。

行が無いネットワークには、パケットを転送できません。

例: ルーターの最初の表

ネットワーク次のホップ種類
10.0.1.0/24直接、to-h1直接つながった経路
10.0.12.0/24直接、to-r2直接つながった経路
10.0.3.0/24なし行が無いので行けない

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

r1の表をコンソールで読む

コマンド
sudo vtysh -N r1 -c "show ip route"

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

r1に知らない先を聞く

コマンド
sudo ip netns exec r1 ip route get 10.0.3.2

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

h1から本物のパケットを送る

コマンド
sudo ip netns exec h1 ping -c 2 -W 1 10.0.3.2

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

行が無ければ行けない

コンソールは r1 の4行を出します。2行は直接つながった経路の C、2行はルーター自身のアドレスの L で始まります。

ip route get の実行は RTNETLINK answers: Network is unreachable を出します。表に 10.0.3.2 の行が無いので、r1 には送り先がありません。

pingは、同じ穴を機器の側から見せます。返事はどれも From 10.0.1.1 で始まり、Destination Net Unreachable で終わります。

一番長く合う行が勝つ

一つのアドレスに、いくつもの行が合うことがあります。ルーターは、ネットワークを一番細かく指す行、つまり最長一致の行を選びます。

デフォルト経路 0.0.0.0/0 はプレフィックスが0ビットで、何にでも合います。だから他に合う行があれば負け、最後の手段になります。

よくある間違い

注意

「最初に合った行が勝つ」と思う人が多いです。ルーターは上から読みません。全部の行を見て、一番長く合う行を選びます。表の行の順番を変えても、答えは変わりません。

例: どの行が勝つか

宛先合う行勝つ行
10.0.3.2000.0.0.0/0, 10.0.0.0/8, 10.0.3.0/24, 10.0.3.128/2510.0.3.128/25
10.0.3.50.0.0.0/0, 10.0.0.0/8, 10.0.3.0/2410.0.3.0/24
10.9.9.90.0.0.0/0, 10.0.0.0/810.0.0.0/8
8.8.8.80.0.0.0/00.0.0.0/0

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

発展: なぜその行が勝ったか

pick_route を写して、新しい関数 explain_route を作りましょう。次のホップだけでなく、勝った行全体を返します。

テストの TABLE で、10.0.3.129、10.0.3.127、10.200.0.1、1.1.1.1 を調べます。それぞれについて、合った行をすべて挙げ、勝った行がなぜ他に勝ったかを一文で書きましょう。

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

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