Amazon VPC IPアドレス設計レシピ

Amazon VPC
154件のシェア(すこし話題の記事)

はじめに

AWSにはEC2やRDS、RedshiftなどVPCに対応したサービスが数多くあります。
これらのサービスを利用する場合、まずはVPCやサブネットを作成します。
VPCの作成ではIPアドレス(=CIDR)に何を指定するか迷う方が多いのではないでしょうか。
私がVPCとサブネットのCIDRを決める際に考慮しているポイントは、ざっと以下の通りです。

  • プライベートIPアドレス範囲から指定する
  • VPNやDirect Connect利用時はオンプレミスとの重複に注意する
  • VPCピア利用時はVPC間で重複できない
  • 将来の拡張に対応可能なCIDRを選択する
  • 最低でも/28以上が必要
  • CIDRブロックのうち、5IPは利用できない
  • ELBを配置するサブネットは/27以上のCIDRかつ、少なくとも8個の空きIPを用意する

それぞれの詳細をご紹介し、最後に優先順位をまとめます。

プライベートIPアドレス範囲から指定する

CIDRは以下のプライベートIPアドレスの範囲から指定します。
プライベートIPアドレスから外れるCIDRブロックも利用できますが、プライベートIPアドレスの利用が推奨されます。

  • 10.0.0.0 - 10.255.255.255 (10.0.0.0/8)
  • 172.16.0.0 - 172.31.255.255 (172.16.0.0/12)
  • 192.168.0.0 - 192.168.255.255 (192.168.0.0/16)

VPNやDirect Connect利用時はオンプレミスとの重複に注意する

オンプレミスで稼働している基幹システムを利用するために、インターネットVPNやDirectConnectを利用するケースがあります。
社内NWやデータセンターに設置されたDBサーバーのデータをAWSで利用するようなケースです。

VPNを利用する事で通信は暗号化されます。
DirectConnectでは閉域網で安全にデータをやり取りできます。また、インターネットVPNと比較すると安定して利用出来る傾向があります。
VPNやDirectConnectを利用すると、AWSはオンプレミスの延長として利用出来ます。通信はプライベートIPアドレスで行われます。

VPNやDirectConnectを利用する場合、サブネットとオンプレミスでCIDRの重複は許されません。
オンプレミスのNW管理者に相談し必要なサブネットの数やIP数から、CIDRを決定します。
ルーターのNATで対応する事も可能ですが、管理が面倒になるので重複しないようにします。

VPCピア利用時はVPC間で重複できない

VPCピア接続を行うと、VPC間でプライベートIPアドレスによる通信が出来ます。
CIDRブロックが一致または重複するVPC間では、VPCピア接続を作成出来ません。

VPCピア接続が見込まれる場合は、ピア接続を行うVPCのCIDRを確認しましょう。
将来のピア接続を見込んでVPCのCIDRは重複しないようにするとベターです。

将来の拡張に対応可能なCIDRを選択する

前述のVPN、DirectConnectの利用が見込まれない場合、CIDRの節約を意識しすぎる事は辞めましょう。
VPCは論理的に分離しているため、CIDRの節約を強く意識する必要はありません。

CIDRの節約を意識するあまり、IPアドレスが不足した場合はVPCの再作成とインスタンスの移行が必要になります。
EC2の場合はAMIを取得しインスタンスを再作成します。
アプリケーションの設定変更やサービス断が発生する可能性があります。またセキュリティグループの移行も必要です。
EC2を追加したいのにIPアドレスが足りないといった事態は避けたいですよね。
後述の利用可能なIP数を参照し、将来の拡張に対応可能なCIDRを選択します。
利用するIP数(=インスタンス数)にもよりますが、/24-/26程度のサブネットであれば安心出来ると思います。

最低でも/28以上が必要

VPCとサブネットのCIDRは、/16から/28の範囲で指定します。
最低でも/28以上が必要です。

CIDRブロックのうち、5IPは利用できない

サブネットのCIDRブロックのうち、5つは利用出来ません。
ネットワークアドレス、ブロードキャストアドレス、AWSの予約(ルーター、DNSサーバ、将来の利用)に使われます。
/28の場合ホスト部は4ビットですから、2の4乗-5=11ipを利用できます。
CIDRごとに利用可能はIP数をまとめます。

  • /28 11ip
  • /27 27ip
  • /26 59ip
  • /25 123ip
  • /24 251ip
  • /23 507ip
  • /22 1019ip
  • /21 2043ip
  • /20 4091ip
  • /19 8187ip
  • /18 16379ip
  • /17 32763ip
  • /16 65531ip

ELBを配置するサブネットは/27以上のCIDRかつ、少なくとも8個の空きIPを用意する

ELBは負荷に応じて、自動的にスケールアウトします。
スケールアウト時に空きIPアドレスを使用するため、余裕をもたせます。
CIDRは/27以上かつ、少なくとも8個の空きIPを用意する事が推奨されます。
CIDRを小さくとった場合、IPアドレスが枯渇しスケールアウト出来ない可能性があります。
/24程度とっておくと、目安の/27に対して十分に大きいですから安心出来ると思います。

CIDR決定の優先順位

理想的なCIDRブロックを考えます。
EC2の追加やELBのスケールアウトに対応できるIP数を利用でき、オンプレミスや既存のVPC、将来作成するVPCと重複しないブロックが理想だと考えます。
これら全ての条件を満たす事は難しい事が多いので、優先順位を考えます。

VPNやDirectConnectを利用する場合は、オンプレミスとの重複防止を第一に考えます。
NW管理者と相談してCIDRを決定しましょう。
全社的にプライベートIPアドレスの重複が無いように管理しているケースが多いので、拡張を意識しつつ最小限のブロックを使うケースが多いです。

VPNやDirectConnectの利用が見込まれない場合、小さくとる事は避けましょう。
VPCは論理的に分離していますし、将来的なEC2の追加やELBのスケールアウトに対応出来ないケースがあるためです。
将来のピア接続を見込んでVPCのCIDRは重複しないようにするとベターでしょう。

おわりに

オンプレミスのNW設計ではCIDR設計を特に慎重に行う必要があります。
私がオンプレミスのNW設計に携わっていた頃は、CIDRは限られたリソースといった認識でした。

AWSでもCIDR設計は気をつけて行う必要がありますが、オンプレミスとは考え方が異なります。
VPCの作り直しが無いように、しっかりとした設計をしていきたいです。

参考

AWS Cloud Roadshow 2017 福岡