NAT設定

動作確認バージョン:vSRX Version22.4R1
ファイアウォール(vSRX) は、NAT(ネットワークアドレス変換)設定が可能です。ここでは、vSRXで送信元IPアドレスを変換する機能ならびに、宛先IPアドレスを変換する機能の設定例を紹介します。

送信元IPアドレスのNAT

特定の送信元IPアドレスからの通信を指定して送信元IPアドレスをNATします。

サンプル設定のシナリオ

  • trustゾーンからuntrustゾーン向けのパケットに対してNATしたい
  • 送信元IPアドレス192.168.2.11を192.168.3.200に変換したい
vsrx_nat_fig1

シナリオにおける設定のながれ

1.NAT変換に利用するプール名を POOL1 に設定し変換アドレスとして 192.168.3.200 を設定
2.trustゾーンからuntrustゾーンに通信するパケットに対してNATを設定
3.送信元NATに利用するルールセットを RULE 、ルールを RULE1-1 として設定
4.変換対象になる送信元IPアドレス(192.168.2.0/24)を設定
5.変換後の送信元IPアドレスとして POOL1 をルールに適用

注釈

no-translation 」コマンドについては、ポート番号を変更しないでNATする設定になります。ポート番号を変更しない場合、IPアドレスとポート番号のペアがすでに利用されていると使えない状態になりますのでNAT POOLアドレスを充分な数をご準備ください。アドレスが準備できない場合は、送信元IPアドレスのNAPT をご参照いただきご検討ください。
proxy-arp 」コマンドについては、送信元IPアドレスを変換する際に、インターフェイスに割り当てられていないIPアドレスで変換すると、対向装置がARP解決要求した時に、応答しない状態が発生し通信できなくなる状況が発生します。それを回避するために、実際に設定されていないIPアドレスのARP要求に応答するため設定をしています。

CLIにて入力するコマンド

user01@vSRX-02# set security nat source pool POOL1 address 192.168.3.200/32
user01@vSRX-02# set security nat source pool POOL1 port no-translation
user01@vSRX-02# set security nat source rule-set RULE from zone trust
user01@vSRX-02# set security nat source rule-set RULE to zone untrust
user01@vSRX-02# set security nat source rule-set RULE rule RULE1-1 match source-address 192.168.2.0/24
user01@vSRX-02# set security nat source rule-set RULE rule RULE1-1 then source-nat pool POOL1
user01@vSRX-02# set security nat proxy-arp interface ge-0/0/2.0 address 192.168.3.200/32

正しく設定が完了したときのコンフィグレーションは次のとおりです。

security{
       nat {
           source {
               pool POOL1 {
                   address {
                       192.168.3.200/32;
                   }
                   port {
                       no-translation;
                   }
               }
               rule-set RULE {
                   from zone trust;
                   to zone untrust;
                   rule RULE1-1 {
                       match {
                           source-address 192.168.2.0/24;
                       }
                       then {
                           source-nat {
                               pool {
                                   POOL1;
                               }
                           }
                       }
                   }
               }
           }
           proxy-arp {
               interface ge-0/0/2.0 {
                   address {
                       192.168.3.200/32;
                   }
               }
           }
       }
}

動作確認結果

検証構成図のサーバーインスタンス(192.168.2.11)からサーバーインスタンス(192.168.3.13)宛ての通信を実施した際にvSRX-02で192.168.3.200に変換されていることが確認できますので、送信元IPアドレスに対するNATが機能していることを確認できました。

サーバーインスタンス(192.168.2.11)からサーバーインスタンス(192.168.3.13)宛の通信確認結果

user01@ubuntu:~$ ping -c 5 192.168.3.13
PING 192.168.3.13 (192.168.3.13) 56(84) bytes of data.
64 bytes from 192.168.3.13: icmp_seq=1 ttl=63 time=3.97 ms
64 bytes from 192.168.3.13: icmp_seq=2 ttl=63 time=1.42 ms
64 bytes from 192.168.3.13: icmp_seq=3 ttl=63 time=1.25 ms
64 bytes from 192.168.3.13: icmp_seq=4 ttl=63 time=1.38 ms
64 bytes from 192.168.3.13: icmp_seq=5 ttl=63 time=1.25 ms

--- 192.168.3.13 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 1.250/1.856/3.971/1.060 ms

vSRXでNAT動作の確認結果

