第 4 回 IP演習

本日の内容


このドキュメントは http://edu.net.c.dendai.ac.jp/ 上で公開されています。

4-1. アイスブレイク

本日の属性

前回のワークが理解できた Javaのプログラミングができる
学籍番号 氏名 (番号欄)
台風の影響を受けた 連休の予定が立っている

手順

  1. 全色が揃うように3から4人で班を作る(4人推奨)
  2. 班ごとに着席する。椅子を動かして机を囲むようにする。(使わない机を動かしても良い)
  3. 順番を決める
  4. 作成した4枚の用紙に決まった番号を記入する
  5. 班員に用紙を名刺代わりに配る
  6. 1番から色を付けた属性を含めた自己紹介を1分程度で行う

4-2. レポート課題

テーマ:ルーティングテーブルの作成

本日のワークを元に、提出用用紙に以下を記 入して提出すること。

  1. 学籍番号、氏名
  2. ルータから出ている 3本の足の IP アドレスと、サブネットマスク 長
  3. ルーティングテーブル

締切、提出方法

来週火曜日の夕方までに <sakamoto@c.dendai.ac.jp>宛にメールすること。

4-3. ワーク

ワーク4-1

Network1
ネットワークモデル

以下の問題を自力で解く

ネットワークの設計を行います。自分のネットワーク内にサブネット2本とバックボーンネットに接続をするルータを考える(図中の青い装置)。

  1. はじめに右図を写します。 但し、Router Address1〜3, Network Address1〜3 は、以下の手順で具体的 なアドレスを記入しますので、空欄にしておいてください。

    雲はネットワークを表します。丸に矢印はネットワーク同士を接続する ルータです。 四角に矢印はハブを表し、同一ネットワーク同士の接続点 を意味します。

  2. インターネットを 0.0.0.0/0、インターネットへのゲートウェイアドレス を 10.0.0.254/24 とします(全員共通)。 図の通り写されているか確認します。
  3. 対外線の接続アドレスは 「10.0.0.学籍番号の下三桁/24」とします。 例えば、学籍番号が 17ad200ならば、「10.0.0.200/24」となります。 これを Router Address1 に記入します。
  4. 自分のネットワーク「10.学籍番号の下三桁.0.0/16」を Network Address1 に記入します。
  5. 自分のネットワークを分割します。

    サブネットのビット幅を最小でも1bit以上定め(おすすめは 8bit)、異 なるサブネット番号のネットワークアドレスを2つ用意します。 ここでは、自分のネットワークアドレスが 10.200.0.0/16 と定められて いるので、さらにサブネットに分割するには、サブネットのビット幅を 1 または8bit とすると、新しいサブネット長は 16+1 またh 16+8 で 17bit または24bit となります。 求めるネットワークアドレスは (10.200.0.0/17, 10.200.128.0/17) や (10.200.0.0/24, 10.200.1.0/24) などとなります。

    求めたネットワークアドレスを Network Address2, Network Address3 に記入する。

  6. 各サブネットに関して、ルータのアドレスとしてひとつずつホストアド レスを決め、 Router Address2, Router Address3 に記入する。

ワーク4-2

グループ同士で、ルータのバックボーンのネットワーク 10.0.0.0/24 を共有した として、相互にルータに直接接続していないネットワークと転送先のルータ のアドレスの対をルーティングテーブルとして記入する。

最終的に各自で作成した用紙を集め、提出用のパワーポイントのファイルを ダウンロードし、学籍番号、氏名、アドレス、ルーティングテーブルをファ イルに追記して完成させる。

4-4. 講義

スタティックルーティングとダイナミックルーティング

スタティックルーティングとはネットワークの状況の変化を考慮せずにルーティ ングテーブルを決定するものです。 例えばルータやコンピュータが起動した時に設定を行うのはスタティックルー ティングです。 経路が一つしかない場合などはスタティックで十分です。 また、単純なルーティングプロトコルでは計算できないような経路はスタティッ クで設定します。 例えば、二点間に二本経路があり、ネットワークを分割して負荷を分散したい とか、セキュリティの問題などで、特定の回線を使用したくないなど、接続情 報以外の理由で経路を決定したい時などです。

スタティックルートを設定するには route コマンドを使用します。 UNIX 系では route add -net ネットワークアドレス netmask サブネットマスク gw ゲートウェイアドレス とします。 Windows でもオプションの書き方が若干違いますが、同様の書式 で設定します。 ネットワークアドレスすべてを表すにはネットワークアドレス 0.0.0.0 サブ ネットマスク 0.0.0.0 を指定します。 UNIX 系では default というキーワー ドを使える場合があります。

一方、接続情報などに応じて経路を決定することをダイナミックルーティ ングと言います。 ダイナミックルーティングは通常全てのルータが同じアルゴリズムで計算しま すので、一箇所が故障しても全体のシステムの構成に大きな変更が発生しませ ん。そのため、耐故障性に優れています。

