IT の基礎
IP アドレスとサブネット
IPv4 アドレスは 32 桁の 0 と 1 で、10.0.0.0/24 のような CIDR 表記は「先頭 24 桁が同じアドレスのまとまり」を表します。Google Cloud ではサブネットごとにこの範囲を決め、範囲が重なるネットワークどうしはそのままではつなげません。
ネットワークにつながったコンピュータは、IP アドレスという番号で相手を見分けます。今広く使われている IPv4 のアドレスは 32 桁の 0 と 1 で、10.0.0.0/24 のような CIDR 表記は「先頭の 24 桁が同じアドレスのまとまり」を表します。このまとまりをサブネットと呼びます。Google Cloud でネットワークを作るときは、サブネットごとにこの範囲を自分で決めます。範囲が重なったネットワークどうしはそのままではつなげないので、最初に決める数字が設計の制約になります。
IP アドレスは 32 桁の 2 進数
コンピュータの中では、数はすべて 0 と 1 の並び (2 進数) で扱われます。0 か 1 の 1 桁をビットと呼びます。IPv4 アドレスは 32 ビットで、人が読みやすいように 8 ビットずつ 4 つに区切り、それぞれを普段の 10 進数に直して点でつなぎます。8 ビットで表せる数は 0〜255 なので、192.168.1.256 のようなアドレスはありません。
32 ビットで作れるアドレスは 2 の 32 乗、約 43 億個です。世界中の機器に配るには足りないので、後継の IPv6 (128 ビット) もありますが、Google Cloud のサブネットの設計で最初に決めるのは IPv4 の範囲です。
CIDR 表記とサブネットマスク
/24 の数字をプレフィックス長と呼び、先頭の何ビットがネットワーク部かを表します。残りがホスト部で、ホスト部のビット数を n とすると、そのサブネットには 2 の n 乗個のアドレスがあります。/24 ならホスト部が 8 ビットなので 256 個です。プレフィックス長が 1 増えるとアドレスの数は半分になります。
同じ区切りを、ネットワーク部を 1、ホスト部を 0 にして 10 進数で書いたものがサブネットマスクです。古い機器の設定画面ではこちらの書き方が出てきます。
| CIDR | サブネットマスク | アドレスの数 |
|---|---|---|
| /8 | 255.0.0.0 | 16,777,216 |
| /16 | 255.255.0.0 | 65,536 |
| /20 | 255.255.240.0 | 4,096 |
| /24 | 255.255.255.0 | 256 |
| /26 | 255.255.255.192 | 64 |
| /29 | 255.255.255.248 | 8 |
ホスト部をすべて 0 にしたアドレスが、そのサブネットの先頭であるネットワークアドレスです。10.0.0.0/24 の範囲は 10.0.0.0 から 10.0.0.255 までになります。
大きな範囲を同じ大きさに切り分ける
サブネットは、大きな範囲を切り分けて作ります。プレフィックス長を 1 増やすと 2 つに、2 増やすと 4 つに分かれます。部署やシステムごとにサブネットを分けておくと、通信の許可や禁止をサブネット単位で決められます。
下の計算機に CIDR を入れて、範囲と数、分けた結果を確かめてください。2 進数の太字がネットワーク部です。
プライベートアドレスは組織の中だけで使う
インターネット上で通じるアドレス (パブリックアドレス) は、世界で 1 つずつしかありません。これとは別に、組織の中だけで自由に使ってよい範囲が RFC 1918 で決められています。これをプライベートアドレスと呼びます。
10.0.0.0/8(10.0.0.0〜10.255.255.255)172.16.0.0/12(172.16.0.0〜172.31.255.255)192.168.0.0/16(192.168.0.0〜192.168.255.255)
家庭の Wi-Fi で 192.168. から始まるアドレスが配られるのは、この範囲を使っているからです。プライベートアドレスは別の組織と同じ値を使っていてもかまわない代わりに、そのままではインターネットに出られません。
Google Cloud のサブネットで気をつけること
Google Cloud のサブネットのドキュメントによると、各サブネットの先頭 2 つと末尾 2 つのアドレスは Google Cloud が予約します。/24 なら 256 個のうち、VM に付けられるのは 252 個です。作れるサブネットの大きさは /29 (8 個) から /4 までです。
設計で特に気をつけるのは、範囲の重なりです。別々の VPC (Google Cloud の中に作る自分専用のネットワーク) どうしをつなぐときや、オンプレミスのネットワークと VPN でつなぐとき、両方に同じ範囲のサブネットがあると、どちらに送ればよいか決められません。オンプレミスで 10.0.0.0/16 を使っている会社が、Google Cloud にも同じ範囲でサブネットを作ってしまうと、後から接続するときに作り直しになります。つなぐ予定のある相手の範囲を先に確かめ、重ならない範囲を割り当てます。VPC の分け方は VPC の設計、オンプレミスとの接続はオンプレミス・マルチクラウドとの接続で扱います。
次のページでは、IP アドレスで届いたデータを、どのアプリが受け取るかを決めるポート番号と、TCP と UDP の違いを扱います。