user01@vSRX-02> show security flow session
Session ID: 107, Policy name: default-permit/5, Timeout: 1786, Valid
  In: 192.168.2.11/33606 --> 192.168.3.13/22;tcp, Conn Tag: 0x0, If: ge-0/0/1.0, Pkts: 33, Bytes: 4127,
  Out: 192.168.3.13/22 --> 192.168.3.200/33606;tcp, Conn Tag: 0x0, If: ge-0/0/2.0, Pkts: 29, Bytes: 4979,
Total sessions: 1

宛先IPアドレスのNAT

特定の宛先IPアドレスへの通信に対して宛先IPアドレスをNATします。

サンプル設定のシナリオ

  • untrustゾーンから入力するパケットに対してNATしたい
  • 192.168.3.102宛ての通信は192.168.2.11にNATして通信させたい
vsrx_nat_fig2

シナリオにおける設定のながれ

1.NAT変換に利用するプール名を POOL1 に設定し変換アドレスとして 192.168.2.11 を設定
2.untrustゾーンからのパケットに対してNATを設定
2.宛先NATに利用するルールセットを RULE1 、ルールを RULE1-1 として設定
3.変換対象になる宛先IPアドレスを設定
4.変換後の宛先IPアドレスとして POOL1 を設定

CLIにて入力するコマンド

user01@vSRX-02# set security nat destination pool POOL1 address 192.168.2.11/32
user01@vSRX-02# set security nat destination rule-set RULE1 from zone untrust
user01@vSRX-02# set security nat destination rule-set RULE1 rule RULE1-1 match destination-address 192.168.3.102/32
user01@vSRX-02# set security nat destination rule-set RULE1 rule RULE1-1 then destination-nat pool POOL1

正しく設定が完了したときのコンフィグレーションは次のとおりです。

security {
        nat {
            destination {
                pool POOL1 {
                    address 192.168.2.11/32;
                }
                rule-set RULE1 {
                    from zone untrust;
                    rule RULE1-1 {
                        match {
                            destination-address 192.168.3.102/32;
                        }
                        then {
                            destination-nat {
                                pool {
                                    POOL1;
                                }
                            }
                        }
                    }
                }
            }
        }
}

動作確認結果

検証構成図のサーバーインスタンス(192.168.3.13)からvSRX-02(192.168.3.102)宛ての通信がNATされて192.168.2.11に対して通信が成功しておりますので、宛先IPアドレスに対するNATが機能していることが確認できました。

サーバーインスタンス(192.168.3.13)からvSRX-02(192.168.3.102)への通信結果

user01@ubuntu:~$ ssh user01@192.168.3.102
user01@192.168.3.102's password:
Thanks for using Official Template (Ubuntu).
(省略)
Last login: Mon Sep 18 09:46:49 2017 from 192.168.2.102
$

vSRX-02でNAT動作の確認結果

user01@vSRX-02> show security flow session
Session ID: 2026, Policy name: POL1/6, Timeout: 1800, Valid
  In: 192.168.3.13/56922 --> 192.168.3.102/22;tcp, Conn Tag: 0x0, If: ge-0/0/2.0, Pkts: 118, Bytes: 9159,
  Out: 192.168.2.11/22 --> 192.168.3.13/56922;tcp, Conn Tag: 0x0, If: ge-0/0/1.0, Pkts: 97, Bytes: 14543,
Total sessions: 1

user01@vSRX-02>

送信元IPアドレスのNAPT

特定の送信元IPアドレスからの通信に対して送信元IPアドレスをNAPTします。

サンプル設定のシナリオ

  • trustゾーンからuntrustゾーン向けのパケットに対してNAPTしたい
  • 送信元IPアドレス192.168.2.11を出力インターフェイスのIPアドレスに変換したい
vsrx_nat_fig3

シナリオにおける設定のながれ

1.trustゾーンからuntrustゾーンに対してNAPTを設定
2.送信元IPを変換するためのNAPTルールセットを RULE1、ルールを RULE1-1 として設定
3.NAPT対象の送信元IPアドレス(192.168.2.11/32)を設定
4.変換後のIPアドレスを 出力インターフェイス のアドレスに設定

CLIにて入力するコマンド

