IPアドレスの仕組み

ホストとネットワークインタフェース

インターネットに繋がっている機械のことをホストという。 一つのホストにはネットワークインタフェースカード(NIC)があり、 それにネットワークケーブルが繋がり、インターネットへと繋がっている。 ネットワークに繋がっているもの同士が互いを識別するために付けている 番号をネットワークアドレスという。そのうちインターネット プロトコル(IP)で用いているアドレスのことをIPアドレスという。

一つのホストは複数のネットワークに繋がることもある。その場合 どのNICをどのネットワークに繋げるかによって付けるべきIPアドレスが 変わる。IPアドレスはネットワークインタフェースに付けるものであり、 それは接続するネットワークによって適切な値が決まるものである。

IPv4アドレス

IPv4アドレス(以下IPアドレス)は32ビットの2進数で表す。10進数では 0〜4294967295だが、これを通し番号で使うようなことはしない。 32桁あるうちの任意の数桁をネットワークアドレスとして、 残りの桁をホストアドレスとして利用する。インターネット接続をする組織は、 その組織に対して割り当ててもらったネットワークアドレスと、組織固有の ホストアドレスを組み合わせて使う。

IPアドレスを表記する場合、2進数のままでは桁が多すぎるので、 16ビットずつ、4つに区切った数を10進数にしたものをピリオドで区切って使う。

11001011 10110101 01110010 00 010001

の場合は

0b11001011 = 203
0b10110101 = 181
0b01110010 = 114
0b00010001 = 17

であるから、203.181.114.17 となる。

ネットマスク

32ビットのIPアドレスのうちどの桁がネットワーク部なのかを ネットマスクで表す。ネットマスクとIPアドレスのビット毎のANDを取ると ネットワークアドレスが残るようにする。つまり、ネットワーク部分の桁を1、 それ以外を0にしたものがネットマスク値である。

11001011 10110101 01110010 00 010001

の場合は上位26ビットを全て1にして残りを0にした

11111111 11111111 11111111 11 000000

がネットマスク値となる。ネットマスクも16ビット×4を10進数に 直して表記する。上記の例の場合は

0b11111111 = 255
0b11111111 = 255
0b11111111 = 255
0b11000000 = 192

であるから、netmask = 255.255.255.192 となる。

IPアドレスとネットマスク値を組み合わせたものが 一つのホスト(厳密にはNIC)に付けるべきアドレスの組み合わせとなる。

上記のアドレス例の場合は

IP address      = 203.181.114.17 (netmask 255.255.255.192)
Network address = 203.181.114.0  (netmask 255.255.255.192)

と表す。ただし、ネットマスク値は最上位ビットから連続した"1" で使用することがほとんどであるため、何個の1が連続するかをスラッシュで 区切って表す簡略表記も一般的で、

IP address      = 203.181.114.17/26
Network address = 203.181.114.0/26

と表すこともある。本講でも簡略表記を用いる。

ルーティング

あるホストに別のホストと通信する必要が出たとき、通信先が 同一ネットワークにあるか、そうでないかによって送信方法が変わって来る。 同一ネットワークのホストであれば相手ホストと直接通信することができるが、 そうでないときは外部ネットワークに繋がっているホストに中継を依頼しなけれ ばならない。通信先が同一ネットワークにあるかどうかの判断は 通信先IPアドレスと、自分のNICに付いたIPアドレスとネットマスクを 用いて決定する。それゆえネットマスクが間違っていると正しい 通信ができない。

通信先が外部ネットワークの場合には、そのネットワークに繋がっている 別のホストに付いたIPアドレスに依頼することになる。中継役を担う ことのできるホスト、つまり2つ以上のネットワークに繋がっている ホストのことをゲートウェイホストという。

                                             外部インターネット(WAN)
                                                     |
                                                     |
                                     +---------------+--------+
                                     |     (gw-all)           |
                                     |192.168.100.1           |
部署A 192.168.10.0/24                +-+----------------------+
            :                          |
        +---+----------------------+   |
        |192.168.10.1              |   |
	|    (gw-a) 192.168.100.10 +---+
	+--------------------------+   |
	                               |
部署B 192.168.11.0/24                  |
            :                          |
        +---+----------------------+   |
        |192.168.11.1              |   |
	|    (gw-b) 192.168.100.11 +---+
	+--------------------------+   |
                                       |
部署C 192.168.12.0/24                  |
            :                          |
        +---+----------------------+   |
        |192.168.12.1              |   |
	|    (gw-c) 192.168.100.12 +---+
	+--------------------------+   |

(gw-c) 192.168.100.12 を基準とした場合、部署Bにある何らかのホスト (たとえば 192.168.11.5) に届けたいものは (gw-b) に依頼すればよいので、 192.168.100.11 に行先を設定する。部署Aにある何らかのホスト (たとえば 192.168.10.5) に届けたいものは (gw-a) に依頼すればよいので、 192.168.100.10 に行先を設定する。どの部署でもない宛先 (たとえば 10.2.3.4 など)に届けたいものは外部インターネットと繋がっている gw-all に依頼すればたぶんその先何とか探してくれるだろうということで とりあえず 192.168.100.1 に行先を設定する。

このように通信先に応じた行先を設定することをルーティング という。その行先のことをルート(route)という。 通信先が登録したネットワークアドレス以外の場合にとりあえず 設定する行先のことをデフォルトルート(default route)という。

ゲートウェイでない一般的な末端ホストの場合、同一ネットワーク 以外のものはすべてゲートウェイに行先設定すればよいだけなので、 他のホストと通信するための最低限の設定として

の3つを設定すればよいことになる。

IPアドレスの設定と確認

IPアドレスの設定には ifconfig コマンドを使う。

ifconfig IF名 IPアドレス netmask MASK

IPアドレスが正しく設定できていれば、他のホストと通信できるようになる。 他ホストとの導通確認には ping コマンドを使う。

ping -n 宛先IPアドレス

プライベートIPアドレス

組織内通信で自由に使ってよいアドレス。外部と直接ルーティングしては いけない。RFC 1918参照。

10.0.0.010.255.255.25510/8
172.16.0.0172.31.255.255172.16/12
192.168.0.0192.168.255.255192.168/16

組織内のみで利用し、外部に公開しないホストはこれらのIPアドレスを使用 する。

yuuji@koeki-u.ac.jp