这种ACL是基于lock-and-key的,动态acl平时是不生效的,只用当条件触发时才生效。例如;
在某台路由器上我进行了如下配置:
username netdigedu password 123
username netdigedu autocommand access-enable host time 5
line vty 0 4
login local
同时配置一个动态ACL:
access-list 100 permit tcp 192.168.1.1 0.0.0.0 192.168.1.2 0.0.0.0 eq telnet
access-list 101 dynamic abc timeout 60 permit icmp host 5.5.123.1 host 5.5.12.3
int e0/0
ip access-group 100 in
exit
在配置完成以后,我们在路由器1上ping 192.168.1.2 得到的结果是timeout。
当我们从路由器1上telnet到路由器2上以后,发现以下提示
[Connection to 192.168.1.2 closed by foreign host]
当我们看到这个提示以后,我们在路由器1上去ping路由器2的时候,我们发现可以ping通了。
line vty 0 4
autocommand access-enable host timeout 5 '设置触发激活动态ACL
也就是说,当192.168.1.1 telnet到 192.168.1.2 并通过验证的话,则放置在e0/0接口上的动态ACL生效,这时192.168.1.可以ping通192.168.1.2。
关于两个timeout,access-list里的timeout是该条目的绝对超时时间,也就是该条目只能存在60分钟,autocommand中的timeout是空闲超时时间,也就说如果2分钟内如果没有匹配该条目的流量出现,则条目失效。默认值忘了,谢谢!
关于host参数我说一下,加上host参数的话,假设动态acl是这样写的;
access-list 101 dynamic abc timeout 60 permit icmp 192.168.1.0 0.0.0.255 host 192.168.1.2
那么最终生成的条目是permit icmp 5.5.123.1 0.0.0.0 host 5.5.12.3,也就是只为激活该条目的单个主机生成动态条目。不加host参数会为整个网段生成允许条目。
在这个例子里我做的实验的show ip acce的结果如下
r2#show ip acce
Extended IP access list 100
10 permit tcp host 192.168.1.1 host 192.168.1.2 eq telnet (807 matches)
20 Dynamic abc permit icmp host 192.168.1.1 host 192.168.1.2
permit icmp host 192.168.1.1 host 192.168.1.2
我们发现,路由器自动创建了一个动态的访问控制列表的条目。
上面那个完整的例子里,加不加host都一样,因为动态ACL本身是就是host的。
注意事项:
1、autocommand 整个命令必须打全!用?也看不到!而且打错了不提示!
2、在每个访问控制列表中只能创建一个动态的访问控制列表。