pusuke0418’s diary

異常にマルチタスクな社内SEのブログ

ASAでNATしてサーバを公開する設定

掲題の設定に関するCisco ASA(いわゆる8.3以降)の情報が、なぜかあまりまとまったものが無かったので、メモ。
テストに利用する構成は下記で、要点は192.168.1.101のWebサーバを、10.0.0.2で外からアクセスできるようにするというもの。ここでは172.16.1.101のホストからアクセス可能なようにする。それ以外の通信はここでは考えていない

むりやり読み替えると、現実のインターネットには無いが、このテスト環境は10.0.0.0/24のグローバルアドレス空間を持っているということもできる。

f:id:pusuke0418:20181212104136p:plain
topology

ASAの設定をしていく。

まずインタフェースとデフォルトルートを設定。

interface GigabitEthernet0
nameif outside
security-level 0
ip address 10.0.0.1 255.255.255.0
!
interface GigabitEthernet1
nameif dmz
security-level 50
ip address 192.168.1.254 255.255.255.0
!
route outside 0.0.0.0 0.0.0.0 10.0.0.254 1

ASAでnameifコマンドは必須。outsideやdmzといった名前は勝手にデフォルトでセキュリティレベルが設定される。ここでは、dmzを50として、outsideよりセキュア?信頼できる?(設定数値が小さい)状態としている。

ciscoasa(config-if)# nameif outside
INFO: Security level for "outside" set to 0 by default.

ciscoasa(config-if)# nameif dmz
INFO: Security level for "dmz" set to 0 by default.

オブジェクトを設定する。ASAに限らずFWは、オブジェクトやオブジェクトグループで設定する考え方したほうが良い。

object network ip-192.168.1.101
host 192.168.1.101
object network ip-10.0.0.2
host 10.0.0.2
object service src-http
service tcp source eq 80

そして、NATの設定を入れる。ASA8.3以降は、Twice NAT (別名:Manual NAT)と Network Object NAT (別名:Auto NAT) という2方式の設定があって、普段Auto NATをあまり使ったことが無いのでここではManualでやっている。NATタイプなどはCiscoの資料などを参照すると良いと思います。

カッコとか文字にあるし、わりと悟りが必要なタイプの設定だと感じるが、基本[実IP][変換後IP]の順序で各項目を記載する。

nat (dmz,outside) source static ip-192.168.1.101 ip-10.0.0.2 service src-http src-http

ここでとても大切なことがあって、このNATの設定を入れると、ASAは10.0.0.2のARPに応答する。外部から見て10.0.0.2の着信がASAの10.0.0.1のインタフェースに対して可能となる。

隣接ルータから見たarpテーブル。

R1#show ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 10.0.0.2 4 0000.ab12.1212 ARPA FastEthernet0/0
Internet 10.0.0.1 0 0000.ab12.1212 ARPA FastEthernet0/0

この段階ではまだアクセスはできない。外側のセキュリティの低いインタフェース側の着信方向に、実IPへの許可ACLを設定する必要がある。

access-list hoge extended permit tcp host 172.16.1.101 host 192.168.1.101 eq 80
access-group hoge in interface outside

以上。