routing
経路制御

講義

インターネットの心臓部といえる IP(Internet Protocol) について学習する. OSI 参照モデル第 3 層の機能の代表的なものである.

第 3 層の機能を理解するには「ネットワーク」という概念を 理解することが重要である.ここでは同じネットワークアドレスで接続されている グループがネットワークであると理解すればよい.

1台のハブに接続されたホストは同じネットワークに所属し, OSI 参照モデルの第 2 層の機能で通信できる. 第 2 層の通信ではすべての通信は基本的には 同じネットワーク上のすべてのホストに届くように 発信される.参加ホスト数が多くなると無駄な通信が増え, 全てのホストを同じネットワークに所属させることが 現実的には不可能になる.

インターネットでは, 適当な数のホストごとにネットワークを分割し, 異なるネットワーク同士が通信する場合に 経路制御の働きで通信を行う.経路制御は OSI 参照モデル第 3 層にあたる IP の代表的な機能である.

複数のネットワークに所属するネットワークデバイスをもつホストをルータ とよぶ.(歴史的にはゲートウェイとよばれることも多いが本授業では呼称をルータとする) IP ではルータを使ってバケツリレー方式で目的の ネットワークへデータを届ける.バケツリレーで通信を正しいホストへ導くために, IP では各ホストがもつ経路制御表を利用する. 図 8.1 は 192.168.0.2/24 のホスト 1 から 192.168.3.2/24 のホスト 4 へデータを送る場合の経路制御表の利用方法を示したものである.

経路制御
図 8.1 経路制御

IP では送り先住所にあたる通信の宛先を IP アドレスで指定する. 直接接続されていない(同じネットワークにない)ホストへデータを 送る場合,バケツリレーを行なうにしてもどのルータにデータを送れば よいかの情報が必要である.たとえば図 8.1 のルータ B がホスト 4 へデータを送るにはルータ A ではなくルータ C に送らなければならない ということをルータ B が知っている必要あがる. 転送を正しく行うためにホストは経路制御表をもつ.図 8.1 では省略されているが ホスト 2 から 4 もホスト 1 と同様の経路制御表をもっている. 経路制御表のポイントは,全ての経路情報をもつのではなく,各ホストは 次のルータへの情報のみをもつという点である.次のルータさえ正しく 知ることができれば最終的に目的ホストへ到達できるからである.

経路制御表記載する情報は,到達すべきすべてのネットワークアドレスと それぞれについての次に送るべきルータのホストの IP アドレスである. ここに記載される次のルータに対してバケツリレー的にデータは送られる. 表面上は経路制御表に記載されるのは次のルータだけであるが, 設定を行うには到達可能なネットワークの全体像を知っている必要がある ことに注意する.

インターネットが普及した現在, 到達すべき全てのネットワークアドレスについて 経路制御表を記述するのは非現実的である. そこで,デフォルトとして経路制御表にない IP アドレス宛のデータがあった場合に 送るルータを記述することで記述を簡略化できるようになっている. これをデフォルトルート (デフォルトゲートウェイ)とよぶ.デフォルトルートは慣例として 0.0.0.0/0 を宛先とする経路情報として記述される.(図 8.1 のホスト 1 の経路制御表)

図 8.1 のホスト 1 から 4 のように,上流のルータが一つしかない場合, デフォルトルートの記述により特に設定が簡単になる. 自分の所属するネットワーク以外への通信はすべてデフォルトルート を次のルータとして指定すればよいからである.一般ユーザとして 与えられた環境で計算機をインターネットに接続するときはほとんど この形態になる.自分のネットワークへの経路制御情報は一般に 自動で設定されるため,このような形態では設定が必要なのは デフォルトルートの情報だけである.以前の実習で IP アドレスを設定するときに 「デフォルトゲートウェイ」の設定を行ったのがこの設定にあたる.

実習

今回の実習では外部との接続を遮断した状態で実習室内だけで閉じたネットワークを 作成する.授業今回の授業用ウェブページを開いた状態でブラウザの ファイルコマンドから「名前を付けてページを保存」を選び,デスクトップに 保存せよ.