user01@vSRX-02# set security nat source rule-set RULE1 from zone trust
user01@vSRX-02# set security nat source rule-set RULE1 to zone untrust
user01@vSRX-02# set security nat source rule-set RULE1 rule RULE1-1 match source-address 192.168.2.11/32
user01@vSRX-02# set security nat source rule-set RULE1 rule RULE1-1 then source-nat interface

正しく設定が完了したときのコンフィグレーションは次のとおりです。

security {
       nat {
           source {
               rule-set RULE1 {
                   from zone trust;
                   to zone untrust;
                   rule RULE1-1 {
                       match {
                           source-address 192.168.2.11/32;
                       }
                       then {
                           source-nat {
                               interface;
                           }
                       }
                   }
               }
           }
       }
}

動作確認結果

検証構成図のサーバーインスタンス(192.168.2.11)から192.168.3.13宛ての通信を実施した際にvSRX-02で192.168.3.102に変換されていることが確認できますので、送信元IPアドレス(192.168.2.11)に対するNAPT機能が確認できました。

サーバーインスタンス(192.168.2.11)からサーバーインスタンス(192.168.3.13)への通信結果

user01@ubuntu:~$ ping -c 5 192.168.3.13
PING 192.168.3.13 (192.168.3.13) 56(84) bytes of data.
64 bytes from 192.168.3.13: icmp_seq=1 ttl=63 time=3.59 ms
64 bytes from 192.168.3.13: icmp_seq=2 ttl=63 time=1.13 ms
64 bytes from 192.168.3.13: icmp_seq=3 ttl=63 time=0.807 ms
64 bytes from 192.168.3.13: icmp_seq=4 ttl=63 time=1.21 ms
64 bytes from 192.168.3.13: icmp_seq=5 ttl=63 time=1.33 ms

--- 192.168.3.13 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4003ms
rtt min/avg/max/mdev = 0.807/1.619/3.598/1.004 ms

vSRX-02でNAPT状態の確認結果

user01@vSRX-02> show security flow session
Session ID: 1443, Policy name: default-permit/5, Timeout: 1798, Valid
  In: 192.168.2.11/33578 --> 192.168.3.13/22;tcp, Conn Tag: 0x0, If: ge-0/0/1.0, Pkts: 119, Bytes: 9067,
  Out: 192.168.3.13/22 --> 192.168.3.102/17879;tcp, Conn Tag: 0x0, If: ge-0/0/2.0, Pkts: 101, Bytes: 15447,
Total sessions: 1

user01@vSRX-02>

宛先IPアドレスとポート番号のNAPT

特定の宛先IPアドレスとポート番号に該当する通信を指定したIPアドレスとポート番号へ変換するNAPT設定を行います。

サンプル設定のシナリオ

  • 192.168.3.13から宛先192.168.3.102の TCP:2222 宛ての通信を192.168.1.11の TCP:22 宛ての通信に変換したい
  • untrustゾーンから入力するパケットに対してNAPTしたい
vsrx_nat_fig4

シナリオにおける設定のながれ

1.NAT変換で利用するプール名を POOL2 に設定し変換アドレスとして 192.168.1.11:22 を設定
2.宛先NATルールセットを RULE1 として設定
3.untrustゾーンからのパケットに対してNAPTを設定
4.アドレス変換対象であるIPアドレス(192.168.3.102)とポート2222番あてのNAPTルールを RULE1-1 として設定
5.変換後の宛先IPアドレスとして POOL2 を設定

CLIにて入力するコマンド

user01@vSRX-02# set security nat destination pool POOL2 address 192.168.1.11/32 port 22
user01@vSRX-02# set security nat destination rule-set RULE1 from zone untrust
user01@vSRX-02# set security nat destination rule-set RULE1 rule RULE1-1 match destination-address 192.168.3.102/32
user01@vSRX-02# set security nat destination rule-set RULE1 rule RULE1-1 match destination-port 2222
user01@vSRX-02# set security nat destination rule-set RULE1 rule RULE1-1 then destination-nat pool POOL2

正しく設定が完了したときのコンフィグレーションは次のとおりです。

security {
       nat {
           destination {
             pool POOL2 {
                   address 192.168.1.11/32 port 22;
             }
             rule-set RULE1 {
                 from zone untrust;
                 rule RULE1-1 {
                       match {
                           destination-address 192.168.3.102/32;
                           destination-port {
                               2222;
                           }
                       }
                       then {
                           destination-nat {
                               pool {
                                   POOL2;
                               }
                           }
                       }
                   }
             }
           }
       }
}

