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

最初のネットワークラボです。生徒の Ubuntu VM 1台の中に4台のマシンを作ります。h1 と h2 はホスト、r1 と r2 は FRRouting を動かすルーターです。ルーターは自分がつながっているネットワークしか知らないので、h1 から h2 への ping は失敗し、生徒はその理由を調べてスタティックルートで直さなければなりません。

Cisco のライセンスも、インストールするものもありません。ルーターはどれも、専用の FRRouting を持つネットワーク名前空間で、コンソールは vtysh です。実機で生徒が出会うのと同じものです。

生徒が学ぶこと

パケットがルーターをどう越えていくか。ホストで traceroute -n と ip route、ルーターで show ip route を使ってパケットが止まる場所を見つけ、必要なルーターにだけ、必要なスタティックルートを追加し、ping と traceroute で経路を確認します。r2 の先の管理用ネットワークには h1 から届かないままでなければならないので、ラボが求めるルートだけを追加し、それより広い設定はしません。write memory ですべてのルーターを保存します。

トポロジー

h1 は r1 に、r1 は r2 に、r2 は h2 につながり、r2 の先の4つ目のリンクに管理用ネットワークがあります。アドレスは、ラボがホームフォルダーに置く README にあります。README にはやることが書かれていて、答えは書かれていません。

ブラウザーで動かす

VM ラボはモジュールにラボ課題として追加し、サンプルはラボのページにあります。

  1. ラボを追加する. 自分が教えるモジュールで課題を追加し、「Ubuntu VM ラボ」のカードを選びます。ページにはcompose ファイルの代わりにマシンの短い記述が表示されます。
  2. サンプルから始める. ページには、そこから始められるネットワークラボが3つ用意されています。Networking lab 1: static routingを選びます。サンプルを使うとテキストが置き換わりますが、「元に戻す」で自分のテキストに戻せます。
  3. 公開して自分のコピーを起動する. 「公開」してから「起動」を押します。VM の初回起動時に、ラボ自身の setup スクリプトが Ubuntu のアーカイブから FRRouting をインストールしてトポロジーを作ります。所要時間は約10秒です。
  4. ターミナルを開く. ターミナルを開き、ホームフォルダーの README.md を読みます。やることが書かれていて、答えは書かれていません。netlab status でマシンの一覧、netlab shell r1 でルーターのコンソールを開けます。

このラボの基本レッスン

Static Routing Basics は、このラボで進める小さなレッスンです。このラボは Ubuntu VM で、各手順に説明と、マシンのターミナルにコマンドを入力してルーターの応答を表示する「実行」ボタンが付いています。生徒はマシンを確認し、隣のルーターに ping を打ち、ネットワークを越えようとして失敗し、ルーターのテーブルを読んで理由を知り、traceroute でパケットが止まる場所を確かめます。

生徒は見て回るだけで、ネットワークを動かすというラボ本来の課題は生徒に任せるので、レッスンは答えを教えません。無料の個人アカウントには、ホームにある Basics モジュールで配布されます。どの学校もライブラリの Basics フォルダから自分のモジュールにコピーでき、新しい学校ではサンプルモジュールの Networking Basics (Sample) に入っています。意図的に小さくしてあり、ラボで進めるレッスンとは何かを教員に見せるためのもので、残りはラボが担います。変更したい場合は、自分のモジュールにコピーしてください。

採点の仕組み

ラボにはチェックがあります。新しく起動し直した、保存されたマシンのコピーで実行されるため、生徒が write memory で保存した内容だけが見えます。実際の状態が成り立つときだけ合格です。両方のルーターで vtysh にスタティックルートが保存されていること、h1 がルーターを通る経路で h2 に届くこと、管理用ネットワークには届かないままであることです。ip route で入力しただけで保存していないルートは合格にならず、チェックの出力の1行目にその理由が出ます。

  1. 配布する. ほかの課題と同じようにラボを配布します。期限を付けることもできます。各生徒には専用の VM が渡され、セッションをまたいで保持されます。
  2. チェックを実行する. クラス一覧の生徒の行で「チェックを実行」を押します。保存されたマシンのコピーが(元には保存されない形で)起動し、ラボのチェックスクリプトが root で実行されて、合格したか、何を出力したか、いつかが表示されます。結果は生徒には知らされません。
  3. 採点する. チェックの出力を読みます。生徒が VM を停止すると、クラス一覧にインストールしたパッケージや書いたファイルなどの変更内容も表示されるので、VM を起動せずに採点できます。足りない場合は理由を書いて差し戻します。

GitHub の定義ファイル

このファイルがラボの定義のすべてで、プラットフォームが実行するのと同じテキストです。サイズ、setup スクリプト、トポロジー、README、チェックが入っています。コピーしてトポロジーを書き換えれば自分のラボになります。ルーター、ホスト、リンクが各1行です。

よくある質問

生徒にルーターや Cisco のライセンスは必要ですか?
いいえ。ルーターは生徒の VM の中のネットワーク名前空間で、それぞれオープンソースのルーティングスイートの FRRouting を、vtysh コンソールとともに動かします。
生徒は本物の Linux のネットワークコマンドを使えますか?
はい。それが狙いです。sudo ip netns exec h1 ping 10.0.3.2 や sudo vtysh -N r1 はそのまま使え、netlab shell r1 は近道です。
スタティックルーティングと OSPF の違いは何ですか?
スタティックルーティングのラボでは、生徒が必要なルーターに経路を1本ずつ手で追加し、write memory で保存します。OSPF のラボではルーター同士が area 0 で経路を学習し、チェックは OSPF が学んだ経路を確認します。