AWS Client VPN のクライアント CIDR は VPC の範囲と重複できない
AWS は作成時に Client VPN のプールを固定し、重複は未使用アドレスではなく範囲で決まります。構築前の五つの確認。
AWS Client VPN のエンドポイントは、選択したプールからクライアントアドレスを割り当て、AWS はエンドポイントを作成する前にそのプールを対象ネットワークと照合します。確認するのは、サブネットが空いて見えるかどうかではありません。プールが VPC の範囲と重複するかどうかであり、今日 EC2 インスタンスがそのアドレスを使っているかどうかで答えは変わりません。重複は範囲の問題であり、割り当ての問題ではありません。
五つの確認を順番に進めます。最初に失敗したところで止めてください。後続の手順で以前の決定を修復することはできません。
重複は範囲のテストであり、空きアドレスのテストではない
関連付けようとしているサブネットではなく、VPC の CIDR から始めます。172.20.0.0/22 のプールは 172.20.0.0/16 の VPC の内側にあり、どのサブネットも占有していなくても拒否されます。重複は範囲の性質であり、現在の割り当ての性質ではないからです。次に、エンドポイントが経路を向ける先を加えます。ピア VPC、トランジットゲートウェイ、サイト間接続経由のオンプレミス範囲です。クライアントが到達する必要のある範囲はすべて一覧に入れます。
記憶ではなくアカウントから集めます。aws ec2 describe-vpcs --query "Vpcs[].CidrBlock" に加え、関連付けるサブネットのルートテーブルエントリも確認します。
プールのサイズは構築前に決まる
AWS は Client VPN で /22 から /12 までの IPv4 クライアントプールを受け付けます。/24 は小さすぎ、/8 は文書化された範囲外です。どちらの誤りも、プールをワークロードのサブネットのように見積もることから生じます。想定同時接続クライアントに余裕を加えて見積もり、許可されたプレフィックスに丸めます。
コンソールに入力する前に計算を確認します。プレフィックスを打ち間違えると、警告なしにプールのサイズが変わります。
python3 -c "import ipaddress; p=ipaddress.ip_network('172.16.0.0/22'); print(p.num_addresses, p.prefixlen, p.overlaps(ipaddress.ip_network('172.20.0.0/16')))"これでアドレス数、プレフィックス長、候補が VPC の範囲と衝突するかどうかが出力されます。変更作業の終盤にネットマスクを考えるより速い方法です。
リゾルバーには独自のアドレスの役割がある
VPC リゾルバーは VPC 範囲のベースアドレスに二を加えたアドレスで応答し、それが関連付けたサブネットの内側にあるとは限りません。リゾルバーがクライアントプールに収まる必要があると仮定したり、そのアドレスの周りにサブネットを作ったりしても、何も変わらずオブジェクトが増えるだけです。重要なのは、エンドポイントがクライアントで適用できる DNS 設定を持ち、リゾルバーがトンネルから到達できることです。
リゾルバー、クライアントプール、関連付けたサブネットを、アドレス計画の中で 三つの別項目として記録します。これらは独立して失敗し、一つが正しいことは残り二つについて何も語りません。
作成時に確定する 四つのフィールド
クライアントの IPv4 CIDR は作成時に固定されます。DNS サーバーの変更、関連付けの追加、セキュリティグループの入れ替え、認可ルールの編集、スプリットトンネルルートの変更はすべて通常の編集であり、どれもプールの名前を変えません。この非対称性こそがレビューに値する理由です。安価な設定は後で変えたくなるもの、高価な設定は最初に確定するものです。変更作業を計画する前に、エンドポイントの説明を読んでください。
再構築を想定する前に、デプロイ済みのエンドポイントを確認します。aws ec2 describe-client-vpn-endpoints はプール、DNS、スプリットトンネルのフラグ、関連付けを 一つの応答で返すため、通常は再構築を除外するのに十分です。
エンドポイントは場当たり的に直さず置き換える
新しいエンドポイントは新しいエンドポイントであり、移行ではありません。既存のセッションは移動せず、クライアントプロファイルは別の名前を指し、当然と考えていた設定はすべて作り直す必要があります。サーバー証明書、認証、関連付け、ルート、認可グループ、ログです。必須のプライベートサービスと、拒否されるべき宛先に対して 一つのクライアントで検証してから、アクセスを広げます。省略したものは後でサポートチケットになります。
その検証が通るまで古いエンドポイントを稼働させ、新しいものに依存しない管理経路を確保します。
明記すべき境界が一つあります。これは IPv4 クライアントプールを対象としています。Client VPN のデュアルスタックと IPv6 のトラフィック設定は独自のアドレスモデルに従うため、そのモードのドキュメントを読まずにこのチェックリストを流用しないでください。