NAT設定3部作の最後にUターンNATの紹介をします。
- 同一セグメント間でのUターンNAT
- セグメント超えのUターンNAT
UターンNATとは?
UターンNATは、宛先NATを利用して外部に公開している宛先NAT用のIPに対して、外部からではなく内部からアクセスするような構成で利用するNAT設定のことです。
- 内部のクライアントPC → 外部の宛先NAT用IP → 内部のサーバ
というように、一度出ていった通信がNAT変換によって戻ってくることからUターンNATやヘアピンNATと呼ばれます。このような設定は、インターネット上のDNSに登録されているドメインに対して、社外からも社内からも同じようにアクセスしたいというような場合に利用されます。
同一セグメントでのUターンNAT
UターンNATの構成は大きく2種類あります。1つ目は同一セグメントでのUターンNATです。
- クライアントPCは、nat-ip.acme.localの名前解決を行い、10.0.10.101宛に通信を開始します。
・送信元IP:10.0.20.10 → 宛先IP:10.0.10.101 - 10.0.10.101宛先IPは、FWの宛先NATにより10.0.20.138に変換されます。
・送信元IP:10.0.20.10 → 宛先IP:10.0.20.138(NAT変換) - このパケットが内部サーバに到達します。パケットを受け取った内部サーバは10.0.20.10にパケットを返しますが、同一セグメント上にクライアントPCがいるため、FWを経由せずに直接パケットをクライアントPCに返信してしまいます。しかし、クライアントPCは、10.0.10.101と通信しているため10.0.20.138から直接応答パケットが届いてもドロップします。このような三角ルーティングを防ぐために同セグメントでのUターンNATでは、送信元NAT設定も同時に行います。
・送信元IP:10.0.20.4(NAT変換) → 宛先IP:10.0.20.138(NAT変換) - このように送信元IPをFWのe1/2のIP(10.0.20.4)で送信元NATを行うことで、パケットを受け取った内部サーバは、パケットをFWに返信できます。
これを踏まえて、NATポリシー設定は以下のようになります。
- 送信元ゾーンはTrustゾーン、宛先ゾーンはNAT用宛先IPのあるUntrustゾーンになります。
- 送信元IPは、FWのe1/2のIFのIPに送信元NAT変換します。(Dynamic ip and port)
通信はデフォルトポリシーで許可されますので、セキュリティポリシーの設定は不要ですが、明示的に設定する場合のセキュリティポリシーは以下のようになります。
- セキュリティポリシーの宛先ゾーンはNAT変換後のゾーンになりますが、NAT変換後のゾーンはTrustゾーンです。つまり送信元ゾーン:Trust、宛先ゾーン:Trustなので、デフォルトで設定されているIntrazone-defaultポリシーで許可されます。
同一セグメント上でのUターンNAT設定を行う場合、三角ルーティングを防止するため送信元NATが必要となりますので、サーバ側から見ると送信元IPをレイヤ3レベルでは特定することができません。このような問題を防ぐ必要がある場合は、次項のセグメント超えの構成に変更する、内部DNSサーバを設置する、NATのDNS Rewite機能の利用する、などの対応を検討する必要があります。
セグメントが異なるUターンNAT
続いて、セグメントが異なる場合のUターンNATです。TrustゾーンにあるクライアントPCが、外部(Untrustゾーン)の宛先NAT用IPを経由して、DMZゾーンのサーバにアクセスする構成です。
セグメントを超える通信の場合、三角ルーティングは発生しません。そのため、ポリシーの設定は以下のようになります。
- NATポリシーは、同一セグメントでのUターンNATと同様ですが、構成上、三角ルーティングにならないので送信元NATは必要ありません。
- セキュリティポリシーの宛先ゾーンは、NAT変換後ですのでDMZゾーンになります。
UターンNAT設定を使う場面はあまり多くないと思いますが、そういえばこういう設定があったなと覚えておいていただければ幸いです。
コメント欄 質問や感想、追加してほしい記事のリクエストをお待ちしてます!
ありがとうございます。貴重な見聞の記事を拝読させていただきました。
質問がありコメントさせていただきました。
1つ目ですが、同一セグメントのUターンNATの図で、10.0.10.101はPaloAltoの中にありますが、いったん、Untrustのe1/1から出るのでしょうか。
2つ目ですが、同一セグメント内にPaloAltoを入れる場合でセキュリティルールを適用する場合、UターンNATで構築するものでしょうか。
感想ですが、大変、貴重な見聞だと思います。感謝いたします。
貴重なコメントをありがとうございます。
1つ目ですが、
・10.0.10.101はNAT用のIP(内部的なIP)となりますので内部で処理されます。
2つ目ですが、
・「同一セグメント内にPaloAltoを入れる場合でセキュリティルールを適用する場合」と言うのは、同一セグメント上にいる端末Aと端末Bの通信を直接行わずPaloAltoがパケットを仲介すると言うイメージでしょうか?
Internet —- [PA] —- [L2] —- [端末A]
|
|—— [端末B]
ご認識いただいている通り、同一セグメントにいる端末はそのままでは直接通信を行なってしまいますので、PAを経由するのであればPAで宛先NAT(UターンNAT)を行う必要があると思います。
また、L2側でPrivate Vlan機能を利用(同一セグメント間の直接通信を禁止)している環境の場合、ルーター側でProxy-ARPを使うことがあると思いますが、PAシリーズの場合はPrivate-Vlanを目的としたProxy-ARPをサポートしていないようなので、やはり、UターンNATを使用する構成になると思います。
一方で、static routeを設定するとPAがARP応答するようになる(≒ Proxy-ARP?)と言う記事が公式HPにありましたので、Private-VLANを利用している場合は、これでも解決できる可能性があります。(ARP応答はしても、ルータと異なりFW処理が必要になりますのでご要望通り動くかどうかは分かりませんが。。)
Stopping Unwanted Entries from Populating the ARP Table
お世話になっております。PA-220を使ってNW勉強している染谷といいます。(NW初心者です。。)
以下のNW構成においてセグメントが異なるNW(192.168.1.0/24)からPA配下の172.16.0.81/24(ラズパイ)へアクセスしたいのですが、UターンNATを使ったとしてもアクセス元端末のデフォルトゲートウェイがWAN側ルーター(192.168.1.1)へ向いていると、NATしてアクセスできないのではと思っておりますが、何か解決策はございますでしょうか。
【NW構成】
Internet(ISP)–ONUルーター(兼AP,DHCPサーバ)(192.168.1.1)–PA-220–eth1(192.168.1.2/24)
|
|–eth2(172.16.0.1/24)– ラズパイ(172.16.0.81/24)
今回実現したいことは、ONUルーターの無線LANに直接接続されたクライアント(192.168.1.0/24)からPA-220のeht2配下にあるラズパイ(172.16.0.81/24)にアクセスしたいです。しかし、ONUルーターに直接接続される各クライアントのデフォルトゲートウェイはONUルーター(192.168.1.1)を向いているため、内部に通信することができない状況です。
※ONUルーターはNUROから配布された家庭向けのルーターであり、スタティックルートを設定する機能もないため困っております。。接続元のクライアントにStatic Routeを手動設定する方法もありますが、現実的ではないためこの方法は断念しました。。
このようなNW構成においてUターンNATを使って 192.168.1.0/24のNWから172.16.0.81/24へアクセスする方法はありますでしょうか。
お世話になります。
ご質問の件ですが、PAで単純に1対1NATをするかたちではダメでしょうか?
1対1NATを利用してNAT用のIPを192.168.1.0/24と同じセグメントに設定することで、ONUルーターに接続されている端末からは同セグメントに見えるようになりますので、通信できるのではないかと思います。
1対1NATに関する記事もありますので参考にしていただければ幸いです。