Azure上にPalo Altoを構築する場合、インターネットへ接続する際の送信元IPを複数使い分けたいケースがあります。
例えば、仮想マシンごとに異なるPublic IPからインターネットへ通信させたい場合、Palo AltoのSNAT設定とAzure側のNIC設定を組み合わせることで実現できます。
今回は、Azure上のPalo Altoに複数のPublic IPを設定し、送信元の仮想マシンごとに異なるPublic IPを使用してSNATできるか検証しました。
PANOS内ではNATポリシーやインターフェースなどの設定を投入していくことになりますが、その際の設定値についても調べてみました。
1.検証構成
今回の攻勢を図として表すと以下の通りです。

今回の構成では、Palo Altoのインターネット側インターフェース(ethernet1/1)に対応するAzure NICへ、2つのPrivate IPとPublic IPを設定します。
| Private IP | Public IP | |
|---|---|---|
| 1つ目 | 10.0.0.68 | 52.253.104.17 |
| 2つ目 | 10.0.0.69 | 20.89.82.79 |
また、内部にはテスト用の仮想マシンを2台用意します。
- テスト用VM1:172.16.0.4
- テスト用VM2:172.16.0.5
それぞれのVMからインターネット側のIISサーバへアクセスし、IISのアクセスログから実際に使用された送信元Public IPを確認します。
【参考】Azure上にPalo Altoを構築する手順

2.送信元の仮想マシンごとに異なるPublic IPを使用してSNATする
以下の流れで設定値の確認と疎通の確認を実施していきます。
- 1.eth1のNICにおけるAzure側の設定値を確認
- 2.paloalto内の設定値を確認
- 3.テスト用仮想マシン1からwebサーバ(IIS)に通信・IISのログを確認
- 4.テスト用仮想マシン2からwebサーバ(IIS)に通信・IISのログを確認
2-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)を利用するように設定を入れます。

2-2.テスト用仮想マシン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ポリシーで設定したルールがしっかりと適用されていることがわかります。
2-3.テスト用仮想マシン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ポリシーで設定したルールがしっかりと適用されていることがわかります。
3.結果のまとめ
今回試した内容から、
Azure上に構築したpaloaltoにおいて、インターネット側のインターフェースが複数の送信元IPを持つことができる
といったことがわかりました。
4.[追加検証] サブインターフェースを利用した構成について
サブインターフェースを利用して今回のインターネット側のインターフェースが複数の送信元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]としています。
5.まとめ
今回は、Azure上のPalo Altoに複数のPublic IPを設定し、送信元VMごとに異なるPublic IPを使用してSNATできるか検証しました。
結果として、以下の構成で正常に通信できました。
- Azure NICに複数のPrivate IP/Public IPを設定
- Palo Altoのethernet1/1に対応するIPを設定
- SNATで送信元VMごとにPrivate IPを指定
- インターネット側では、それぞれ対応するPublic IPを使用
Azure上のPalo Altoで送信元IPを使い分けたい場合は、この構成を利用できるかと思います。