これから外部ネットワークを遮断するので保存したファイルを開いて 実習を行え.

本実習の目的は最終的に図 8.2 の構成のネットワークを作成し, 互いに到達可能に設定することである."/" でサブネットマスク長を 指定する表記では,ネットワークアドレスを記述する場合に 末尾の0を省略することができる.図8.2ではこの省略記法を用いている.

各 pc の名前を以下のように決める. 班番号の 2 桁表記を A とすると 各班の教卓に向かって左側から pcA1, pcA2,...,pcA4 とする.

接続図
図 8.2 接続図

実習 0.

実習 0.1 root の有効化

設定のコマンドを頻繁に実行するためには root (スーパーユーザ) になって作業を行うと効率がよい.Ubuntu 10.04 ではセキュリティ上の理由で インストール状態では root は無効になっている. root を有効にする作業は root にパスワードを設定する ことで行う.自分のユーザ名でログインし,以下のコマンドを実行せよ. passwd コマンドは引数なしで実行すると,root のパスワード を変更する.

nauser@na-160:~$ sudo passwd

以下のように認証パスワードの入力が求められたら

[sudo] password for XXXX:

XXXX (ログインしたユーザ)のパスワードを入力せよ. 続いて「新しいUNIXパスワードを入力してください:」という画面で root のパスワードを入力する.設定する root のパスワードは授業中に 連絡する.確認のための再入力を行うと root のパスワードが設定され, root が有効になる.

実習 0.2 経路制御機能の有効化

Ubuntu 10.4 はインストール時の状態では 経路制御を行わないように設定されているので 経路制御を行う設定に変更する必要がある.

実習 0.2 は pcA1 のみで行う.

設定ファイルは /etc/sysctl.conf である.ファイル内容を変更するには管理者権限が必要なので まず su - コマンドで root になる.パスワードを聞かれたら root のパスワードを入力する.root になっている間は プロンプトの最後が $ ではなく # になっている. root はあらゆるファイルを変更,消去できる権限があるので, root 作業している間は少しのミスが大きな失敗になる可能性がある. 細心の注意を払って作業すること.

重要なファイルは変更する前にファイルのバックアップを とっておくとよい.例えば作業を行ったのが 2013 年 5 月 20 日なら, sysctl.conf のコピーを sysctl.conf.20120521 という名前で作成しておくと 設定作業に失敗しても簡単に元の状態に戻す事ができる.

sysctl.conf ファイルを gedit などのエディタで開き,下記の行を探す.

#net.ipv4.ip_forward=1

net.ipv4.ip_forward=1 という経路制御を行う設定が,行頭の # によりコメントアウトされている.この # を削除するだけで経路制御を行う設定になるので変更する.

設定ファイルを書き換えただけでは変更は反映されない.

root@na-160:/etc# sysctl -p

上記コマンドでネットワークだけを再起動するか,システム全体を再起動せよ. これで変更が反映される.

ここまでの処理は最初に 1 度だけ行えば良い.

実習 1.

すべての PC から,机から配線されている Ether ケーブルを抜け. 実習 1. では 図 8.2 の実験室常設 LAN(172.17/16)の設定を行う. 各班の左端の PC つまり pcA1 の USB コネクタに透明ボックスの中の USB ネットワークデバイスを挿入せよ. ここでは USBネットワークデバイス (eth2) のみに設定を行う.

USB ネットワークデバイスを設定するには, システム->設定->ネットワーク接続から,有線タブを選択し, eth2 を選択して編集ボタンを押せ. IPv4 のセッティングタグを押し,方式:で手動を選び下記の IP アドレスとサブネットマスクを設定せよ. IP アドレスの末尾に /16 と書かれている場合,サブネットマスク が 255.255.0.0 であることを意味していることに注意する.

1 班
172.17.3.1/16
2 班
172.17.3.2/16
3 班
172.17.3.3/16
4 班
172.17.3.4/16
5 班
172.17.3.5/16
6 班
172.17.3.6/16
7 班
172.17.3.7/16
8 班
172.17.3.8/16
9 班
172.17.3.9/16
10 班
172.17.3.10/16
11 班
172.17.3.11/16
12 班
172.17.3.12/16
13 班
172.17.3.13/16
14 班
172.17.3.14/16

