Cisco の L3 で VLAN 間ルーティングをフィルタしたい

L3SW は VLAN を複数作りそこにIPアドレスを付けると内部でルーティングしてくれます。今回、トラフィックを分けたくて、相互に通信して欲しくなくて VLAN 切ったのに通信できてしまって困ってたので、この VLAN 間のルーティングをフィルタしたいとおもいます。

例として、VLAN10 と VLAN20 を作ります。作った直後は内部でルーティングしてくれます。双方のノードから ping を打つとどっちも届きます。OK ここまでは OK。

 

Interface Vlan10
ip address 10.10.10.1 255.255.255.0

Interface Vlan20
ip address 192.168.10.1 255.255.255.0

 

VLAN20 に入ってくる、送信元が 10.10.10.0/24 のパケットは全部破棄としたいです。アクセスリストを書きましょう。名前付き ACL が楽です。

 

ip access-list standard vlan20-list
deny 10.10.10.0 0.0.0.255
permit any

 

これを VLAN20 に定義しましょう。

 

Interface Vlan20
ip access-group vlan20-list in

 

さあどうだ、双方の VLAN 所属ノードから ping 打ってみます。見事に届きます。なんでやねーん!

何度も定義しなおしては悩んでいたのですがマニュアルを読み直して図を見たとこでスッキリ。

ACL によるネットワーク セキュリティの設定 - Cisco Systems

ACL およびルーテッド パケット」の図が大変わかりやすい。

ip access-group の in とか out っていうのは VLAN から見た方向じゃなくて、内部のルーティング機能から見た方向だったのね!視点が逆だった!VLAN インタフェースに対して設定しているから、VLAN 視線で見てた。なるほど、ルーティングについての ACL を設定しているのだからルーティング機能から見た方向だわな。

というわけで方向を付け直して

 

Interface Vlan20
no ip access-group vlan20-list in
ip access-group vlan20-list out

 

よしよし ping 飛ばなくなった。反対向きのもセットして、完成です。