自反访问控制列表

作用:internal network可以访问externalnetwork,但是不允许external network访问internal network

143914696.jpg

说明:为了全网互通,底层运行ospf

R1R2之间12.0.0.0/24R2R3之间23.0.0.0/24

R1上建立lo01.1.1.1,在R3上建立lo03.3.3.3

开始:

第一步:在R1上测试

R1pingR3回环口

R1#ping 3.3.3.3

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5),  round-trip min/avg/max = 32/76/132 ms

可以在R1pingR3,反之亦然。

第二步:为了不让external network(R3)pinginternal network(R1)

如果使用扩展访问控制列表在int F1/1上做如下配置

R2(config)#access-list 100 permit  ospf any any 

R2(config)#access-list 100 deny ip any any 

R2(config)#int  f1/1

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

1.R1pingR3

R1#ping  3.3.3.3

Type  escape sequence to abort.

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

.....

Success  rate is 0 percent (0/5)

正常的出流量也不通,这是因为R1的流量到达R3后,在返回过程中被R2丢弃

2.R3debug ip icmp

*Aug9 12:47:40.547: ICMP: echo reply sent, src  3.3.3.3, dst 12.0.0.1

*Aug9 12:47:40.627: ICMP: dst (3.3.3.3)  administratively prohibited unreachable rcv from 23.0.0.2

R3#

*Aug9 12:47:42.535: ICMP: echo reply sent, src  3.3.3.3, dst 12.0.0.1

*Aug9 12:47:42.591: ICMP: dst (3.3.3.3)  administratively prohibited unreachable rcv from 23.0.0.2

R3#

*Aug9 12:47:44.527: ICMP: echo reply sent, src  3.3.3.3, dst 12.0.0.1

*Aug9 12:47:44.607: ICMP: dst (3.3.3.3)  administratively prohibited unreachable rcv from 23.0.0.2

R3#

*Aug9 12:47:46.531: ICMP: echo reply sent, src  3.3.3.3, dst 12.0.0.1

*Aug9 12:47:46.615: ICMP: dst (3.3.3.3)  administratively prohibited unreachable rcv from 23.0.0.2

R3#

*Aug9 12:47:48.527: ICMP: echo reply sent, src  3.3.3.3, dst 12.0.0.1

*Aug9 12:47:48.583: ICMP: dst (3.3.3.3)  administratively prohibited unreachable rcv from 23.0.0.2

//icmp的响应包,源为3.3.3.3目标为12.0.0.1

//被管理性的禁止

第三步:使用自反访问控制列表

ip access-list extended filter-IN

permit ospf any any

evaluate TELNET 

ip access-list extended filter-OUT

permit ospf any any

permit tcp any any reflect TELNET

//在这里我们只使用了telnet流量从internalexternal,反之不通

对于自反访问控制列表说明如下

一个列表创建自反列表

例如

ip access-list extended filter-OUT

permit ospf any any

permit tcp any any reflect TELNET

注意关键词refect当由符合tcp any any 

的数据流通过的时候,就会产生一个名字叫做TELNET的的自反列表,但是它仅仅是产生而已,还不能被使用,因为没与应用到接口上,我们采用另外一个扩展访问控制列表进行调用

ip access-list extended filter-IN

permit ospf any any

evaluate TELNET 

在进来的访问列表里面,用关键字evaluate来调用已经产生的TELNET自反列表。

第四步:调用(注意方向)

ip access-list extended filter-OUT

permit ospf any any

permit tcp any any reflect TELNET

//以上三行为当流量从internalexternal时,产生TELNET的自反列表,所以这个列表要用在R2F1/1接口的“出”方向上

ip access-list extended filter-IN

permit ospf any any

evaluate TELNET

//以上三行为当上一个acl产生名为TELNET的自反列表时,调用到这个扩展列表上,所以这个列表要用到R2F1/1接口上“进”方向上

R2(config-ext-nacl)#int f1/1

R2(config-if)#ip access-group  filter-OUTout

R2(config-if)#ip access-group  filter-INin

第五步:先看现象

R1#telnet 3.3.3.3

Trying 3.3.3.3 ... Open

User Access Verification

Username: 

% Username:timeout expired!

R3#telnet 1.1.1.1

Trying 1.1.1.1 ... 

% Destination unreachable; gateway or  host down

现象成功,接下来我们看看R2上发生了什么?

R2#sh ip access-lists 

Reflexive IP access list TELNET

permit tcp  host 3.3.3.3 eq telnet host 12.0.0.1 eq 15504 (27 matches) (time left 295)

Extended IP access list filter-IN

10 permit ospf any any (47 matches)

20 evaluate TELNET

Extended IP access list filter-OUT

10 permit ospf any any

20 permit tcp  any any reflect TELNET (43 matches)

解释:

Reflexive IP access list TELNET

permit tcp  host 3.3.3.3 eq telnet host 12.0.0.1 eq 15504 (27 matches) (time left 295)

当流量从R1 F1/1流出时,匹配到filter-OUT列表,于是产生一个名为TELNET的自反列表,如下:

permit tcp host 3.3.3.3 eq telnet host 12.0.0.1 eq  15504

//这是R1 telnet R3的反向流量,

于是当反向流量返回并经过R2F1/1接口时被接口放行。

小小备注:访问控制列表只对经过流量匹配,不针对本地流量,要匹配本地流量,则还需要配置本地策略ip local policy XX,关于策略路由超出了自反ACL的教程,请自行查阅相关文档

小小总结:自反ACL只适合单通道的应用,比如说telnet,DNS等等,对于如FTP等多通道的应用,它无能为力,基于上下文的ACL可以解决,关于基于上下文的ACL后续上传……

一般情况下,自反ACL的特性比NAT破坏了,用处不大