インターネット上にプライベートアドレスをもつサーバを公開する際に利用する1対1NATについて、よく利用される2つの設定をご紹介します。
- 1対1 NAT
送信元NATポリシーと宛先NATポリシーを個別に設定する方法です。 - Bidirectional(双方向)NAT
Bidirectional(双方向)オプションを有効にした送信元NATポリシーを設定する方法です。 - 双方向NATの仕組み
双方向NATを設定した際に、ファイアウォールの内部で何が起きているのかを解説します。
1対1 NAT
以下のような構成を考えます。
NATポリシーとセキュリティポリシーのルールは以下のようになります。
この設定方法は、非常に単純で送信元NATポリシーと宛先NATポリシーを分割して2行設定します。
- 1行目(送信元NAT)
設定方法はNAT設定その1で説明した送信元NATポリシーと基本的な考え方は変わりませんが、1対1NATはその名の通り、IPとIPを1対1で割り当てますので、送信元変換をstatic-ipで設定します。 - 2行目(宛先NAT)
こちらも同様ですが、宛先NATなのでゾーン設定に注意しましょう。IP単位でNATしますので宛先変換ではIPのみを指定します(ポート番号は指定しません)。
セキュリティポリシーも2行設定します。
- 1行目(送信元NAT用)
送信元NATを利用してインターネットにアクセスするためのセキュリティポリシーです。 - 2行目(宛先NAT用)
宛先NATによって、公開したサーバへのアクセスを許可するためのセキュリティポリシーです。セキュリティポリシーの宛先IPは、外部に公開しているNAT用のIPアドレスになります。また、1対1NATではIPのみを変換しポートの変換は行いません。そのため、セキュリティポリシー側でポート番号もしくはアプリケーションを指定して必要なアプリケーションに対してのみアクセスできるように設定してください。
設定としてはこれだけですので決して難しくはありませんが、サーバを1台を外部に公開するためにNATポリシーを2行各必要があります。また、宛先NATポリシーのゾーン設定は慣れないと直感的に理解しにくいため、例えば大量のサーバを公開するような場合NATポリシーの管理が複雑に感じる可能性があります。
次に紹介するBidirectional NAT(双方向NAT)を利用すると設定を簡素化できます。
Bidirectional NAT(双方向NAT)
Bidirectional NAT(双方向NAT)の設定について確認してみましょう。
構成は1対1NATと同一です(割愛します)。
双方向NATの場合、NATポリシーは以下のようになります。
(セキュリティポリシーは、1対1NATと同じになりますので割愛します)。
- 双方向NATでは、Bidirectional(双方向)オプションを有効にした送信元NATポリシーを1行だけ設定します。
- Bidirectional(双方向)オプションを有効にすることで、設定した送信元NATとは反対向きの宛先NAT設定が(内部的に)自動生成されます。
このように双方向NATを利用することで、NAT設定を1行にすることが出来ますし、設定するのは送信元NATだけですので、ゾーン設定も直感的に分かりやすく、設定および管理がしやすくなります。
双方向NATの仕組み
最後に双方向NATを設定した際、ファイアウォールの内部ではどのような設定になっているのかCLIを利用して確認してみましょう。
NATポリシーの確認を行うには「show running nat-policy」コマンドを利用します。
出力結果を見ると、GUI上では1行しか設定していないBidirectional NATという設定が同名で2つあることがわかります。この2つ目の“Bidirectional NAT; index: 2”が自動生成された宛先NATポリシーです。このように、送信元NATポリシーでBidirectional(双方向) オプションを有効にすると、GUI上には表示されませんが反対向きの宛先NATポリシーが内部的に自動生成されます。
admin@PA-VM> show running nat-policy
"Bidirectional NAT; index: 1" {
nat-type ipv4;
from Trust;
source 10.0.20.138;
source-region none;
to Untrust;
to-interface ;
destination any;
destination-region none;
service 0:any/any/any;
translate-to "src: 10.0.10.100 (static-ip) (pool idx: 1)";
terminal no;
}
"Bidirectional NAT; index: 2" { <---- 宛先NATポリシーが自動追加
nat-type ipv4;
from any; <---- 送信元ゾーンがanyになっている
source any;
source-region none;
to Untrust;
to-interface ;
destination 10.0.10.100;
destination-region none;
service 0:any/any/any;
translate-to "dst: 10.0.20.138";
terminal no;
}
"NAPT; index: 3" {
nat-type ipv4;
from Untrust;
source any;
source-region none;
to Trust;
to-interface ;
destination any;
destination-region none;
service 0:any/any/any;
translate-to "src: ethernet1/1 10.0.10.4 (dynamic-ip-and-port) (pool idx: 2)";
terminal no;
}
なお、双方向NATを利用する場合、以下の点を意識しておいてください。
- NATポリシー数
双方向NATを利用することでGUI上のポリシー数は半分になりますが、内部的には2行のNATポリシーが存在しています。設定できるNATポリシーの数が増えるわけでありません。 - 自動生成される宛先NATポリシーの送信元ゾーン
双方向NATによって自動生成される宛先NAT設定の送信元ゾーンはANYになります。(送信元NATの反対向きの宛先NATになるのでUntrust-to-Untrustになるはずですが、ANY-to-Untrustになっています。)
送信元ゾーンがANYとなっていることで、どの送信元ゾーンからNAT用IPにアクセスしても宛先NATの対象となります。
ネットワーク設計によっては特定の送信元ゾーンからのみNATを許可したいというケースもあると思います。そのような場合は双方向NATではなく、1対1NATで2行NATポリシーを設定することで、柔軟な設計が可能です。
コメント欄 質問や感想、追加してほしい記事のリクエストをお待ちしてます!