クラウドセキュリティネットワーク

NGINXにおけるSNATの送信元IPアドレス選択について

NGINX PlusでSNATする際の、送信元IPアドレスを選択することができるかを確認しました。

はじめに

ブログをご覧いただきありがとうございます。
東京エレクトロンデバイスのJo Nishikawaです。
 
先日、お客様から以下のようなご質問をいただきました。
「NGINX Plusがインストールされているサーバーに、複数のIPアドレスが設定されている場合はSNATする際の送信元IPアドレスはどのように選択されるか?」
早速、調査したところ、proxy_bindディレクティブを使うことで設定ができそうだったので、
いつものようにAWS上で動作確認をすることにしました。
 

検証環境

準備したものは以下です。

  • NGINX Plus 1インスタンス(リクエストを受けてSNATするインスタンス、※構築済み)
  • NGINX 2インスタンス(アプリケーションサーバー、※構築済み)
作成した検証構成図が以下の画像です。
 

 

動作確認したいこと

  • NGINX Plusがインストールされているサーバーに複数のIPアドレスがある場合、どのように送信元IPアドレスが選択されるかを確認

 

検証
F5社のページを参考に検証を実施

STEP1:NGINX Plusインスタンスに複数IPアドレスを設定

  • EC2のコンソール画面にてセカンダリプライベート IPv4 アドレス(今回は172.31.1.100)を設定する

 

  • CLIからeth0:1に同一のIPアドレスを以下のコマンドで設定する

$ sudo ifconfig eth0:1 172.31.1.100/20

設定ができているかを以下の画像のように確認する

 

STEP2:proxy_bindディレクティブ設定を追加

  • default.confを編集し、proxy_bindの設定をする

$ vi /etc/nginx/conf.d/default.conf

※configは抜粋です

STEP3:テスト

  • アプリケーションサーバー01へアクセスを実施し、アプリケーションサーバー01にて送信元IPアドレス(NGINX Plus 01)を確認

 

  • アプリケーションサーバー02へアクセスを実施し、アプリケーションサーバー02にて送信元IPアドレス(NGINX Plus 01)を確認

 

まとめ

複数IPアドレスを持っているNGINXがどのように送信元IPを選択するか気にしたことがありませんでしたが、今回の検証で明示的に選択したい場合も設定で指定できることがわかりました。

また、今回設定したproxy_bindディレクティブですが、NGINX PlusだけではなくNGINX OSSでも同じように設定することが可能です。

今後も検証で得た知識などはブログに残していこうと思います!

この記事に関連する製品・サービス

この記事に関連する記事