#本文欢迎转载,转载请注明出处和作者。
ACL即(Access Control List,即访问控制列表),其实,就是可以控制IP源、目的IP地址,端口号,因此可以在路由可达的情况下,相当于设置例外(无论是白名单还是黑名单),从而做到控制访问的目的。
1、网络拓扑
实验拓扑如下:
2、预配置
喜欢使用哪种动态路由协议配通,都可以,无论你跑eigrp,还是ospf都可以,首先,需要参照以往的教程,配通路由,使得PC0、PC1、PC2之间已经可以ping通R2的loopback地址2.2.2.2,这里我使用OSPF进行配置。
R1:
en
conf t
host R1
int lo 0
ip add 1.1.1.1 255.255.255.0
int fa0/0
ip add 10.1.1.1 255.255.255.0
no shut
int fa1/0
ip add 172.16.1.1 255.255.255.0
no shut
int se2/0
ip add 192.168.12.1 255.255.255.0
clock rate 64000
no shut
router ospf 1
network 1.1.1.0 0.0.0.255 area 0
network 10.1.1.0 0.0.0.255 area 0
network 172.16.1.0 0.0.0.255 area 0
network 192.168.12.0 0.0.0.255 area 0
R2:
en
conf t
host R2
int lo 0
ip add 2.2.2.2 255.255.255.0
int se2/0
ip add 192.168.12.2 255.255.255.0
no shut
int se3/0
ip add 192.168.23.2 255.255.255.0
clock rate 64000
no shut
router ospf 1
network 2.2.2.0 0.0.0.255 area 0
network 192.168.12.0 0.0.0.255 area 0
network 192.168.23.0 0.0.0.255 area 0
R3:
en
conf t
host R3
int lo 0
ip add 3.3.3.3 255.255.255.0
int se2/0
ip add 192.168.23.3 255.255.255.0
no shut
int fa0/0
ip add 172.16.3.1 255.255.255.0
no shut
router ospf 1
network 3.3.3.0 0.0.0.255 area 0
network 172.16.3.0 0.0.0.255 area 0
network 192.168.23.0 0.0.0.255 area 0
1、标准ACL
1.1配置命令
计划通过配置ACL,放通PC0、PC2可以ping通R2,而禁止PC1 ping R2。
此时,只需要在R2上面用标准ACL设置即可。
R2进入conf t
access-list 1 deny 172.16.1.0 0.0.0.255
access-list 1 permit any
int s2/0
ip access-group 1 in
//在接口下入站方向应用编号为1的ACL
int s3/0
ip access-group 1 in
//在接口下入站方向应用ACL1为1的ACL
而PC0与PC2还是可以ping通R2的。
1.2原理讲解
标准ACL的编号为1~100,扩展ACL为101开始。
标准ACL只能限制源地址,而上述例子,因为主要要禁用PC1的网段访问R2,所以其实针对源地址设置即可,所以可以用标准ACL即可。
每个access-list 1后面的1就是ACL的编号,后面跟permit与deny,分别是允许,还是拒绝访问的意思。
每条ACL其实后面隐含着deny any的句子,因此如果最后不再输入access-list 1 permit any,那么其实就全部都会匹配到最后隐藏的deny any,会导致其他都无法访问2.2.2.2。
单个ACL里面的条目,是从上往下的优先级匹配的,因此当一个网段匹配到permit的策略后,就不会继续往下匹配了。
2、扩展ACL
2.1配置命令
如上所述,标准ACL只能针对源地址进行放通与拒绝,那么如果想要针对端口号,或者目的地址进行禁止,怎么办呢?这就要用到扩展ACL了。
我们将PC2换成1台server,然后开启HTTP服务,PC0与PC1都用浏览器访问PC2的IP地址172.16.3.2尝试打开。
然后我们再做ACL限制PC1访问PC2的WWW服务器。
(注意只限制WWW服务器,不限制PC1 ping PC2)
因此,需要设置目的地址与控制端口,所以要用扩展ACL。
下属实验前,请先在R2上no 掉刚才的ACL配置。
no ip access-list standard 1
int s2/0
no ip access-group 1 in
int s3/0
no ip access-group 1 in
R3进入conf t
ip access-list extend 101
deny tcp host 172.16.1.2 host 172.16.3.2 eq 80
permit ip any any
其中,host ip地址,意思为单个主机IP,如果是要限制一个网段,需要ip地址段 + 反掩码,如172.16.1.0 0.0.0.255,前面的是源IP地址,后面的是目的IP地址,eq后面加端口号,如www服务,即http协议,走的80端口。如要封telnet服务,那么就可以输入23。
R3上面在s2/0端口,挂载ACL
int s2/0
ip access-group 101 in
然后进行测试,PC1访问172.16.3.2的www服务不行,ping可达。
PC0可以访问172.16.3.2的www服务。