0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWSのEC2/Linuxインスタンスで同一サブネットに2つのNICを差しそれぞれにElasticIPを設定する時のカーネルパラメーター

Posted at

AWSのEC2/Linuxインスタンスで同一サブネットに2つのNICを差し、それぞれにElasticIPを設定

異なる経路で応答しないようにひと工夫必要。大昔にロードバランサーを組んだときのおぼろげな記憶とgeminiさんによる支援で設定。

構成

下記のような構成。

EIP-1 -> ENI-1 (172.16.0.1/24)
                   \
              EC2インスタンス
                   /
EIP-2 -> ENI-2 (172.16.0.2/24)

先々EIP-1,EIP-2は同一サブネットの異なるEC2インスタンスに割り当てる予定。
送信先によるアクセスフィルタリングをしているような接続元からの疎通確認用にEC2インスタンスを仮設。
LinuxではIPアドレスは特定のインターフェースに割り当てるというよりシステム全体に割り当てられる。
よって柔軟なままのデフォルト設定ではEIPがばらけてしまう模様。

カーネルパラメーター

結果として設定したのは以下のパラメーター。

cat /etc/sysctl.d/50-rp_filter
net.ipv4.conf.all.arp_ignore=1
net.ipv4.all.arp_announce=2
net.ipv4.conf.all.rp_filter=2
net.ipv4.conf.default.rp_filter=2

前提として、ip routeでポリシーベースのルーティングができてしまうような柔軟な設計になっています。
一方で、IP割当をインターフェースに縛りたいロードバランスや仮想IP割当の場合には逆に厄介で今回のような設定が必要。

まず、arp_ignoreでARPリクエスト受信の際にリクエストされたIPアドレスが設定されているインターフェースのみに応答を限定。
さらにarp_anounceでARPリクエストを送信する際に自身のIPアドレスのみに限定。

そうした上でrp_filterでインターフェースとIPの不一致をフィルターして捨てることで整合を保つ。

やってみて

素直にEC2を2つ立てたほうが速かった説

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?