はじめに
※本エントリーでは、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)を有効化させる方法について確認していきます。
- EC2にENIを複数(今回の場合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)を想定して試す機会はそう多くはないと思います。
次回は、本エントリーの内容を実際に試してみたいと思います。