先週 IP アドレスの説明でサブネットの説明をしました。 組織内はサブネットの管理をしなければなりません。 一方、組織外はクラスに基づいた大規模なルーティングテーブルを管理しなけ ればなりません。 そこで、組織内用ルーティングプロトコル(IGP INTERIOR GATEWAY PROTOCOLS) と組織外用ルーティングプロトコル(EGP EXTERIOR GATEWAY PROTOCOLS)は 別々に開発されています。 本講義では必要とされるネットワーク技術者の人数 の差から、主に IGP に関して取り上げることにします。

代表的な IGP には RIP と OSPF があります。また、EGP には BGP が使われ ています。 RIP は距離ベクトル型、 OSPF はリンク状態型と呼ばれ、それぞれ異なる方式 でルーティングテーブルを決定しています。

IP version 6

IP version 6 は既存の IP version 4 のアドレス空間の狭さやセキュリティ 問題に対応するため 1995 年に仕様が制定され、 2000 年からは JPNIC でも アドレスの割当が始まりました。 現在、ほとんどの OS で対応されています。 但し、普及していると言う状況ではありません。

IPv6 の主な特徴は次のとおりです。

  1. アドレスが 128 ビットになった。
  2. ヘッダのフィールドが 7 つだけに減り、高速なルーティングが可能になっ た。
  3. オプション対応が充実した
  4. セキュリティが強化された

アドレスの運用(RFC3513,RFC3879)

IPv4 ではアドレスは 192.168.0.1 など、 0 から 255 までの十進数の 4 つ 組をピリオドで区切って表記してました。 一方 IPv6 では FEDC:BA98:7654:3210:FEDC:BA98:7654:3210 のように 4 桁の 16 進数(16bit)の 8 つ組をコロン : で区切って表記します。 なお 0 で始まる値に関しては、0123 → 123, 0012 → 12, 0001 → 1, 0000 → 0 と、数字がすべて無くらならい範囲で 0 を省略可能です。 また 0 の組が連続する時、その 0 の組すべてを省略するため一回だけ :: と いう表記が使えます。 例えば、次のようなアドレスを考えます。

1080:0:0:0:8:800:200C:417A ユニキャストアドレス例
FE01:0:0:0:0:0:0:101 マルチキャストアドレス例
0:0:0:0:0:0:0:1 ループバックアドレス
0:0:0:0:0:0:0:0 未設定アドレス

これは :: を使うと次のように表せます。

1080::8:800:200C:417A ユニキャストアドレス例
FE01::101 マルチキャストアドレス例
::1 ループバックアドレス
:: 未設定アドレス

また下位 32 bit が IPv4 のアドレスを指すという混在環境において、下位 32 bit だけ従来の十進数 4 つ組をピリオドで区切った表記もあります。 例えば 0:0:0:0:0:0:13.1.68.3 や ::13.1.68.3、あるいは 0:0:0:0:0:FFFF:129.144.52.38 や ::FFFF:129.144.52.38 のように書きます。

IPv6 もアドレスを二分割して考えます。有効な上位bit の長さを表すため、 IPv4 と同様に / の後に十進数で長さを書きます。 以下は例です。

  1. 12AB:0000:0000:CD30:0000:0000:0000:0000/60
  2. 12AB::CD30:0:0:0:0/60
  3. 12AB:0:0:CD30::/60

IPv4 ではアドレスの上位 4 bit で最初に 0 が来る位置によりクラスを 5 個 に分けていました。 一方、IPv6 では上位 10 bit でアドレスの性質を表します。 これは以下のようになっています(RFC5735)。

アドレスタイプ IPv6 IPv4
未設定 ::/128 なし
ループバック ::1/128 127.0.0.1/32
マルチキャスト
(ブロードキャストを含む)
FF00::/8 224.0.0.0/4
ホストアドレス部すべてが 1
リンクローカルユニキャスト FE80::/10 169.254.0.0/16(RFC3927)
サイトローカルユニキャスト 廃止(RFC3879) 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
グローバルユニキャスト その他のアドレス。 プライベートを除く 0.0.0.0/1, 128.0.0.0/2, 192.0.0.0/3
ユニークローカルユニキャスト FC00::/7 (RFC4193) なし

なお、IPv4 でローカルなブロードキャスト 255.255.255.255/32 に対応する IPv6 アドレス(ローカルなホスト全てへのマルチキャスト)は FF02::1/128 です。

ユニキャスト

ユニキャストのアドレスは通常上位 64 bit がネットワークアドレスで、下位 64 bit がインターフェイスアドレスになっています。

