既存access-listの1行目にACLを挿入すると不具合発生

 27, 2009 09:59
既存ACLに対して1行目にACLを挿入したところ、1行目以外のpermitが
無効になる現象(マッチしない)が発生しました。
■設定事項
例)
・追加前のACL
access-list 100 permit tcp any any
access-list 100 deny ip any any log
access-list 150 permit tcp any any
access-list 150 deny ip any any log

・上記ACL100とACL150に対して新たにACLを挿入しました
(config)#ip access-list extended 100
(config-ext-nacl)#1 permit icmp any any
(config)#ip access-list extended 150
(config-ext-nacl)#1 permit icmp any any

・追加後のACLの設定状況
access-list 100 permit icmp any any
access-list 100 permit tcp any any
access-list 100 deny ip any any log
access-list 150 permit icmp any any
access-list 150 permit tcp any any
access-list 150 deny ip any any log

・アクセスリストの状態を確認
#sh access-lists
Extended IP access list 100
1 permit icmp any any
10 permit tcp any any
20 deny ip any any log
Extended IP access list 150
1 permit icmp any any
10 permit tcp any any
20 deny ip any any log


ACL変更後にpingが新たに許可され、pingによる疎通確認が出来るようになったのですが
本来通信許可していたTCPの通信が拒否され、denyでマッチしたlogとして吐き出されるようになりました。

状況から推測して、1行目以外のpermit文が無効になっているようです。

「clear ip access-list counters」コマンドで一度access-listのカウントを削除し、
access-listの適用状況を再確認したところ、
やはり同じように1行目と20行目のみACLが適用している結果となりました。
(そして許可されるべきTCP通信がdenyされログに出力)


■対処方法
「ip access-list resequence」コマンドでシーケンス番号の再定義。

(config)#ip access-list resequence 100 10 10
(config)#ip access-list resequence 150 10 10

ACLを一度削除し再定義してみても恐らく同じ結果になったと思いますが、
(実際の)ACL行数が多かった事もあり「ip access-list resequence」を試したところ
うまくいったのでそのままとしました。

なお検証用1812JにIOSのバージョンを揃えてテストしてみましたが、現象の再現はしませんでした。
初めて見る現象で、再現もしなかったので原因については謎のままです。

Tag:ACL access-list 1812J


COMMENT 0


WHAT'S NEW?