IPアドレスとルーティング
自分と宛先のIPアドレスを比べ、直接渡すかルーターへ渡すか決める仕組みを学びます。
このレッスンのメニュー
コンピューターがデータを送るときは、宛先が同じネットワークにいるか、その外にいるかを最初に判断します。 同じネットワークの相手には直接渡し、外の相手には出口となるルーターへ渡します。 この判断に使うのがIPアドレスと、宛先ごとの渡し先を記録した表です。
「ローカル」という言葉は、文脈によって範囲が変わります。
| 言い方 | 指す範囲 |
|---|---|
| ローカルホスト | いま操作している一台。127.0.0.1 は自分自身を指す |
| ローカルネットワーク | ルーターを越えずに直接やり取りできるネットワーク |
| プライベートIPアドレス | 組織内や家庭内で使い、インターネットではそのまま宛先にできない範囲 |
| グローバルIPアドレス | インターネット上で通信先として経路を選べるIPアドレス |
ローカルは「どこから見て近いか」を表し、プライベートはIPアドレスの決められた範囲を指します。
IPv4アドレスとCIDR
IPv4アドレスは、0から255までの数字を四つ並べて表します。 コンピューターの内部では、それぞれの数字を8ビットで扱うため、全体は32ビットです。
CIDR(Classless Inter-Domain Routing)表記は、IPアドレスの後ろに/24のような数字を付け、ネットワークを示す部分の長さを表す方法です。
IPアドレスは、「どのネットワークに属するかを示す部分」と「その中の機器を示す部分」に分かれます。 どこで分けるかを示す32ビットの値がサブネットマスクです。
サブネットマスクでは、ネットワーク部分を1、機器を示す部分を0で表します。
たとえば 255.255.255.0 は、2進数にすると先頭から1が24個並び、そのあとに0が8個並びます。
これを短く /24 と書きます。
192.168.10.34/24 では、先頭の三つの数字が同じIPアドレスを、同じネットワークに属するものとして扱います。よく使う表記は次のように対応します。
| CIDR表記 | サブネットマスク | ネットワーク部分の長さ |
|---|---|---|
/8 | 255.0.0.0 | 8ビット |
/16 | 255.255.0.0 | 16ビット |
/20 | 255.255.240.0 | 20ビット |
/24 | 255.255.255.0 | 24ビット |
/24 の範囲は通常、次のように読めます。
| 用途 | アドレス |
|---|---|
| ネットワークアドレス | 192.168.10.0 |
| ホストに使える範囲 | 192.168.10.1 〜 192.168.10.254 |
| ブロードキャスト | 192.168.10.255 |
クラウドでは /16 や /20 のような大きなネットワークを作り、その中を複数のサブネットへ分けます。
ネットワーク部とホスト部を何に使うか
サブネットマスクの1になっている部分をIPアドレスへ重ねると、ネットワークアドレスを求められます。
192.168.10.34/24 では、先頭24ビットを残し、残り8ビットを0にするため、ネットワークアドレスは 192.168.10.0/24 です。
残りの8ビットは、そのネットワーク内で機器のインターフェースを区別するホスト部です。
同じ /24 の中では、192.168.10.34 と 192.168.10.80 はネットワーク部が同じで、ホスト部が異なります。
送信元は、自分と宛先のネットワーク部を比べます。
- ネットワーク部が同じ:同じLANにいると判断し、宛先へ直接渡す
- ネットワーク部が違う:LANの外にいると判断し、デフォルトゲートウェイへ渡す
IPv4では、同じLANの相手へ直接渡す前に、ARPを使って宛先IPアドレスに対応するMACアドレスを調べます。 別のネットワークへ送る場合は、宛先サーバーではなく、まずデフォルトゲートウェイのMACアドレスを調べます。 このときIPパケットに書かれた最終的な宛先IPアドレスは、宛先サーバーのままです。
通信には、同じネットワーク部の設定に加え、同じLANへの接続、相手の起動、通信を許可する設定も必要です。
ルーティングテーブルから次の転送先を選ぶ
ホストは宛先IPアドレスを見てルーティングテーブルを引きます。 一致する経路の中から、プレフィックスが最も長い、つまり最も具体的な経路を選びます。
10.20.1.0/24 dev eth0
10.20.0.0/16 via 10.20.1.1
default via 10.20.1.1
10.20.1.50 は1行目、10.20.8.10 は2行目、それ以外は default に一致します。
デフォルトゲートウェイは、知らない宛先を次に相談するルーターです。
| 宛先 | 一致する経路 | 選ぶ経路 | 次の動作 |
|---|---|---|---|
10.20.1.50 | /24、/16、default | 10.20.1.0/24 | eth0から直接渡す |
10.20.8.10 | /16、default | 10.20.0.0/16 | 10.20.1.1へ渡す |
1.1.1.1 | defaultのみ | default | 10.20.1.1へ渡す |
プライベートアドレス
IPv4のプライベートアドレス範囲は、インターネット上でそのまま経路制御されません。
10.0.0.0/8172.16.0.0/12192.168.0.0/16
家庭内LANやクラウドのVPCで同じ範囲を再利用できます。 別のネットワークをVPNなどでつなぐとき、アドレス範囲が重なると経路を一意に選べず問題になります。
自分の経路を確かめる
Linux仮想マシンで実行します。
ip -brief address
ip route
ip route get 1.1.1.1
三つとも、シェルがipというプログラムを起動し、Linuxカーネルが持つネットワークの状態を問い合わせます。
addressはインターフェースとIPアドレス、routeは経路表、route getは指定した宛先に対して選ばれる経路を表示します。
- どのインターフェースにIPアドレスが付いているか
- デフォルトゲートウェイはどれか
1.1.1.1へ出るインターフェースはどれか
出力を見て、自分の言葉で答えてください。
IPv6も同じ考え方から始める
IPv6は128ビットで、2001:db8::/32 のように16進数で表します。
アドレス空間、近隣探索、アドレス設定の方法はIPv4と異なりますが、プレフィックスと経路から転送先を選ぶ基本は共通です。
次は、ルーターがアドレスを置き換え、通信を許可する仕組みを見る
ここまでは、IPアドレスを使って次の渡し先を選ぶ仕組みを学びました。 次のアドレスを置き換え、通信を許可するでは、家庭や会社のLANからインターネットへ出るときのアドレス変換と、通してよい通信を決める設定を分けて考えます。
このレッスンは完了
このページで扱った流れを確認したら、次の内容へ進みます。