双方向 NAT(ダブル NAT)を設定する
Cisco 機器に NAT 設定を施す場合、Outside / Inside、Local / Global という用語を理解していることが重要です。要約すると、これらの用語は以下のように使われます。
双方向 NAT の設定例¶
以下の構成で双方向 NAT を設定してみます。
まず、インターフェイスで inside / outside を定義します。
1 2 3 4 5 6 7 8 9 10 11 |
|
次に静的 NAT エントリーを定義します。"ip nat inside source static" と "ip nat outside source static" コマンドを使います。
1 2 3 4 |
|
NAT の処理順序¶
ただし、これだけではサーバ間での通信は出来ません。なぜなら、NAT の処理順序 によると Outside → Inside の場合はルーティング処理が行われて出力インターフェイス&ネクストホップが決定してから NAT 処理が行われるのに対して、Inside → Outside の場合は NAT 処理よりも先にルーティング処理が行われてしまい、NAT 処理が行われなくなってしまうことが原因です。
以下は Cisco のサイトから、NAT の処理順序の抜粋です。
- Outside から Inside へ
- IPSec の場合は入力アクセス リストをチェック
- 暗号解除 - CET または IPSec
- 入力アクセス リストをチェック
- 入力レート制限をチェック
- 入力アカウンティング
- 外部から内部への NAT(グローバルからローカルへの変換)
- ポリシー ルーティング
- ルーティング
- Web キャッシュにリダイレクト
- 暗号化(暗号化のためのマップをチェックしてマーク)
- 出力アクセス リストをチェック
- CBAC 検査
- TCP インターセプト
- 暗号化
- キューイング
- Inside から Outside へ
- IPSec の場合は入力アクセス リストをチェック
- 暗号解除 - CET(Cisco Encryption Technology)または IPSec
- 入力アクセス リストをチェック
- 入力レート制限をチェック
- 入力アカウンティング
- ポリシー ルーティング
- ルーティング
- Web キャッシュにリダイレクト
- 内部から外部への NAT(ローカルからグローバルへの変換)
- 暗号化(暗号化のためのマップをチェックしてマーク)
- 出力アクセス リストをチェック
- 検査(コンテキストベース アクセス制御(CBAC))
- TCP インターセプト
- 暗号化
- キューイング
この回避する為に、本来は Global 側インターフェイスに存在する Outside Local アドレスに対して、Local 側へ向けるホストルートを設定します。
1 2 3 |
|
この状態で、ルーティングテーブルは以下のようになっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
通信確認¶
この状態で、ルータの NAT テーブルは以下のようになっています。NAT テーブルの確認には "show ip nat translations" を使います。
1 2 3 4 |
|
サーバ間で通信を実施すると、ルータ上に NAT エントリーが作成され、通信が可能になります。
1 2 3 4 5 |
|
参考リンク¶
- http://www.cisco.com/JP/support/public/ht/tac/100/1008452/8-j.shtml
- http://www.cisco.com/JP/support/public/ht/tac/100/1007991/nat-cisco-j.shtml
- http://www1.cisco.com/JP/support/public/ht/tac/100/1008335/5-j.shtml