◆ ip nat outside source(外部送信元アドレス変換)
ip nat outsideコマンドにより、外部(ip nat outsideの設定があるインターフェース側)から着信してくる
送信元アドレスの変換を行うことができます。外部の送信元アドレス変換を行うためには、Ciscoコマンドは
ip nat outside source staticを使用します。一方、内部の送信元アドレス変換を行うためのCiscoコマンドは
ip nat inside source static となります。先ず、ip nat inside source staticにより変換される対象を見ます。
そして、今回解説する ip nat outside source static の設定によって変換される対象を見てみましょう。
◆ スタティックNAT - ip nat outside source(外部送信元アドレス変換)
外部送信元アドレス変換を行うためには、「外部グローバルアドレス」と「外部ローカルアドレス」を
マッピングさせる必要があり、それは以下のコマンドで設定します。
◆ @ NAT変換する 「 送信元:外部グローバルアドレス 」 と 「 送信元:外部ローカルアドレス 」を定義
(config)# ip nat outside source static global-ip local-ip
次に、「内部ネットワーク」または「外部ネットワーク」の定義をインターフェースに割り当てます。
◆ A 内部/外部ネットワークの指定
(config-if)# ip nat inside | outside
下図をもとに設定例を紹介します。外部ホスト「10.1.1.10」は、送信元アドレスを「192.168.1.20」に
変換したいと考えています。送信元アドレスが変換されるということは、戻りのパケット(BとC)では
宛先アドレスが変換されます。その結果、パケットの中身は下図の通りになります。
Cisco(config) # ip nat outside source static 10.1.1.10 192.168.1.20
Cisco(config) # interface GigabitEthernet0/1
Cisco(config-if) # ip address 192.168.1.254 255.255.255.0
Cisco(config-if) # ip nat inside
Cisco(config) # interface GigabitEthernet0/0
Cisco(config-if) # ip address 10.1.1.254 255.255.255.0
Cisco(config-if) # ip nat outside
Cisco(config) # ip route 192.168.1.20 255.255.255.255 GigabitEthernet0/0
|
ここでポイントとなるのが最終行のスタティックルート。 NATの変換処理順序は、InsideからOutsideへ
パケットが転送される時、ルーティングが行われた後にNAT変換が行われます。上図で変換後のアドレス
である「192.168.1.20」に返送するBのパケットがルータに着信した時に、最終行のスタティックルート
がない場合、先にルーティングが行われた結果、出力インターフェースが Gi0/1 に決定してしまいます。
先にNAT変換が行われるのなら「10.1.1.10」にアドレス変換して、ルーティング処理の結果が出力される
インターフェースが「Gi0/0」となり、正常にパケットが転送されます。しかし、InsideからOutsideへは
先にルーティングを行われて、次にNAT変換が行われるので、上記のようにホストルートを定義する必要が
あります。※ 先にルーティングが行われても、出力I/Fが意図するI/Fになるならこのホストルートは不要。
NATテーブルの一行目は ip nat outside source コマンドを設定した時点で生成されます。2行目については
実際に通信が発生した後に生成されます。
show ip nat translation |
Pro |
Inside global |
Inside local |
Outside local |
Outside global |
--- |
--- |
--- |
192.168.1.20 |
10.1.1.10 |
tcp |
192.168.1.10:22 |
192.168.1.10:22 |
192.168.1.20:51179 |
10.1.1.10:51179 |
あまり知られていませんが、上図で最終行のスタティックルートを設定しなくても以下のコンフィグ通り
スタティックNATの設定時に「add-route」コマンドを設定することでも、通信ができるようになります。
add-routeでルーティングテーブルに「S 192.168.1.20/32 [1/0] via 10.1.1.10」が自動設定されます。
Cisco(config) # ip nat outside source static 10.1.1.10 192.168.1.20 add-route |
ただし、Cisco IOS 15.2(1)T 以降では一部コード実装変更の影響により、上述の add-route の設定では
NAT通信が正常に行えない問題が報告されています。この問題を解決するためには、Cisco社の見解どおり
add-route の設定をする場合、追加で「no-alias」コマンドもオプション設定することが必要となります。
Cisco(config) # ip nat outside source static 10.1.1.10 192.168.1.20 no-alias add-route |
|