はじめに

※本エントリーでは、AWS側での操作を想定する場合はENI、OS側での操作を想定する場合はNICと表現いたします。

皆さんは送信元となる一台のEC2から、送信元IPを複数にしたい場面はないでしょうか?

  • マルチホームネットワーク的に、単一のEC2インスタンスを複数のVPCやサブネットに接続する必要がある場合
    • 各ネットワーク経由の通信に別々のIPアドレスを使用させる
  • コンテナベースのアプリケーションでコンテナごとに独自のIPアドレスを必要とする場合
  • ネットワークの冗長性を確保したい時
    • (こちらは送信元IPを複数にしたいというより、可用性を高めたいという目的ですが…)
    • 一つのNICが障害に陥っても、別のNICを使って通信を継続させたい

私の場合、以下のような場面で、送信元となる一台のEC2から送信元IPを複数にしたい場面がありました。

送信元IPごとに、異なるNetworkFirewallのルールグループを適用させたい

上記のように、NetworkFirewallから見た送信元IPごとに、
適用させるルールグループを分けたい時がありました。

上記の構成自体は問題なくできそうですが、本番環境への適用前などのテストとして、
事前にIPごとのNetworkFirewallのルールグループが適用されるか確認したい時、
NetworkFirewallから見た時の送信元IPの数だけ、EC2を構築し、確認するのは面倒です。

一台のEC2であっても、そのEC2に複数のNIC(ENI)を付与することで、
NetworkFirewallから見た時の送信元IPを複数に見せる方法を考えます。

※本エントリーでは実際の設定は行いません。実際の設定については、次回のエントリーで実施いたします!

こうすればできそう

構成としては上記のようなイメージです。

一台のEC2に対し、複数のENIをアタッチすることで、NetworkFirewallから見た時の送信元IPを複数にします。

EC2側で、送信元IPをxx.xx.xx.xx/32の時と、yy.yy.yy.yy/32の時に切り替えることで、
NetworkFirewall側のルールグループがIPごとのルールで適用されるかを確認する方法となります。

作業概要

複数のENI(NIC)を有効化させる方法について確認していきます。

  1. EC2にENIを複数(今回の場合2つ)付与する
  2. EC2のOS側の設定にて、NICの切り替え(有効化/無効化)を行う

2番については、OS(Windows or Linux系)ごとにやり方が異なりますので、それぞれ見ていきます。

Windowsの場合

コントロールパネル -> ネットワークとインターネット -> ネットワーク接続から、

ネットワークアダプタの有効化/無効化を行うことで、IPの切り替えができそうです。

Linux(ubuntu)の場合

方法はいくつかありますが、nmcliコマンドを利用する方法で検討します。

  • nmcli connection show
    • アクティブになっているNIC情報を確認
  • nmcli connection down ‘nic a’
    • アクティブになっているNICを無効化
  • nmcli connection up ‘nic b’
    • もうひとつのNICを有効化

※上記はあくまで現時点の考察段階です。
次回のエントリーでやり方が変更となる可能性がありますので、ご了承ください。

まとめ

今回は、一台のEC2で複数の送信元IPを設定したい場合について考えました。

一台のコンピュータ(EC2)に複数のNIC(ENI)を付与すること自体は単純な設定かと思いますが、
実際のユースケース(今回の場合NetworkFirewall)を想定して試す機会はそう多くはないと思います。

次回は、本エントリーの内容を実際に試してみたいと思います。