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の設定

構成図に描くと以下のような感じです。

eigw-igw01

IGWとEIGWの両方を作成、同一VPCにアタッチします。

eigw-igw02

eigw-igw03

ルーティングテーブルでは、IPv4のデフォルトルート(0.0.0.0/0)をIGW、IPv6のデフォルトルート(::/0)をEIGWに向ければOKです。

eigw-igw04

動作確認

では、動作確認してみます。

$ 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を有効にして試してみてください!

参考URL