Cisco PIX/ASA の transparent mode

このところ触る機会が多い Cisco PIX/ASA の話です。Cisco ASA 5500 シリーズ (software version 7.0) の transparent mode を利用する機会がありました。transparent mode は通常の L3 IP forwarding でなく L2 で bridging をする動作モードです。このモードで動作している ASA を Spanning Tree Protocol (STP) が通過するように設定しなければならなかったのですが、これにハマってしまいました。

以下のコマンドで transparent mode での動作となります。

firewall transparent

デフォルトの設定では STP のフレーム (BPDU) は通過しないので ethertype を指定した ACL を inside/outside の両方のインターフェイスに明示的に適用しなければなりません。今回は特に ethertype は制限せず、全て通過するよう any を用いて ACL を作りました。

access-list Ethertypes ethertype permit any
access-group Ethertypes in interface inside
access-group Ethertypes in interface outside

これでうまくいくと思ったのですが、何故かツリーが構成されず、内側と外側で別々の root bridge ができてしまいます。

で結局何が悪かったかというと、物理インターフェイスをそのまま使っていたのがまずかったのです。うまく行かないときは次のように設定していました。

interface Ethernet0/0
speed 100
duplex full
nameif inside
security-level 100
!
interface Ethernet0/1
speed 100
duplex full
nameif outside
security-level 0

実は transparent mode ではサブインターフェイスを使わなければならないのです。次のように設定し直すとうまくいきました。

interface Ethernet0/0
speed 100
duplex full
no nameif
no security-level
!
interface Ethernet0/0.1
vlan 100
nameif inside
security-level 100
!
interface Ethernet0/1
speed 100
duplex full
no nameif
no security-level
!
interface Ethernet0/1.1
vlan 101
nameif outside
security-level 0

inside/outside で別々の VLAN 番号を振らなければなりません。このとき 802.1Q が使われるので、ASA が接続する inside 側のスイッチのインターフェイスは次のような設定になります。

(Catalyst 3550 の例)
interface GigabitEthernet0/1
switchport trunk encapsulation dot1q
switchport trunk allowed vlan 100
switchport mode trunk
no ip address
no cdp enable

物理インターフェイスを使っていた場合でも TCP/IPACL による制御機能は普通に動いてしまうのでハマりました。知っていれば何てことないのですが、transparent mode ではサブインターフェイスでの設定が必須ということで。