动态访问表是一种新型的访问表。事实上确实如此,但是动态访问表的语法
与传统访问表项的格式非常相似,这些知识在前面的章节中也介绍过。动态访问表项的语法
如下所示:
        access-list <access-list mumber> dynamic <name> [timeout n][permit|deny] <protocol> any <destination IP> <destination mask>
其中第一项<access-list number>与传统的扩展访问表的格式相同,其号码介于1 0 0~1 9 9之
间。第二个参数< n a m e >是动态访问表项的字符串名称。[ t i m e o u t ]参数是可选的。如果使用了
t i m e o u t参数,则指定了动态表项的超时绝对时间。< p r o t o c o l >参数可以是任何传统的T C P / I P
协议,如I P、T C P、U D P、I C M P等等。其源I P地址总是使用认证主机的I P地址来替换,所以
我们在动态表项中定义的源地址总是应该使用关键字a n y。目的I P(destination IP)和目的屏
蔽码( destination mask)与传统的扩展访问表格式相同。对于目的I P地址,最安全的方式是
指定单个子网,或者甚至为单个主机。因为我们在每个访问表中不能指定多个动态访问表项,
所以在p r o t o c o l中一般设置为I P或者T C P。
        下面举例说明:
         username cisco password cisco
         username cisco autocommand access-enable host timeout 5
         username test privilege 15 password test
         access-list 100 permit tcp host 1.1.1.1 host 1.1.1.2 eq telnet
         access-list 100 dynamic test timeout 5 permit ip any host 20.1.1.1
         int s1/1
         ip add 1.1.1.2 255.255.255.0
         ip acce 100 in
         line vty 0 2
         login local
         line vty 3 4
         login local
         rotary 1(这一步在测试中表明不是必须的,但在cisco控制列表配置指南有提到)
         分析:第一行,建立本地密码数据库,第二行,使用autocmmand 命令使路由器能够自动创建一个访问控制列表条目,第三行,仍然建立一个本地数据库,其作用稍后再讲,下面几行建立动态访问列表并在接口下应用,其实动态列表只是扩展列表的一部分。在line vty xx下调用本地密码数据库
         下面是测试结果:
R2#
R2#sh ip acce(先查看一下激活动态列表前的控制列表)
 Extended IP access list 100
    10 permit tcp host 1.1.1.1 host 1.1.1.2 eq telnet (231 matches)
    20 Dynamic test permit ip any host 20.1.1.1
R2#
我们先telnet 20.1.1.1 可以看到是不成功的,因为我们还没有激活动态列表
R1#
R1#
R1#telnet 20.1.1.1
Trying 20.1.1.1 ...
% Destination unreachable; gateway or host down
R1#
下面进行激活:
R1#telnet 1.1.1.2
Trying 1.1.1.2 ... Open

User Access Verification
Username: cisco
Password:
[Connection to 1.1.1.2 closed by foreign host]
R1#
这里我们在查看一下激活后的访问控制列表和激活前的有什么不同:
R2#
R2#sh ip acce
Extended IP access list 100
    10 permit tcp host 1.1.1.1 host 1.1.1.2 eq telnet (303 matches)
    20 Dynamic test permit ip any host 20.1.1.1
       permit ip host 1.1.1.1 host 20.1.1.1
R2#
现在我们再telnet 20.1.1.1 应该是成功的
R1#
R1#telnet 20.1.1.1 3001
Trying 20.1.1.1, 3001 ... Open

User Access Verification
Username: test(这里的用户名和密码我们使用的是test,用户名cisco登录会被自动踢出,这就是我要建立第二个密码数据库的原因了)
Password:
R2#
R2#
        到这一步已经表明我们的测试结果是成功的,不知道大家能不能看明白?