转载自:路由器ACL(访问控制列表)的类型及配置

ACL是应用在路由器接口的指令列表,通过这些指令,来告诉路由器哪些数据包可以接收,哪些数据包需要拒绝,基本原理就是:ACL使用包过滤技术,在路由器上读取OSI七层模型的第三层及第四层包头中的信息,如源地址、目的地址、源端口、目的端口等,根据预先定义好的规则,对包进行过滤,从而达到访问控制的目的。


标准ACL

根据数据包的源IP地址来允许或拒绝数据包,标准ACL的访问列表控制号是1~99

创建标准ACL语法

Router(config)#access-list 1~99 { permit | deny } 源网段地址或网段(若源地址为主机,则在地址前面需要加“host”;若源地址为网段,则要在网段地址后面加反掩码,如/24的反掩码就是0.0.0.255。

例如:Router(config)#access-list 1 permit 192.168.1.0 0.0.0.255 #表示为允许192.168.1.0/24网段地址的流量通过

Router(config)#access-list 1 permit host 192.168.2.1 #表示为允许主机192.168.2.1的流量通过。

每一个ACL都有一条隐含的拒绝语句,可以拒绝所有流量,所以在做ACL规则时建议以拒绝某个网段或主机的流量通过,然后再允许所有流量通过,如下:

Router(config)#access-list 1 deny host 192.168.1.2 #拒绝192.168.1.2网段的流量通过
Router(config)#access-list 1 permit any #允许所有主机的流量通过

当以上ACL规则应用到接口上时,效果为除了192.168.1.2的流量外都可以通过。

源地址可以用 "any"来表示为所有主机。

删除ACL的规则时,在规则前加"no"即可,如:Router(config)# no access-list 1 #删除表号为1的规则


一个ACL可以配置多条规则,但是一个接口,一个方向只能应用一个ACL


扩展ACL

根据数据包的源IP地址、目的IP地址、指定协议、端口和标志来允许或拒绝数据包,扩展ACL的访问控制列表号是100~199

扩展ACL的配置语法

语法1

Router(config)# access-list 101 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 #创建一个表号为101的ACL,规则为允许192.168.1.0访问192.168.2.0网段的流量通过
Router(config)# access-list 101 deny ip any any #拒绝所有流量通过

以上规则最终应用到接口上的效果为拒绝除了192.168.1.0访问192.168.2.0的数据包以外的所有数据包通过

语法2

Router(config)# access-list 101 deny tcp 192.168.1.0 0.0.0.255 host 192.168.2.2 eq 21 #拒绝网络192.168.1.0访问主机192.168.2.2,tcp端口号21的流量通过
Router(config)# access-list 101 permit ip any any #允许所有流量通过

以上扩展ACL的规则为:拒绝网络192.168.1.0访问主机192.168.2.2,TCP端口号21的流量通过,而允许其他任何流量通过。其中命令最后的eq为等于XX端口号还有 lt(小于)、gt(大于)、neq(不等于)几个选项。

扩展ACL与标准ACL的区别就是扩展ACL可以基于端口号、目标地址、协议,来更加精准的控制流量是允许还是拒绝通过。
删除扩展ACL的规则的语句和删除标准ACL一致。如:Router(config)# no access-list 101 #删除表号为101的扩展ACL规则


命名ACL

命名ACL允许在标准ACL和扩展ACL中使用名称代替表号

命名ACL的配置

命名ACL在管理及维护方面更加方便,同时也支持友好的名称作为ACL名称,而不局限于使用ACL编号

配置命名ACL的语法

1、创建命名ACL

Router(config)# ip access-list { standard | extended } access-list-name

2、如果是标准命名ACL,命令语法如下

Router(config-std-nacl)# [ Sequence-Number ] { permit | deny } source [ source-wildcard ]

上述语法中Sequence-Number决定ACL语句在ACL列表中的位置

例如:配置规则,允许来自主机192.168.1.1/24的流量通过,而拒绝其他流量,标准命名ACL命令如下:
R1(config)#ip access-list standard test #创建名为test的标准命名ACL
R1(config-std-nacl)#permit host 192.168.1.1 #允许主机192.168.1.1的流量通过
R1(config-std-nacl)#deny any #拒绝其他流量
若退出后还要继续修改规则,可直接在全局模式下执行:Router(config)# ip access-list standard test进入ACL命名ACL组,继续写入如:
Router(config-std-nacl)#15 permit host 192.168.2.1
然后查看:
Standard IP access list cisco
10 permit 192.168.1.1
15 permit 192.168.2.1
20 deny any

 若要删除ACL中某条规则的可以执行“no+规则编号”,如想删除上面规则编号为10 的可以执行`“no   10”`
 若要删除上面已建立的命名ACL,命令语法如下:
 `R1(config)#  no ip access-list standard test `

创建扩展命名的ACL语法如下

R1(config)#ip access-list extended test #创建名为test的扩展命名ACL
Router(config-ext-nacl)# deny tcp 192.168.1.0 0.0.0.255 host 192.168.2.2 eq 21 #禁止网络192.168.1.0访问主机192.168.2.2的21端口。其中以上命令最后的“eq”命令字的作用是等于XX端口号还有 lt (小于)、gt(大于)、neq(不等于)几个选项。
Router(config-ext-nacl)# permit ip any any #允许所有流量通过

以上规则的作用是禁止192.168.1.0网络访问主机192.168.2.2的21端口,而允许其他任何流量通过


ACL应用位置

  • 标准访问控制列表:一般应用在OUT出站接口,建议配置在离目标端近的路由上
  • 扩展访问控制列表:一般应用在IN入站接口,建议配置在离源端最近的路由上
  • 命名访问控制列表:允许在标准和扩展访问列表使用名称表号

对于OUT 出站和IN入站这两个感念,我ACL一直理不太清楚,按照我的理解,出入站,这个站就是防护墙这个设备

ACL

访问控制列表应用到接口的方向与数据传输的方向有关

举个栗子

demo

标签: 访问控制列表

添加新评论