IPv4サブネット構成 — 二進法の計算があなたの職業選択を疑わせるとき
IPv4のサブネット分割を痛みなく説明。CIDR記法、サブネットマスク、ホスト範囲、および/24と/16が全く異なることについて理解し、参照表とオンラインIPv4コンバーターを使って計算を自動で行えます。
あなたのキャリアのどこかで、誰かがあなたに「ネットワークをただ設定して」と言ってくることがあります。VPC、Kubernetesクラスタ、またはDockerネットワークの設定を依頼する場合です。AWSコンソールを開き、次のフィールドを見ます。 CIDR block、そして 10.0.0.0/24 をタイプし、まったく知識がある人間のように自信を持って入力します。
そして、次の45分間、サブネット計算機を使って、なぜ254台のホストを追加できないのかを疑問に思ってしまいます。
あなたは一人ではありません。IPv4サブネットの計算は、実際の数学は簡単ですが、バイナリ記法や「ビットワイズAND演算」といった用語を使って教えられるため、普通の人々はセラミックス業界に転職を検討するようになります。このガイドは、そのノイズを切り抜きます。最後まで、サブネットマスク、CIDR記法、なぜ /24 と /16 がまったく異なるものであるか、そしてホスト範囲をバイナリに変換せずに計算する方法を理解できます。そして、あなたの作業を確認する必要がある場合、 IPv4コンバーター は、面倒なネットワークアドレス計算をすべて代わりにしてくれます。
IPv4アドレスの実際の意味
IPv4アドレスは、4つの十進数グループ(オクテット)で書かれた32ビットの数です。 192.168.1.100 は、最初のオクテットに192、2番目のオクテットに168、3番目のオクテットに1、4番目のオクテットに100を意味します。各オクテットは0~255まで可能です。なぜなら、各オクテットは8ビットであり、2⁸ = 256の可能な値があるからです。
バイナリに触れず、理解すべきことは、すべてのIPv4アドレスが2つの論理的パートを持っているということです: ネットワーク 部分と ホスト 部分です。サブネットマスクが、どちらがどこから始まり、どこまで続くかを教えてくれます。
サブネットマスク:分離の線
サブネットマスクはIPアドレスとまったく同じように見えます: 255.255.255.0 は、最もよく見られるものです。内部では、常に1の連続した列が0の列に続くバイナリ形式です。これらの1はアドレスのネットワーク部分をカバーし、0はホスト部分をカバーします。
255.255.255.0 バイナリでは 11111111.11111111.11111111.00000000 — これは24の1です。これを 192.168.1.100 に適用すると、「最初の24ビット(192.168.1)はネットワーク部分であり、最後の8ビット(.100)はそのネットワーク内の特定のホストを識別します。これはちょうど /24 がCIDR記法で意味するものです。あなたが単に1の数を数えているだけです。
CIDR記法:同じこと、少ない書き方
CIDR(クラスレスドメインルーティング)は、すぐに忘れてしまうし、口に出すこともありませんが、ネットワークアドレスとそのマスクの省略記法です。
192.168.1.0/24 は次の通りです:
- ネットワークアドレス:
192.168.1.0 - サブネットマスク:
255.255.255.0(24ビットが1) - 利用可能なホスト範囲:
192.168.1.1に192.168.1.254 - 利用可能なホストの総数: 254(256から2を引く — ネットワークアドレスとブロードキャストが予約されている)
10.0.0.0/16 は次の通りです:
- ネットワークアドレス:
10.0.0.0 - サブネットマスク:
255.255.0.0(16ビットが1) - 利用可能なホスト範囲:
10.0.0.1に10.0.255.254 - 利用可能なホストの総数: 65,534
の / 番号は、「ネットワークとして固定されたビット数」を示します。残りのビットはホスト用に自由です。固定ビットが少ないほど、ホストが増えるため、サブネットが大きくなります。
なぜ/24は/16ではないか:実際の例
AWS上でVPCを作成しています。あなたは 10.0.0.0/24 を選択します。それは普通に見えるので、254の利用可能なIPを獲得します。4つのチームがあり、それぞれが50台のホストまで必要とします。あなたはそれを /26 に分割しようとし、予想以上にスペースが不足します。
そのとき、同僚が「なぜ/16を使わなかったの?」と尋ねて、消えてしまいます。 /16は65,534の利用可能なIPを提供し、256のサブネット(各254ホスト)または1,024のサブネット(各62ホスト)に分割できます。
10.0.0.0/16 はあなたのマスターネットワークであり、 /16 はその中に刻まれたサブネットです。 /24メンタルモデル:CIDRプレフィックス番号(
)が大きいほど、/24, /26, /28小さい ネットワークで、ホストが少ない。CIDRプレフィックス番号( )が小さいほど、/8, /16小さい 大きい ネットワークで、ホストが増える。これは直感的に理解できず、理解されたら永遠に明確になります。
ホスト数の計算式(バイナリなし)
この式はシンプルです:
利用可能なホスト数 = 2^(32 − プレフィックス) − 2
の 32 − prefix ビット数を示します。2をそのべき乗に上げて、総アドレス数を得ます。ネットワークアドレスとブロードキャストアドレスを2引いて、利用可能なホスト数を得ます。
- /24: 2⁸ − 2 = 254ホスト
- /25: 2⁷ − 2 = 126ホスト
- /26: 2⁶ − 2 = 62ホスト
- /28: 2⁴ − 2 = 14ホスト
- /16: 2¹⁶ − 2 = 65,534ホスト
これは、一般的なプレフィックスで頭の中で行えます。あるいは、完全にスキップして、 IPv4コンバーター を使って、瞬時に完全な分解を得ることができます。
一般的なサブネット参照表
この表をブックマークしてください。VPCまたはDockerネットワークを構成するたびに、この表に戻ってきます。
| CIDR | サブネットマスク | 合計アドレス数 | 使用可能なホスト数 | 一般的な用途 |
|---|---|---|---|---|
| /8 | 255.0.0.0 | 16,777,216 | 16,777,214 | 大規模なプライベートネットワーク |
| /16 | 255.255.0.0 | 65,536 | 65,534 | VPCマスターネットワーク |
| /20 | 255.255.240.0 | 4,096 | 4,094 | 大規模なAWS/GCPサブネット |
| /24 | 255.255.255.0 | 256 | 254 | 標準LAN、小規模サブネット |
| /25 | 255.255.255.128 | 128 | 126 | /24の半分 |
| /26 | 255.255.255.192 | 64 | 62 | 小規模チームサブネット |
| /27 | 255.255.255.224 | 32 | 30 | 非常に小規模なサブネット |
| /28 | 255.255.255.240 | 16 | 14 | ファイアウォール、NATゲートウェイ |
| /30 | 255.255.255.252 | 4 | 2 | ポイントツーポイントリンク |
| /32 | 255.255.255.255 | 1 | 1(それ自体) | 単一ホストルート |
実際のパターン:VPC、Docker、Kubernetes
AWS VPC
標準的なパターンは、 /16 マスターネットワーク(10.0.0.0/16)を可用ゾーンと目的(パブリック、プライベート、データ)に分割することです。これにより、最大256のサブネットで各254の利用可能なホストを得ることができ、ほとんどのアプリケーションに十分です。ワークロードが大きい場合は、 /24 可用ゾーンおよび目的(パブリック、プライベート、データ)ごとのサブネット。これにより、各サブネットに254の利用可能なホストを提供し、最大256のサブネットが可能になります。ほとんどのアプリケーションにはこれ以上は十分です。ワークロードが大きい場合は、 /20 サブネットを使用し、各サブネットに4,094ホストを提供します。
AWS固有の注意点:AWSは各サブネットに5つのIPアドレスを予約しており、標準の2つとは異なります。最初の4つのアドレスと最後の1つは、ネットワークアドレス、VPCルーター、DNS、将来の使用、およびブロードキャストそれぞれに予約されています。したがって、 /24 はAWSでは251の利用可能なIPを提供し、254ではありません。
Dockerネットワーク
Dockerのデフォルトブリッジネットワークは 172.17.0.0/16を使用します。カスタムネットワークを作成すると、Dockerはデフォルトで 172.16.0.0/12 範囲から割り当てます。明示的に上書きします:
docker network create --subnet=10.10.0.0/24 my-network
の /24 は意図的です — Dockerが1つの内部ネットワークであなたのすべてのアドレス空間を消費しないようにするためです。複数のDockerネットワークが互いに通信するか、VPN接続されたホストと通信する必要がある場合は、その範囲が重複しないように確認してください。
Kubernetes
Kubernetesは2つの異なるCIDR範囲を持っています: ポッドネットワーク (通常は 10.244.0.0/16 (Flannelの場合)または 192.168.0.0/16 (Calicoの場合)) および サービスネットワーク (通常は 10.96.0.0/12)。これらは互いに重複してはならず、ノードネットワークと重複してはなりません。もし重複している場合、ポッドがサービスに到達できないことやDNS解決が不一致になるため、品質の時間をデバッグに費やします。
Kubernetesネットワークを計画する際は、ポッドCIDR、サービスCIDR、ノードサブネットが重複していないことを、 IPv4コンバーター を使って確認してください。その後にHelmの値ファイルを書く前に、5分のネットワークアドレス計算が、後の1時間の kubectl exec デバッグを上回ります。
バイナリ数学が職業選択を疑問視させるIPv4サブネット
上記の概念は、ネットワーク設定を自信を持って行うために十分です。実装の詳細——「 172.31.32.0/20のホスト範囲は?」——が、多くの人が壁にぶつかり、サブネット計算機に頼ります。これは正しい直感です。
の IPv4コンバーター は、単一の入力からネットワークアドレス、ブロードキャストアドレス、ホスト範囲、サブネットマスク、CIDR記法をすべて提供します。IPアドレスとプレフィックスを貼り付け、VPC設定、セキュリティグループルール、またはファイアウォールの許可リストに必要なすべての情報を得ることができます。アカウントは不要で、無駄な話はありません。
タブに保存してください。あなたが予想以上に使うでしょう。
あなたも好きかもしれません
恵 スコアボードが到着しました!
スコアボード ゲームを追跡する楽しい方法です。すべてのデータはブラウザに保存されます。さらに多くの機能がまもなく登場します!
