cisco acl的正则表达式

网络工程 阿斯尔
2021-08-03 03:12:45

有没有人遇到过任何可以在 cisco acl 中使用的正则表达式来获取 ACL 中的最后一个 permit 语句?我最后有将近 5k ACL 许可行和很少的拒绝语句,所以每次我必须添加许可行时,我都必须滚动所有行并找出正确的序列号以在拒绝语句上方添加许可行。我试图通过使用带计数的 tail 命令获取访问列表,但由于列表不断变化,我只想检查是否有任何正则表达式可以用来显示访问列表语句从允许更改为拒绝?

1个回答

我没有代表要在上面发表评论,但是,Ron Maupin 关于明确否认毫无意义的说法是错误的。只有隐式拒绝,如果您的日志记录级别设置为调试或您使用“终端监视器”,您将只会看到被拒绝的流量。如果您的日志记录级别低于调试(例如错误),除非您有明确的拒绝语句(并在其上启用日志记录),否则您将不会看到被拒绝的流量。

此外,至于他关于首先否认的声明,在某些情况下这很好,但是,以这个例子作为对立点:

ip access-list extended example-acl
 10 permit udp host 192.168.34.14 8.8.8.8 53
 20 deny ip 192.168.34.0 0.0.0.255 any
 30 permit ip any any

我已经允许单个主机访问 8.8.8.8 上的 DNS,但随后阻止该网络上的所有其他内容进入任何地方,同时允许所有其他网络流经应用 ACL 的任何接口,以访问他们需要的内容。如果我首先列出了拒绝声明,我的主机许可声明将不起作用。在不了解您的具体需求的情况下,您不能只说拒绝应该永远是第一位的。

此外,假设您知道序列步进量(按 10 秒、按 20 秒等),您不必滚动来查找下一个序列号。你所要做的就是

show access-list <acl name> | begin deny

一旦你看到拒绝语句所在的序列号,只需从它或任何你需要的数字中减去一个数字,你就可以在它上面插入一个新的语句。然后,只需在最后使用重新排序您的 ACL

resequence ip access-list <acl name> <starting number> <stepping number>