下位64bit は通常インターフェイス固有の MAC アドレスなどから自動的に設 定されます。 改訂EUI-64 フォーマットと呼ばれるアドレスの計算方法は次のようになりま す。 Ethernet アダプタに固有に割り振られている MAC アドレスは 48 bit で通常 は二桁の 16 進数(8 bit) の 6 こ組をハイフンで結んだものになっています (XX-XX-XX-XX-XX-XX )。

  1. これに対して上位の 3 こと下位の 3 この間に FF FE を入れます (XXXX:XXFF:FEXX:XXXX)。
  2. 上位 7 bit 目を on にして、8 bit 目を off にします。 つまり 0200:0:0:0 と OR を取り、 FEFF:FFFF:FFFF:FFFF と AND をとります。
  3. 例えば、 00-0B-97-28-C6-D5 という MAC アドレスだったら、 020B:97FF:FE28:C6D5 というアドレスに変換されます。

上位の 64 bit に関しては、通常組織に上位 48 bit が割り当てられ、16bit がサブネットになります。 現在 2000::/3 の割り当て、つまり 2000:0:0::/48 から 3FFF:FFFF:FFFF::/48 が割り当て対象になっています。 但し、特殊なアドレスとして次のものがあります。

  1. 2001:0DB8::/16 は出版用のアドレスで、このアドレスは書籍などで例を 出すのに使います。 運用に使ってはいけません。
  2. 2002:: は 6to4 という運用(後述)で使います。

例えば 00-0B-97-28-C6-D5 という MAC アドレスを持つマシンがサブネット 番号 1 に接続されている場合、グローバルなユニキャストアドレスの例とし ては 2001:0DB8::1:020B:97FF:FE28:C6D5 などになります。

IPv6 における、アドレス自動設定へのプライバシー拡張(RFC3041)

前節のように IPv6 では DHCP を用いなくても各機器はネットワークインタ フェースの持つ MAC アドレスからホストアドレスを自動生成することができ ます。 しかし、このようにして生成された IPv6 アドレスとと個人情報と紐つけする などすると個人情報が漏洩する恐れがあります。 そのため、唯一性を保ちながら、プライバシが漏洩しないようなアドレスの生 成法が RFC3041 により定められています。 これは、端的に言えば暗号理論的なハッシュ関数を利用して、唯一性の保証さ れているアドレスを種として、ホストアドレスをハッシュ値により求めるもの です。

暗号理論的なハッシュ関数とは、任意の入力から固定長の出力を得る関数のう ち、次のような特性を持つものです。

  1. 比較的高速に計算できる
  2. 逆に得られた出力から入力の一部ですら容易に判定することはできな い
  3. 入力が 1bit でも変化すると、出力は大きく変化する
  4. 異なる入力から同じ出力を得ることはあるが(コリジョン)、ある入力に対 してコリジョンを発生させるもう一つの入力を求めることは困難

このような仕組みにより、MAC アドレスとは無関係で、唯一のアドレスを自動 的に生成できます。

ローカルアドレス

ローカルリンクネットで使えるアドレスは FE80::/64 インターフェイスID です。 例えば 00-0B-97-28-C6-D5 という MAC アドレスを持つマシンのリンクロー カルアドレスは FE80::020B:97FF:FE28:C6D5 となります。

なお、ローカルアドレスはネットワークアドレスが共通のため、インターフェ イス番号をアドレスの後ろに %n という形で付加する必要があります。 Windows では netsh interface ipv6 show interface でインター フェイス番号の一覧を得ることができます。

RFC 3513 にはサイトローカルアドレスも定義されていますが、技術的な問題 点が指摘されたため RFC3879 で廃止されています。

エニーキャストアドレス

近隣のホストやルータなど、どのホストでもいいから一台と通信したい場合 (IPアドレスが欲しい場合など)、エニーキャストアドレスを使います。 これはインターフェイス ID が 0 になっているものです。

マルチキャストアドレス

複数のホストとやりとりするためのアドレスがマルチキャストアドレスで、上 位 8 bit が 1 、次の 4 bit がフラグ、次の 4 bit が範囲を示しています。 範囲は 1 がインターフェイス、 2 がリンクローカル、 4 が管理者ローカル、 5 がサイトローカル、8 が組織ローカル、 E が全域となっています。 例えば、 NTP のグループ ID は 16 進数で 101 となっていますので、マルチ キャストアドレスは以下のようになります。

FF01::101
同じノード(ホスト)上の全 NTP サーバ
FF02::101
同じリンク上の全 NTP サーバ
FF05::101
同じサイト内の全 NTP サーバ
FF0E::101
インターネット全体の NTP サーバ

すべてのノードのグループ ID は 1, すべてのルータのグループ ID は 2 で す。


坂本直志 <sakamoto@c.dendai.ac.jp>
東京電機大学工学部情報通信工学科