Amazon VPCでEgress OnlyインターネットゲートウェイとIGWを併用する
ども、大瀧です。
VPCでIPv4/IPv6デュアルスタックを構成する場合、インターネットとの通信には双方向通信のインターネットゲートウェイ(以下IGW)と送信専用のEgress Onlyインターネットゲートウェイ(EIGW)を利用することができます。両方使うことってできるのかなぁと思い試したら動いたので、その様子をレポートします。
IGWとEIGWを併用する目的
- Elastic IPやPublic IPv4アドレスをアサインしてインターネットからIPv4で接続したい
- IPv6はインターネットへのEgress(送信)のみでIngress(受信)は不要
「IPv6の要件に無理があるのでは」と指摘されそうですが、最近のOSはデュアルスタック構成になっているとIPv6接続を優先することが多く、APTやNTPなど思わぬネットワーク接続がIPv6経由になることがあります。それぞれ設定でIPv6を無効にすることもできますが、全てのインターネット接続要件を洗い出すのは現実的ではありません。一方でEC2に割り当てられるIPv6アドレスはグローバルスコープのため、IGWを利用する場合セキュリティグループや他のファイヤーウォールによる保護が必要です。
VPCの設定
構成図に描くと以下のような感じです。
IGWとEIGWの両方を作成、同一VPCにアタッチします。
ルーティングテーブルでは、IPv4のデフォルトルート(0.0.0.0/0
)をIGW、IPv6のデフォルトルート(::/0
)をEIGWに向ければOKです。
動作確認
では、動作確認してみます。
$ ssh ubuntu@XX.XX.XX.XX Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-1032-aws x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage Get cloud support with Ubuntu Advantage Cloud Guest: http://www.ubuntu.com/business/services/cloud 25 packages can be updated. 0 updates are security updates. Last login: Tue Sep 5 06:51:04 2017 from YY.YY.YY.YY $ sudo grep systemd-timesyncd /var/log/syslog : Sep 4 15:45:08 localhost systemd-timesyncd[547]: Synchronized to time server [2001:67c:1560:8003::c8]:123 (ntp.ubuntu.com). Sep 4 15:55:19 localhost systemd-timesyncd[508]: Synchronized to time server [2001:67c:1560:8003::c8]:123 (ntp.ubuntu.com). Sep 4 16:00:39 localhost systemd-timesyncd[656]: Synchronized to time server [2001:67c:1560:8003::c7]:123 (ntp.ubuntu.com). Sep 4 16:10:26 localhost systemd-timesyncd[580]: Synchronized to time server [2001:67c:1560:8003::c8]:123 (ntp.ubuntu.com). Sep 4 21:31:41 localhost systemd-timesyncd[549]: Synchronized to time server [2001:67c:1560:8003::c7]:123 (ntp.ubuntu.com). Sep 4 21:44:53 localhost systemd-timesyncd[666]: Synchronized to time server [2001:67c:1560:8003::c7]:123 (ntp.ubuntu.com). Sep 4 22:25:27 localhost systemd-timesyncd[697]: Synchronized to time server [2001:67c:1560:8003::c7]:123 (ntp.ubuntu.com). Sep 5 00:44:24 localhost systemd-timesyncd[511]: Synchronized to time server [2001:67c:1560:8003::c7]:123 (ntp.ubuntu.com). : $
Public IPv4アドレスにSSHで接続し、システムログからIPv6でNTPサーバーと時刻同期している様子が確認できました。
まとめ
IPv4とIPv6でインターネット接続要件が異なる場合の構成例として、インターネットゲートウェイとEgress Onlyインターネットゲートウェイの併用構成をご紹介しました。デュアルスタック構成は頭で考えるより触って慣れる方が理解が早いと思うので、皆さんも検証環境などでVPCのIPv6を有効にして試してみてください!