動作確認結果

検証構成図のサーバーインスタンス(192.168.3.13)からvSRX-02(192.168.3.102)ポート2222番宛ての通信がNAPTされて 192.168.1.11ポート22番に対してSSH通信が成功しておりますので、宛先IPアドレスとポート番号のNAPTが機能していることが確認できました。

サーバーインスタンス(192.168.3.13)からサーバーインスタンス(192.168.1.11)への通信結果

user01@ubuntu:~$ ssh user01@192.168.3.102 -p 2222
user01@192.168.3.102's password:
Thanks for using Official Template (Ubuntu).
(省略)
Last login: Mon Sep 18 15:49:53 2017 from 192.168.3.13
$

vSRX-02でNAPT動作の確認結果

user01@vSRX-02> show security flow session
Session ID: 459, Policy name: POL1/6, Timeout: 1800, Valid
  In: 192.168.3.13/37106 --> 192.168.3.102/2222;tcp, Conn Tag: 0x0, If: ge-0/0/2.0, Pkts: 201, Bytes: 13403,
  Out: 192.168.1.11/22 --> 192.168.3.13/37106;tcp, Conn Tag: 0x0, If: ge-0/0/0.0, Pkts: 179, Bytes: 27191,
Total sessions: 2

user01@vSRX-02>

宛先NAPTと送信元IPアドレスNAPTの組み合わせ設定

サンプル設定のシナリオ

  • 192.168.3.13から宛先192.168.3.102のTCPポート2222番あての通信は192.168.2.12を宛先にしたい
  • 192.168.3.13から宛先192.168.3.102のTCPポート22番あての通信は192.168.1.11を宛先にしたい
  • インターフェイス(ge-0/0/2)に入力するトラフィックに対して宛先NATをしたい
  • 送信元IPアドレス192.168.3.0/24を送信元にするパケットをNAPTしたい
  • trustゾーンの各インターフェイス(ge-0/0/0,ge-0/0/1)から出力されるパケットの送信元IPアドレスをインターフェイスアドレスに変換したい
vsrx_nat_fig5

シナリオにおける設定のながれ

  • 送信元IPアドレスに対するNAPT設定
1.untrustゾーンからtrustゾーンに対してNAPTを行う設定
2.送信元IPを変換するためのルールセット名を SNAT_RULE に設定
3.NAPT対象のIPアドレス(192.168.3.0/24)を SNAT_RULE1 に設定
4.変換後のIPアドレスを出力インターフェイスアドレスに変換
  • 宛先IPアドレスとポート番号の組み合わせのNAT設定
1.untrustゾーンからtrustゾーンに対してNATを行う設定
2.NAT変換で使用するプール POOL1 に192.168.1.11 ポート22 を設定
3.NAT変換で使用するプール POOL2 に192.168.2.12 ポート22 を設定
4.アドレス変換対象であるIPアドレス(192.168.3.102)とポート22番あてのNATルールを DNAT_RULE1 で設定
5.変換後の宛先IPアドレスは、 POOL1 を使用
6.アドレス変換対象であるIPアドレス(192.168.3.102)とポート2222番あてのNATルールを DNAT_RULE2 で設定
7.変換後の宛先IPアドレスは、POOL2 を使用

CLIにて入力するコマンド

送信元IPアドレスに対するNAPT設定

user01@vSRX-02# set security nat source rule-set SNAT_RULE from zone untrust
user01@vSRX-02# set security nat source rule-set SNAT_RULE to zone trust
user01@vSRX-02# set security nat source rule-set SNAT_RULE rule SNAT_RULE1 match source-address 192.168.3.0/24
user01@vSRX-02# set security nat source rule-set SNAT_RULE rule SNAT_RULE1 then source-nat interface

宛先IPアドレスとポート番号の組み合わせのNAT設定

user01@vSRX-02# set security nat destination pool POOL1 address 192.168.1.11/32 port 22
user01@vSRX-02# set security nat destination pool POOL2 address 192.168.2.12/32 port 22
user01@vSRX-02# set security nat destination rule-set DNAT_RULE from zone untrust
user01@vSRX-02# set security nat destination rule-set DNAT_RULE rule DNAT_RULE1 match destination-address 192.168.3.102/32
user01@vSRX-02# set security nat destination rule-set DNAT_RULE rule DNAT_RULE1 match destination-port 22
user01@vSRX-02# set security nat destination rule-set DNAT_RULE rule DNAT_RULE1 then destination-nat pool POOL1
user01@vSRX-02# set security nat destination rule-set DNAT_RULE rule DNAT_RULE2 match destination-address 192.168.3.102/32
user01@vSRX-02# set security nat destination rule-set DNAT_RULE rule DNAT_RULE2 match destination-port 2222
user01@vSRX-02# set security nat destination rule-set DNAT_RULE rule DNAT_RULE2 then destination-nat pool POOL2

