[VPC Ingress Routing]IGWとVGWにルートテーブルをアタッチ!全ての通信をEC2経由へ。サードパーティIDS製品などの通信をシンプルに #reinvent

2019.12.04

コンニチハ、千葉です。

全ての通信をIDS/IPSやfirewallなどのサードパーティ製品を通したい場合、今まではオンプレミスに一度ルーティングし、検査するような構成が必要でした。構成が複雑になり運用管理が大変になる要因でした。今回のアップデートにより、IGWとVGWに対しルートテーブルを割り当てることが可能になります。これにより、IGW(またはVGW)の通信全てをEC2のENIにルーティングすることができるようになります。

やってみた

作業サマリです。VPC、サブネット、IGW、EC2、ルートテーブルは作成している前提で進めます。

  1. IGWに対しルートテーブルをアタッチ(パブリック2サブネットのCIDRをENI0へルーティング)
  2. パブリックサブネット1のルートテーブルを変更(0.0.0.0/0をIGWへルーティング)
  3. パブリックサブネット2のルートテーブルを変更(0.0.0.0/0をENI0へルーティング)
  4. 通信を中継するEC2の「送信元/送信先のチェック」を無効化
  5. パブリック2のEC2へSSHし接続できることを確認

早速設定して動作確認してみます。まずはIGWに対しルートテーブルをアタッチします。

IGWにアタッチしたルートテーブルに対し、パブリック2サブネットのCIDRをENI0へルートする設定を入れます。

パブリックサブネット1のルートテーブルに0.0.0.0/0をIGWを追加します。

パブリックサブネット2のルートテーブルに対し、0.0.0.0/0をEC2のENI0へルートする設定を入れます。

通信を中継するEC2の「送信元/送信先のチェック」を無効化します。

パブリック1に配置している(通信を経由させる)EC2に対して、パケットのフォワードを有効化します。今回は何も入っていなEC2を指定しているので設定しました。MarketPlaceから起動したアプライアンスの場合は作業不要です。

$ sudo sysctl -w net.ipv4.ip_forward=1
$ sudo sysctl -w net.ipv6.conf.all.forwarding=1

これで設定は完了です!パブリックサブネット2に起動しているEC2のパブリックIPアドレスにSSHしてみます。

$ ssh -i ~/Downloads/key-ohaio-chiba.pem ec2-user@xx.xx.xx.xx(パブリック2に配置しているEC2のパブリックアドレス)
Last login: Wed Dec  4 03:46:15 2019 from wsip-24-120-53-73.lv.lv.cox.net

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/

SSHできました!!!!

最後に

このアップデートにより、IGWやVGWの間にEC2インスタンスを配置し、通信をフックして制御できるようになりました。プロキシ、ファイアウォール、IDP/IPSなど を配置してもシンプルな通信経路で設定することができるようになりました。とっても最高なアップデートでした!

参考