Cisco PIX/ASA の NAT: アドレス空間を完全に分ける

Cisco の PIX/ASA ファイアーウォールの NAT に関してマニュアル等に例としてよく出てくるのは、インターネット (グローバルアドレス) と社内 (プライベートアドレス) の間の通信でプライベートアドレスは当然インターネット側に流れないけれど、社内にグローバルアドレスは入ってくるという NAT の例です。しかし、社内からグローバルアドレスを排除しプライベートアドレスのみ流すようアドレス空間を完全に分けてしまいたい時があります場合もあります。この時に static NAT を設定する方法を備忘録としてまとめます。完全にアドレス空間を分けたいのはインターネット接続よりもグループ企業間接続の場合などでしょうが、説明は社内 (プライベートアドレス)/社外 (グローバルアドレス) と想定して説明します。

社内の 192.168.0.1 というコンピュータAが社外の 1.1.1.1 というコンピュータBと通信することを想定します。それぞれ NAT 用に 1.1.1.10 と 192.168.0.10 というアドレスを用意します。 private IP address 192.168.0.1 を global IP address 1.1.1.10 にマップするには以下のコマンドを打てとマニュアルにあります。

static (inside,outside) 1.1.1.10 192.168.0.1

これで、

社内→社外のパケットの source IP address と
社外→社内のパケットの destination IP address

が変換処理の対象になります。ところで、例えば社外のコンピュータBから 1.1.1.10 に telnet した場合、通信が許可されていればコンピュータAに telnet することができます。この段階では、コンピュータAからはBの実アドレス 1.1.1.1 からの通信に見えます。これを 192.168.0.10 からの通信に見えるようにするためには、

static (outside,inside) 192.168.0.10 1.1.1.1

と実行します。すると

社内→社外のパケットの destination IP address と
社外→社内のパケットの source IP address

も変換処理対象になります。これで完全にアドレスを分割することができました。ACL は適用するインターフェイスが inside ならば内側のアドレス空間で、 outside ならば外側のアドレス空間を用いて書きます。