デフォルトゲートウェイは 172.17.254.254, ネームサーバーは 172.17.254.254 を設定せよ.図8.2には省略されているが 172.17/16 のネットワークに 172.17.254.254 というホストが存在し,インターネットとの中継,DNS サービスを 行っている.この設定が終わったら机から配線されているケーブルを USB ネットワークデバイスに接続せよ.

教卓側の IP アドレスの設定が済めばこちらから合図するので,合図があったら ping を使って図 8.2 の 172.17.3.15 への接続ができるか確認せよ. 接続が失敗する場合は間違いがないか確認し,修正せよ.

実習 2.

自ホストが直接接続しているネットワーク 172.17/16 への経路は 自動的に設定される(実験 1). 実験 2 では教卓にある別のネットワークである 192.168.15.0/24 上の pc152 への通信が到達するように各班のpcA1 の経路制御表を設定する.

まず最初に現在の経路制御表を確認する.確認するためのコマンドは route -nである. 実行してみよ.以下が実行した場合の出力例である.

root@na-160:~# route
カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ Metric Ref 使用数 インタフェース
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth2
172.17.0.0      0.0.0.0         255.255.0.0     U     1      0        0 eth2
0.0.0.0         172.17.254.254  0.0.0.0         UG    0      0        0 eth2

経路制御表に必要な情報は 「宛先が 192.168.15/24 のネットワークであるとき,次に送るべきルータは 172.17.3.15/16 である」というものである.これを与えるコマンドは以下のとおりである.

root@na-160:~# route add -net 192.168.15.0 netmask 255.255.255.0 gw 172.17.3.15

上記コマンドを実行したのち,route -n コマンドで経路制御表を確認せよ.

pcA1 から 192.168.15.2 に対して ping を行い,到達していることを確認せよ. 失敗した場合は原因を考察し,修正せよ.

実習 3.

実習 3.1

図 8.2 における各班専用のネットワーク 192.168.A/24 を設定する. pcA1, pcA2 pcA3, pcA4 それぞれの 内蔵 LAN ポート に 192.168.A.1/24, 192.168.A.2/24, 192.168.A.3/24, 192.168.A.4/24 を設定せよ. 内蔵有線ネットワークデバイス (eth1) を設定するには, システム->設定->ネットワーク接続から,有線タブを選択し, eth1 を選択する.

デフォルトゲートウェイは pcA1 については 172.17.254.254, その他の PC については自班の pcA1 の 内蔵 LAN 側のアドレス(192.168.A.1)を指定せよ. ネームサーバーはすべてのホストで 172.17.254.254 を設定せよ.

上記設定が完了したら各班のプラスチックボックス内の HUB の電源を接続し,HUB の MDI-X ポートと 各 PC の内蔵 LAN ポートをストレートケーブルで接続せよ.

教卓の pc151 の経路制御の設定 が完了したら合図するので, 合図の後 pcA2, pcA3, pcA4 から教卓の 192.168.15.2 へ ping で接続を確認せよ.

実習 3.2

pcA1 の経路制御表を設定する.

pcA1 から直接到達できない自分以外の班のネットワークそれぞれについて そのネットワークを宛先とする場合に最初に送るべきルータすべてを pcA1 の経路制御表に記述する必要がある. 何を設定すべきか考えて設定せよ. 設定後 route -n コマンドで経路情報を確認せよ.

pcA2, pcA3, pcA4 の経路制御表は,自分の所属するネットワーク以外に送信する全ての場合において 次のルータが pcA1 になるケースなのでデフォルトルートの設定だけでよい. 実習 3 の最初のデフォルトゲートウェイの設定ですでに設定されているはず である.route -n コマンドで確認せよ.

設定が終了した他の班との間で pcA2, pcA3, pcA4 のどれかを使って班を超えた ping の接続確認を行え.

課題

第 5 回課題「経路制御」 を提出せよ.


Updated in June 3, 2010, index.html, Yamamoto Hiroshi