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設定を使う場面はあまり多くないと思いますが、そういえばこういう設定があったなと覚えておいていただければ幸いです。
コメント欄 質問や感想、追加してほしい記事のリクエストをお待ちしてます!