designetwork

ネットワークを軸としたIT技術メモ

自宅ラボASAでDMZからinsideに通信できない問題に対応する

自宅ラボのASA5505でDMZを構築していたら、DMZからinsideへの通信ができない事象が発生したので対応メモ。

前提構成

  • Cisco ASA5505(基本ライセンス・BASE License, Ver.9.2(3))
  • Cisco Catalyst2960
  • VMware ESXi

ASA5505はセキュリティライセンスがないとVLAN trunkができないためCatalystaccessで各々接続して束ねている。

DMZからinsideへの通信ができない

適切なACLをインタフェースに適用して疎通確認をしたが、DMZからinsideへの通信ができない。

インタフェースの設定・セキュリティレベル等はこちらの通り。insideのVLAN名はmanagement。

ASA5505# sh run int

interface Vlan1
 nameif management
 security-level 100
 ip address 192.168.1.x 255.255.255.0 
!
interface Vlan50
 no forward interface Vlan1
 nameif dmz
 security-level 50
 ip address 192.168.50.xx 255.255.255.0 
!
interface Vlan99
 description internet
 nameif outside
 security-level 0
 pppoe client vpdn group nifty
 ip address pppoe setroute 

no forward interface Vlan1についてはこちら

NATとACLの設定はこちら。サーバ数が少なく、随時試験中のためACLは広めに空けている。NATのルールは見直しの余地あり。

ASA5505# sh run nat
nat (outside,management) source static any any destination static interface Web-01 service OpenWeb Web
nat (management,outside) source dynamic Internet-PAT interface
nat (dmz,management) source static any any unidirectional  //Does not work because of no forward
nat (dmz,outside) source dynamic Internet-PAT interface

ASA5505# sh run access-list 
access-list Web extended permit tcp any any eq www 
access-list dmz extended permit ip any any 

ASA5505# sh run access-group 
access-group Web in interface outside
access-group dmz in interface dmz

ASA内部のパケットトレーサーでキャプチャすると以下の通り。no-forward-ruleによってパケットがドロップされている。

ASA5505# packet-tracer input dmz icmp 192.168.50.x 0 0 192.168.1.x 

Phase: 1
Type: ROUTE-LOOKUP
Subtype: Resolve Egress Interface
Result: ALLOW
Config:
Additional Information:
in   192.168.1.0     255.255.255.0   management

Phase: 2
Type: ACCESS-LIST
Subtype: no-forward-rule
Result: DROP
Config:
Additional Information:

Result:
input-interface: dmz
input-status: up
input-line-status: up
output-interface: management
output-status: up
output-line-status: up
Action: drop
Drop-reason: (acl-drop) Flow is denied by configured rule

そんなACLは設定していないが、パケットトレーサーの出力の通り、インタフェース設定のno forwardによって拒否されている。

interface Vlan50
 no forward interface Vlan1

Cisco ASA5505のVLAN構成

http://www.cisco.com/cisco/web/support/JP/docs/SEC/Multi-FunctionSecur/ASA5500AdaptiveSecurAppli/CG/001/10088_02_4.html?bid=0900e4b1825296d6#87459

設定ガイドの中では以下のようなVLAN構成が記載されている。

図中のホームVLANno forward interface Vlanビジネスが設定されていることになる。

これを見直して、インターネット接続のoutsideからmanagement(inside)へをno forwardとするのが妥当ではないかと考える。

outsideインタフェースにno forwardを設定する

DMZからinsideへの通信はR-Proxyなど各種通信で必要となる。そのため、DMZのno forwardを解除し、その代わりにoutsideにno forwardを設定する。

単純にno forwardの設定を追加しようとするとエラーになる。

ASA5505(config-if)# interface Vlan99
ASA5505(config-if)# no forward interface vlan 1
ERROR: Interface Vlan1 is already used in another no forward command
ASA5505(config-if)# no forward interface vlan 50
ERROR: Interface Vlan50 is already used in another no forward command

試しに使用していないVLAN宛のno forward設定をしたら、正常に設定できた。実際の通信も問題なく、各インタフェース間ですべてルーティングできる。ただし、dmzからinsideへの通信にはACLが必要。ACL適用時にはinternet宛もpermitが必要。

outsideからinside(Vlan 1)への通信を捨てるつもりだったが、移行のしやすさを考慮して継続通信できるに越したことはない。

ASA5505(config-if)# no forward interface Vlan 10
ASA5505(config-if)# exit
ASA5505(config)# interface Vlan50
ASA5505(config-if)# forward interface Vlan 1

最終的なインタフェースの設定は以下の通り。

ASA5505# sh run int vlan 1 
!
interface Vlan1
 nameif management
 security-level 100
 ip address 192.168.1.5 255.255.255.0 
ASA5505# sh run int vlan 50
!
interface Vlan50
 nameif dmz
 security-level 50
 ip address 192.168.50.1 255.255.255.0 
ASA5505# sh run int vlan 99
!
interface Vlan99
 description internet
 no forward interface Vlan10
 nameif outside
 security-level 0
 pppoe client vpdn group nifty
 ip address pppoe setroute 

まとめ - 自宅ASA(BASE License)でDMZからinsideに通信できない

自宅ラボで使用しているASA5505で、DMZからinsideへの通信ができない事象が発生した。問題はASA5505 基本ライセンスでは設定が必要となるno forward interfaceの影響だった。最終的に、no forward interfaceをoutsideに設定し、かつ、指定VLANを未使用のものにすることで、(ACLポリシーで制御した上で)全インタフェース間で通信が可能となった。