正しく設定が完了したときのコンフィグレーションは次のとおりです。

送信元IPアドレスに対するNAPT設定

security {
        nat {
             source {
                 rule-set SNAT_RULE {
                     from zone untrust;
                     to zone trust;
                     rule SNAT_RULE1 {
                         match {
                             source-address 192.168.3.0/24;
                         }
                         then {
                             source-nat {
                                 interface;
                             }
                         }
                     }
                 }
             }
        }
}

宛先IPアドレスとポート番号の組み合わせのNAT設定

security {
        nat {
            destination {
                pool POOL1 {
                    address 192.168.1.11/32 port 22;
                }
                pool POOL2 {
                    address 192.168.2.12/32 port 22;
                }
                rule-set DNAT_RULE {
                from zone untrust;
                    rule DNAT_RULE1 {
                        match {
                            destination-address 192.168.3.102/32;
                            destination-port {
                                22;
                            }
                        }
                        then {
                            destination-nat {
                                pool {
                                    POOL1;
                                }
                            }
                        }
                    }
                    rule DNAT_RULE2 {
                        match {
                            destination-address 192.168.3.102/32;
                            destination-port {
                                2222;
                            }
                        }
                        then {
                            destination-nat {
                                pool {
                                    POOL2;
                                }
                            }
                        }
                    }
                }
            }
        }
}

動作確認結果

サーバーインスタンスからそれぞれ192.168.3.102:22と192.168.3.102:2222を宛先にしたSSH通信が成功しました。 192.168.1.11と192.168.2.12のサーバーインスタンスへアクセス可能なことが確認できましたので、宛先IPアドレスとポート番号の組み合わせたNAPTも正しく動作することが確認できました。 また、通信を実施した際にvSRX-02で192.168.1.102と192.168.2.102に変換されていることが確認できますので、送信元IPアドレス(192.168.3.0/24)に対するNAPT機能が確認できました。

サーバーインスタンス(192.168.3.13)から192.168.3.102:22宛てのSSH通信が192.168.1.11に通信ができており、接続元も192.168.1.102から接続されていることが確認できます。

user01@ubuntu:~$ ssh user01@192.168.3.102 -p 22
user01@192.168.3.102's password:
Thanks for using Official Template (Ubuntu).
(省略)
Last login: Tue Sep 19 07:12:12 2017 from 192.168.1.102
$

サーバーインスタンス(192.168.3.13)から192.168.3.102:2222宛てのSSH通信が192.168.2.12に通信ができており、接続元も192.168.2.102から接続されていることが確認できます。

user01@ubuntu:~$ ssh user01@192.168.3.102 -p 2222
user01@192.168.3.102's password:
Thanks for using Official Template (Ubuntu).
(省略)
Last login: Tue Sep 19 07:57:22 2017 from 192.168.2.102
$

vSRX-02でNAPT状態の確認結果

user01@vSRX-02> show security flow session
Session ID: 601, Policy name: POL1/6, Timeout: 1800, Valid
  In: 192.168.3.13/57016 --> 192.168.3.102/22;tcp, Conn Tag: 0x0, If: ge-0/0/2.0, Pkts: 2459, Bytes: 130963,
  Out: 192.168.1.11/22 --> 192.168.1.102/27746;tcp, Conn Tag: 0x0, If: ge-0/0/0.0, Pkts: 2439, Bytes: 369967,

Session ID: 602, Policy name: POL1/6, Timeout: 1800, Valid
  In: 192.168.3.13/37124 --> 192.168.3.102/2222;tcp, Conn Tag: 0x0, If: ge-0/0/2.0, Pkts: 2391, Bytes: 128003,
  Out: 192.168.2.12/22 --> 192.168.2.102/26438;tcp, Conn Tag: 0x0, If: ge-0/0/1.0, Pkts: 2368, Bytes: 358443,
Total sessions: 2