TT Lab
はじめる
学ぶ 学習パス コース

ネットワーク基礎

アドレスを手で分けてみる

TT Labで続きを見る

目標

アドレス帯を分ける作業は、元に戻すのが最も難しい決定の1つです。VPCのアドレス帯は、作った後に縮小できず、サブネットは、中にリソースがあると削除できません。最初の30分で決めたことが、数年続きます。

ここでは、計算機を使わず、境界と長さで答えを出します。

用意するもの

/opt/lab/netplan/allocations.txt   사내 대역 배정표
/opt/lab/netplan/routes.txt        어느 라우터의 표

先に、作業ディレクトリに持ってきます。

mkdir -p /root/netplan && cp /opt/lab/netplan/* /root/netplan/ && cd /root/netplan

残すもの

01-here.txt     내 주소·프리픽스·기본 경로
02-split.txt    /16 을 나눈 계획
03-overlap.txt  겹치는 짝
04-longest.txt  세 목적지가 가는 길
05-usable.txt   크기별로 실제 쓸 수 있는 수

自分は今どこにいるのか

このPodのIPv4アドレスとプレフィックス、そしてデフォルト経路を01-here.txtに残し、そのプレフィックスがどういう意味かを1行書いてください。

ip -4 -o addr showとip routeを使います。

プレフィックスが/32なら、同じアドレス帯にネイバーが1つもいないという意味です。それでも外へ出られるのは、scope linkの経路が別にあるからです。

境界に合わせて分ける

10.20.0.0/16を、/18の4つに分け、最初の3つを3つのAZに割り当ててください。各AZの最初の/24をパブリックサブネットとして確保します。4つ目の/18は残し、なぜ残すのかを書いてください。結果は02-split.txtに書きます。

python3 -c "import ipaddress as ip; print([str(n) for n in ip.ip_network('10.20.0.0/16').subnets(new_prefix=18)])"

各/18の最初の/24は、その/18の開始アドレスに/24を付けたものです。

4つ目を残す理由を書いてください。VPCのアドレス帯は、後から拡張するのが面倒で、AZが1つ増えたり用途が1つ増えたりするときに、付け足す場所がないと、別のアドレス帯を持ってくる必要があります。

重なるペアを探す

allocations.txtから、互いに重なるアドレス帯のペアをすべて探して03-overlap.txtに書き、重なると何が妨げられるのかを1行付け足してください。

ipaddress.ip_network(a).overlaps(ip_network(b))で、すべてのペアを調べます。

重なるペアは2つです。重ならないものを入れてはいけません。重ならないのに重なると報告すると、問題のないアドレス帯を取り直すことになります。

順序ではなく長さが決める

routes.txtを見て、10.20.4.200・10.20.9.5・172.20.1.1が、それぞれどの経路で出ていくかを04-longest.txtに書いてください。次のホップのアドレスまで書きます。

カーネルは、表の順序を見ません。合う経路が複数あれば、プレフィックスが最も長いものを選びます。

10.20.4.200は/24と/25の両方に合います。10.20.9.5はscope linkの経路に合いますが、それはゲートウェイを経由しないという意味です。

実際に使える数

/24 · /25 · /26 · /28のそれぞれについて、全アドレス数と、クラウドが5つを予約した後で実際に使える数を、05-usable.txtに表で書き、その5つがどこへ行くのかを1行付け足してください。

全体は2^(32-프리픽스)です(プレースホルダーはプレフィックスです)。ほとんどのクラウドが、サブネットごとに5つを持っていきます。ネットワークアドレス、ゲートウェイ、DNS、予備、ブロードキャストです。

小さなサブネットほど、この損失の割合が大きくなります。/28は、16個のうち5つが消えます。

使える範囲はどこまでか

プライベートとして使えるアドレス帯をすべて06-private.txtに書き、allocations.txtの各アドレス帯がどのプライベートアドレス帯に入るかを示してください。そして、どの場所を避けるべきかを1行付け足してください。

RFC 1918が3つで、ここにRFC 6598が定めたアドレス帯がもう1つあります。プライベートではありませんが、インターネットでルーティングされないので、社内で使えます。

避けるべき場所もあわせて書いてください。10.0.0.0/16と192.168.0.0/24は、誰もが最初に選ぶアドレス帯なので、いつかつなぐ必要が出る相手と重なる確率が最も高いです。

表ではなくルールを残す

次の人が文書を見なくても、自分でアドレス帯を選べるルールを、07-decide.mdに書いてください。リージョン・AZ・用途の3つの単位それぞれに、どんなサイズを使うかと、なぜ余裕を持って確保するのかを一緒に書きます。

「どのチームがどのアドレス帯を使う」という表は、すぐに古くなります。代わりに、「リージョンごとに/16、AZごとに/20、用途ごとに/24」のようにルールを書いておけば、表を見なくても衝突しません。

なぜ大きく確保するのかも書いてください。IPはタダで、不足は高くつきます。Podごとに1つずつIPを使うコンテナネットワークをつなぐ瞬間に、/24は底をつきます。