このレッスンでやること
ネットワークは、パケットを次へ渡すルーターと、パケットを送ったり受け取ったりするホストでできています。ここでは h1 がホスト、r1 と r2 がルーター、h2 がもう1つのホストです。ルーターが知っているのは、直接つながっているネットワークだけです。1つ目のネットワークのラボを見て回り、通り抜けられないパケットを送って、その理由を調べます。直すところまではやりません。それはラボ自身の課題です。
はじめる前に
メモ
このレッスンの上のバーにある ラボを起動 を押します。このラボは、あなた専用の Ubuntu マシンまるごとで、その中に小さなネットワークが作られています。そのため、コンテナより立ち上がるまで少し時間がかかります。下の 実行 ボタンを押すと、コマンドがマシンのターミナルに順番に入力されます。マシンがまだ起動中と出たときは、数秒待ってからもう一度押してください。動きを見たり自分で入力したりするには、バーの ターミナルを開く(新しいタブ) を押します。
1. マシンを知る
ここにあるものは全部、あなたの Ubuntu マシン1台の中に作られています。ルーターもホストも、それぞれ別のネットワーク名前空間(network namespace:1台のマシンの中で、独立したネットワークを作る仕組み)で、それぞれ自分のアドレスを持っています。netlab status で一覧が出ます。r1 と r2 がルーター、h1、h2、mgmt がホストです。to- で始まる名前はネットワークケーブルで、数字はアドレスです。
netlab statusここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
2. となりのルーターと話す
sudo ip netns exec h1 は、続くコマンドを h1 自身のネットワークの中で実行します。これは、r2 へのケーブル上にある r1 のアドレスに ping を送ります。答えが返ります。h1 は自分のルーターに届き、ルーターは自分の2本のケーブルを知っているということです。
sudo ip netns exec h1 ping -c 2 -W 1 10.0.12.1ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
3. ネットワークを横切ってみる
今度は、遠くのホスト 10.0.3.2 を呼んでみます。ping は小さなパケットを送って、答えを待ちます。何も通り抜けません。h1 のとなりのルーターが理由を伝えます。Destination Net Unreachable(宛先ネットワークに届かない)、つまり「そのネットワークへの道を知りません」です。
sudo ip netns exec h1 ping -c 2 -W 1 10.0.3.2ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
4. ルーターが何を知っているか聞く
ルート(経路)は、ルーターの表の1行です。「このネットワークに行くには、こちらへ進む」という意味です。これは r1 の表を表示します。ケーブル1本につき1行で、全部で2行あります。h2 があるネットワーク 10.0.3.0/24 の行はありません。だからパケットは止まったのです。
sudo ip netns exec r1 ip routeここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
5. パケットがどこで止まるか見る
traceroute は、パケットが通るルーターを全部表示します。1行目は r1 で、その後ろの !N は「ネットワークに届かない」という意味です。パケットはそれより先へ進みませんでした。
sudo ip netns exec h1 traceroute -n -m 4 -w 1 10.0.3.2ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
6. ルーター自身のコンソールで聞く
ここのルーターは、無料のルーティングソフトウェア FRRouting を動かしています。vtysh はそのコンソールで、実際のネットワーク機器でも使われているものです。show ip route は同じ表を、凡例付きで表示します。C は connected(直接つながっている)という意味です。
sudo vtysh -N r1 -c "show ip route"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
ラボに取り組もう
ヒント
パケットがどこで、なぜ止まるのかが分かりました。動くようにするのは、このラボの課題です。ターミナルで cat README.md と入力して、ホームフォルダーの README.md を開いてください。何をするかが書かれていますが、答えは書かれていません。
先生へ
ヒント
このレッスンは、ラボで進めるレッスンの小さな例です。手順と実行ボタンがレッスンで、ラボは生徒一人ひとりのコピーです。このレッスンは VM のラボで進めます。生徒一人ひとりが自分の Ubuntu マシンを持ち、その中にネットワークがあります。実行ボタンはそのターミナルに入力し、出力を表示します。ラボ自体には、完成したネットワークを採点するチェックがあります。ご自分のモジュールにコピーして変更するか、レッスンビルダーの ラボ メニューから最初から作ってください。