NATの設定 その2(1対1NAT、双方向NAT)

インターネット上にプライベートアドレスをもつサーバを公開する際に利用する1対1NATについて、よく利用される2つの設定をご紹介します。

  • 1対1 NAT
    送信元NATポリシーと宛先NATポリシーを個別に設定する方法です。
  • Bidirectional(双方向)NAT
    Bidirectional(双方向)オプションを有効にした送信元NATポリシーを設定する方法です。
  • 双方向NATの仕組み
    双方向NATを設定した際に、ファイアウォールの内部で何が起きているのかを解説します。

1対1 NAT

以下のような構成を考えます。

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と同じになりますので割愛します)。

Bidirectional(双方向)オプションの有効化
  • 双方向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ポリシーを設定することで、柔軟な設計が可能です。

コメント欄 質問や感想、追加してほしい記事のリクエストをお待ちしてます!

タイトルとURLをコピーしました