🍑あわもり教室🫧 クラウドの「手前」を、ちゃんとやる。 はじめる
SET 0130分

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 と書きます。

IPアドレス192.168.10.34とサブネットマスク255.255.255.0を、ネットワーク部分24ビットと機器部分8ビットに分け、CIDRのスラッシュ24と対応させた図
192.168.10.34/24 では、先頭の三つの数字が同じIPアドレスを、同じネットワークに属するものとして扱います。

よく使う表記は次のように対応します。

CIDR表記サブネットマスクネットワーク部分の長さ
/8255.0.0.08ビット
/16255.255.0.016ビット
/20255.255.240.020ビット
/24255.255.255.024ビット

/24 の範囲は通常、次のように読めます。

用途アドレス
ネットワークアドレス192.168.10.0
ホストに使える範囲192.168.10.1192.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.34192.168.10.80 はネットワーク部が同じで、ホスト部が異なります。

送信元は、自分と宛先のネットワーク部を比べます。

  • ネットワーク部が同じ:同じLANにいると判断し、宛先へ直接渡す
  • ネットワーク部が違う:LANの外にいると判断し、デフォルトゲートウェイへ渡す
192.168.10.34/24の端末が、同じ192.168.10.0/24にいる端末へはLAN内で直接送り、192.168.20.0/24にいるサーバーへはルーターへ渡す図
同じネットワーク部なら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 に一致します。 デフォルトゲートウェイは、知らない宛先を次に相談するルーターです。

宛先IPアドレスをルーティングテーブルの上から比べ、最長一致した経路またはデフォルトゲートウェイへ送る流れ
複数の経路に一致するときは、宛先を最も狭く指定する経路を選びます。
宛先一致する経路選ぶ経路次の動作
10.20.1.50/24/16、default10.20.1.0/24eth0から直接渡す
10.20.8.10/16、default10.20.0.0/1610.20.1.1へ渡す
1.1.1.1defaultのみdefault10.20.1.1へ渡す

プライベートアドレス

IPv4のプライベートアドレス範囲は、インターネット上でそのまま経路制御されません。

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.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は指定した宛先に対して選ばれる経路を表示します。

  1. どのインターフェースにIPアドレスが付いているか
  2. デフォルトゲートウェイはどれか
  3. 1.1.1.1 へ出るインターフェースはどれか

出力を見て、自分の言葉で答えてください。

IPv6も同じ考え方から始める

IPv6は128ビットで、2001:db8::/32 のように16進数で表します。 アドレス空間、近隣探索、アドレス設定の方法はIPv4と異なりますが、プレフィックスと経路から転送先を選ぶ基本は共通です。

次は、ルーターがアドレスを置き換え、通信を許可する仕組みを見る

ここまでは、IPアドレスを使って次の渡し先を選ぶ仕組みを学びました。 次のアドレスを置き換え、通信を許可するでは、家庭や会社のLANからインターネットへ出るときのアドレス変換と、通してよい通信を決める設定を分けて考えます。

このレッスンは完了

このページで扱った流れを確認したら、次の内容へ進みます。