预配置说明R1、R2与R3之间123.0.0.0/24,R3与R4之间34.0.0.0/24,主机位与路由器的编号一致。

第零步:R3的基本配置

R3

username r1 password r1

username r1 autocommand access-enable  timeout 1(这里还有一个host命令,后面讲)

//配置R1的用户名与密码

//当用户R1使用r1登录后,自动执行“红色”命令后弹出

line vty 0 4

login local

 

第一步R1上测试R3R4的链接

R1上进行测试

R1#r3

Translating "r3"

Trying r3 (123.0.0.3)... Open

User Access Verification

Username: 

R1#r4

Translating "r4"

Trying r4 (34.0.0.4)... Open

User Access Verification

Username: 

//正常,R2上一样,但接下来的测试在R1上进行,R2在R1成功认证后,做为未知第三方来做测试。(未知第三方知道了R4的登录用户名与密码或者不知道用户名与密码,它可以TCP的半卡链接,但他在苦苦等待R3的流量放行)

 

第二步:在R3上配置ACL使用R1可以访问R3,但不可以访问R4,并测试

access-list 100 permit icmp any any

access-list 100 permit tcp any host 123.0.0.3 eq  telnet

R3(config)#int f2/0

R3(config-if)#ip access-group 100 in

 

R1#ping r3

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 123.0.0.3, timeout  is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip  min/avg/max = 92/110/140 ms

R1#ping r4

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 34.0.0.4, timeout  is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip  min/avg/max = 84/106/140 ms

R1#r3

Translating "r3"

Trying r3 (123.0.0.3)... Open

User Access Verification

Username: 

R1#r4

Translating "r4"

Trying r4 (34.0.0.4)... 

% Destination unreachable; gateway or host down

//以上现象说明配置无误

 

第三步:配置dynamic ACL,使得你的配置的ACL如下

access-list 100 permit icmp any any

access-list 100 permit tcp any host 123.0.0.3 eq  telnet

access-list 100 dynamic STARSHOMES timeout 2 permit tcp any host 34.0.0.4 eq telnet

//前2行ACL在第二步可以看到

第3行则为配置的动态ACL,命令的含义是:当R1使用用户名r1认证后放行访问R4的流量,这里timeout 2为绝对时间,即没有流量通过时,2分钟后会删除动态生成的条目(以下有底纹的条目)

第四步:测试R1是否可以telnet R4

R1#r4

Translating "r4"

Trying r4 (34.0.0.4)... 

% Destination unreachable; gateway or host down

//仍然如此,登录不了

 

R2#r4

Translating "r4"

Trying r4 (34.0.0.4)... 

% Destination unreachable; gateway or host down

//特别注意:做为未知第三方也访问不了

 

R3#sh ip access 100

Extended IP access list 100

10 permit  icmp any any (15 matches)

20 permit  tcp any host 123.0.0.3 eq telnet (26 matches)

30 Dynamic STARSHOMES permit tcp any host 34.0.0.4 eq telnet

//R3的动态ACL没有任何变化

第五步:R1使用R2提供的用户名与密码作为认证密钥,通过后产生一条动态的ACL来放行去往R4的流量

R1#r3

Translating "r3"

Trying r3 (123.0.0.3)... Open

 

 

User Access Verification

 

Username: r1 

Password: 

[Connection to r3 closed by foreign host]

//认证通过后,被弹出

 

R1#r4

Translating "r4"

Trying r4 (34.0.0.4)... Open

 

User Access Verification

 

Username: r1

Password: 

R4#

//可以正常登录,但我们看看R3到底干了什么事情。

 

R3#sh ip access 100

Extended IP access list 100

10 permit  icmp any any (15 matches)

20 permit  tcp any host 123.0.0.3 eq telnet (86 matches)

30 Dynamic  STARSHOMES permit tcp any host 34.0.0.4 eq telnet

permit tcp any host 34.0.0.4 eq telnet

//R3上的dynamic ACL增加了一条ACL,动态的允许到达R4的TCP 23流量(此条目会在无流量的情况下消失)

 

备注:本实验到这里就结束了。接下来,讲一些安全特性

 

第六步:看看R2能不能登录

 

R2#r4

Translating "r4"

Trying r4 (34.0.0.4)... Open

 

 

User Access Verification

 

Username: r1

Password: 

R4#

//正是因为上面的any,允许了R2(或者更多的未知第三方)的流量。

 

第七步:能不能使any变成一个特定的IP地址

R3

username r1 autocommand access-enable timeout 1

username r1 autocommand access-enable host timeout 1

 

以下的话来自china.bub.com

注意,在使用autocommand命令时要使用host参数。如果不使用host参数,动态表项就不会替换动态表项中认证主机的源IP地址,这样,就会允许任何主机都能通过动态表项,我们也就不能达到使用动态访问表的目的。读者在配置autocommand表项时千万不要忘记了使用host参数,这一点十分重要。

 

第八步:测试R1认证后,R2是否在不认证的情况下还能登录R3(如果要认证可以在R3上给R2建立不同的帐户)

R1#r3

Translating "r3"

Trying r3 (123.0.0.3)... Open

 

User Access Verification

 

Username: r1

Password: 

% Login invalid

 

Username: r1

Password: 

[Connection to r3 closed by foreign host]

R1#r4

Translating "r4"

Trying r4 (34.0.0.4)... Open

 

 

User Access Verification

 

Username:

//正常,R1在提供用户名与密码后,R3放行来来自R1的流量

 

R2#r4

Translating "r4"

Trying r4 (34.0.0.4)... 

% Destination unreachable; gateway or host down

 

R2#

//R2不行了,为什么呢?我们来看看R3做了什么事情

R3(config)#do sh ip access

Extended IP access list 100

10 permit  icmp any any (15 matches)

20 permit  tcp any host 123.0.0.3 eq telnet (154 matches)

30 Dynamic  STARSHOMES permit tcp any host 34.0.0.4 eq telnet

permit tcp host 123.0.0.1  host 34.0.0.4 eq telnet (10 matches) (time left 57)

//看看只认证了R1,要使得R2也能telnet R4,做法重复上面的命令,使得在R3上

R3#sh ip access-lists 

Extended IP access list 100

10 permit  icmp any any (15 matches)

20 permit  tcp any host 123.0.0.3 eq telnet (238 matches)

30 Dynamic  STARSHOMES permit tcp any host 34.0.0.4 eq telnet

permit tcp host 123.0.0.1 host  34.0.0.4 eq telnet (8 matches) (time left 57)

permit tcp host 123.0.0.2 host  34.0.0.4 eq telnet (8 matches) (time left 36)

 

小小备注:这里有两个时间,说明一下

access-list 100 dynamic STARSHOMES timeout 2 permit tcp any host 34.0.0.4 eq telnet

username r1 autocommand access-enable host timeout 1

 

第1个:为绝对时间,在没有流量的情况下2分钟分删除该动态表项,也可以不要timeout 2,那么该条目在重启前不会删除

第2个:为相对时间,在有流量的情况下,会递减(在R1 telnet到R4后没有进行任何操作)到0后再过1分钟后删除。这时R1运往R4的telnet流量会丢失

 

就R1来说,会卡在R4上,等R1与R4会话超时后R1会断开链路或者Ctrl+Shift+6强制断开