Azure上に構築したpaloaltoにおいて、[paloaltoにおけるインターネット側に面したインターフェース]に対応する仮想マシンのNICがNATされるときのインターフェースとして利用されます。
このとき、Azure上でパブリックIPを複数付与することで、paloaltoが複数のNATを構成することができるのかについて検証してみました。
paloalto内ではNATポリシーやインターフェースなどの設定を投入していくことになりますが、その際の設定値についてもどのようになるのか調べてみました。
検証した構成
今回利用する構成は、以下の以前の記事で作成した環境に、インターネット側のインターフェースに対応するNICにパブリックIPを追加した構成です。

図として表すと以下の通りです。

NATされたIPの確認(=送信元のIP)の確認はIISサーバへのアクセスログで確認していきます。
[検証] パブリックIPを複数付与して複数のNATを構成することができるのかを調べる
以下の流れで設定値の確認と疎通の確認を実施していきます。
- 1.eth1のNICにおけるAzure側の設定値を確認
- 2.paloalto内の設定値を確認
- 3.テスト用仮想マシン1からwebサーバ(IIS)に通信・IISのログを確認
- 4.テスト用仮想マシン2からwebサーバ(IIS)に通信・IISのログを確認
1.eth1のNICにおけるAzure側の設定値を確認
paloaltoのeth1に対応する仮想マシンのNICにおいて、[ip構成]に対して2つ目のプライベートIPと2つ目のパブリックIPが追加されていることを確認します。
※今回の構成では、eth1はインターネット向けのインターフェースとして設定しています。

【1つ目のIP】プライベートIP:10.0.0.68、パブリックIP:52.253.104.17
【2つ目のIP】プライベートIP:10.0.0.69、パブリックIP:20.89.82.79
2.paloalto内の設定値を確認
Azure側で追加されたプライベートIPをインターフェース設定で追加してPAN-OSに認識させます。

NATポリシーも各テスト用仮想マシンごとに異なるパブリックIP(ここではパブリックIPに紐づくプライベートIP)を利用するように設定を入れます。

3.テスト用仮想マシン1からwebサーバ(IIS)に通信・IISのログを確認
テスト用仮想マシン1からブラウザでIISサーバにアクセスし、paloaltoのログも確認します。

IIS側のログも確認します。

少し時間がずれていますが、52.253.104.17が送信元として確認でき、
【[172.16.0.4] は [10.0.0.68 (52.253.104.17)] でNATする】というNATポリシーで設定したルールがしっかりと適用されていることがわかります。
4.テスト用仮想マシン2からwebサーバ(IIS)に通信をする・IISのログを確認
同じように、テスト用仮想マシン2からもブラウザでIISサーバにアクセスし、paloaltoのログも確認します。

IIS側のログも確認します。

こちらでは、20.89.82.79が送信元として確認でき、
【[172.16.0.5] は [10.0.0.69 (20.89.82.79)] でNATする】というNATポリシーで設定したルールがしっかりと適用されていることがわかります。
結果のまとめ
今回試した内容から、
Azure上に構築したpaloaltoにおいて、インターネット側のインターフェースが複数の送信元IPを持つことができる
といったことがわかりました。
[追加検証] サブインターフェースを利用した構成について
サブインターフェースを利用して今回のインターネット側のインターフェースが複数の送信元IPを持つという構成ができないか?についても検証をしてみましたが、
サブインターフェースだけにIPを設定した構成では、テスト用仮想マシンからインターネットに対して通信ができませんでした。
正確には、以下の設定を入れたときに、最初は正常に通信が成立して通信ができるように見えるのですが、30分ほど時間がたつと通信ができなくなりました。
◆インターフェース設定(サブインターフェースだけにIPを設定した構成:通信NG)

◆NATポリシー設定(サブインターフェースだけにIPを設定した構成:通信NG)

補足ですが、サブインターフェースに仮想ルーターとゾーンの設定を入れると通信ができなかったので、上記設定では仮想ルーターとゾーンの設定は[none]として設定しています。
その後もいろんなパターンを試した結果、
ethernet1/1に1つ目のIPを紐づけ、そのサブインターフェースに2つ目以降のIPを紐づける構成ではテスト用仮想マシンからインターネットに対して通信が可能でした。
その時の設定値も載せておきます。
◆インターフェース設定(1つ目のパブリックIPはethernet1/1を利用した場合:通信OK)

◆NATポリシー設定(1つ目のパブリックIPはethernet1/1を利用した場合:通信OK)

この構成の場合にはNATポリシーで明示的なIPアドレスを指定しなくても通信が可能でした。
また、こちらの構成でもサブインターフェースの仮想ルーターとゾーンの設定は[none]としています。
さいごに
この検証を試す前まで「インターネット側のインターフェースが複数の送信元IPを持つことはできない」と思っていたので今回の結果には少し驚きました。
サブインターフェースを利用する場合の構成では「理由はよくわからないけれどもうまく通信はできている」といった構成を見つけることができましたが、少しもやもやが残る結果となりました。
今回は2つのIP付与を試しましたがさらに多くのパブリックIPを付与できるのかについては別途機会があれば試してみたいと思います。