PAT(IPマスカレード)設定

PAT(IPマスカレード)設定

前回までの記事でスタティックNATダイナミックNATの設定方法を紹介しましたが、その中で2つの方式について、それぞれ使い勝手が良くない部分が見えてきたのではないでしょうか。

まず、スタティックNATに関しては、プライベートIPアドレスと同じ数だけグローバルIPアドレスが必要となり、IPアドレスの節約という面での意味をなしていません。また、ホストの数だけグローバルIPアドレスを取得するのは困難です。

ダイナミックNATは、グローバルIPアドレスを複数用意しておき、その分を、LAN上のホストで共有するわけですが、同時に接続できる(NAT変換できる)台数はグローバルIPアドレスの数だけになります。

理想は、ひとつのグローバルIPアドレスをLAN上のホスト全てで共有できることになります。
それを実現できるのがPAT(IPマスカレード)です。

PATは、TCP/UDPのポート番号を変換ルールに含めることにより、1つのグローバルIPアドレスで複数のホストからの同時通信を可能にします。

今回は下図のようなネットワーク構成のもと、PATの設定手順を紹介します。

ネットワーク構成図

まずは、RouterA、RouterBそれぞれのインターフェイスを設定します。

RouterA設定
RouterA(config)#interface fastEthernet 0
RouterA(config-if)#ip address 10.0.0.1 255.255.255.0
RouterA(config-if)#exit
RouterA(config)#interface ethernet 0
RouterA(config-if)#ip address 192.168.0.1 255.255.255.0
RouterA(config-if)#exit
RouterA(config)#ip route 0.0.0.0 0.0.0.0 10.0.0.100

RouterB設定
RouterB(config)#interface fastEthernet 0
RouterB(config-if)#ip address 10.0.0.100 255.255.255.0
RouterB(config-if)#exit
RouterB(config)#interface ethernet 0
RouterB(config-if)#ip address 20.0.0.100 255.255.255.0


PATを定義

PATの設定はダイナミックNATの設定手順とほとんど同じです。
異なる主な点は、ip nat inside source list poolコマンドにoverloadキーワードを追加するところです。


グローバルIPアドレスのプールを定義
RouterA(config)#ip nat pool patpool 10.0.0.1 10.0.0.1 netmask 255.255.255.0

アクセスリストの設定
RouterA(config)#access-list 10 permit 192.168.0.0 0.0.0.255

アクセスリストを変換用のアドレスプールにマッピング
RouterA(config)#ip nat inside source list 10 pool patpool overload

内部ローカルの設定

ルータのいずれかのインターフェイスを内部ローカル側として設定します。
上図ではethernet0インターフェイスを内部ローカル側として設定しています。

RouterA(config)#interface ethernet 0
RouterA(config-if)#ip nat inside

内部グローバルの設定

ルータのいずれかのインターフェイスを内部グローバル側として設定します。
上図ではfastethernet0インターフェイスを内部グローバル側として設定しています。

RouterA(config)#interface fastEthernet 0
RouterA(config-if)#ip nat outside


以上で、PATの設定は完了です。

では、アドレス変換が正常に行われているかどうか、「PC A」「PC B」「PC C」「PC D」から「PC Z」に対してPingを投げて確かめてみます。

C:\Users\gran>ping 20.0.0.1 -t

20.0.0.1 に ping を送信しています 32 バイトのデータ:
20.0.0.1 からの応答: バイト数 =32 時間 =1ms TTL=255
20.0.0.1 からの応答: バイト数 =32 時間 =1ms TTL=255
20.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=255
20.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=255

4台ともPing応答を正常に受け取れます。
次に、「PC A」からPingを送った場合、送信先となっている「PC Z」にはどのようなパケットが届いているのか、パケットキャプチャソフトを使って確認します。

パケットキャプチャ画像

「PC A」から送信したrequestパケットの送信元IPアドレスが「10.0.0.1」になっています。

では、ルータのNATテーブルはどうなっているでしょう。
現在のNATテーブルはshow ip nat translationsコマンドで確認できます。

RouterA#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
icmp 10.0.0.1:49664    192.168.0.1:49664  20.0.0.1:49664     20.0.0.1:49664
icmp 10.0.0.1:52992    192.168.0.4:52992  20.0.0.1:52992     20.0.0.1:52992
icmp 10.0.0.1:51968    192.168.0.3:51968  20.0.0.1:51968     20.0.0.1:51968
icmp 10.0.0.1:50944    192.168.0.2:50944  20.0.0.1:50944     20.0.0.1:50944

「192.168.0.1:49664」は「10.0.0.1:49664」に変換されています。(ポート番号の情報も加わっていることに着目してください。)
それらのことから、正常にアドレス変換されていることがわかります。

PATは、家庭用の安価なブロードバンドルータにも標準で搭載されており、現在ではNATと言えばPAT(IPマスカレード)と位置付けられています。

タグ