
1>扩展访问控制列表:
基于源和<目的地址>、<传输层协议>和<应用端口号>进行过滤每个条件都必须匹配,才会施加允许或拒绝条件
使用扩展ACL可以实现更加精确的流量控制
访问控制列表号从100到199
2>扩展访问控制列表的配置:
show access-list ---- 检查端口是否有ACL
access-list ---- 创建扩展访问控制列表
Router(config)#access-list access-list-number { permit | deny } protocol [source source-wildcard destination destination-wildcard ] [operator port] [established] [log]
ip access-group ---- 将扩展访问控制列表应用到某接口
Router(config-if)#ip access-group access-list-number { in | out }
3>命名的访问控制列表:
{标准ACL和扩展ACL中可以使用一个字母数字组合的字符串(名字)代替来表示ACL的表号命名IP访问列表允许从指定的访问列表删除单个条目}
{如果添加一个条目到列表中,那么该条目被添加到列表末尾}
{不能以同一个名字命名多个ACL}
{在命名的访问控制列表下,permit和deny命令的语法格式与前述有所不同}
4>命名的访问控制列表
第一步,创建名为cisco的命名访问控制列表
Router(config)#ip access-list extended cisco
第二步,指定一个或多个permit及deny条件
Router(config-ext-nacl)# deny tcp 172.16.4.0 0.0.0.255 172.16.3.0 0.0.0.255 eq 23
Router(config-ext-nacl)# permit ip any any
第三步,应用到接口E0的出方向
Router(config)#interface fastethernet 0/0
Router(config-if)#ip access-group cisco out

下面是命令参数的详细说明
access-list-number:访问控制列表号,扩展ACL取值是100-199。
permit|deny:如果满足规则,则允许/拒绝通过。
protocol:用来指定协议的类型,如IP,TCP,UDP,ICMP等。
source、destination:源和目的,分别用来标示源地址和目的地址。
souce-wildcard、destination-wildcard:子网反码,souce-wildcard是源反码,destination-wildcard是目标反码。
operator operan:lt(小于)、gt(大于)、eq(等于)、neq(不等于)一个端口号。
删除已建立的扩展ACL语法如下:
Router(config)#no access-list access-list-number
列如:允许192.168.1.0/24访问192.168.2.0/24,而拒绝其他所有主机访问。
Router(config)#access-list 101 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
Router(config)#access-list 101 deny ip any any
列如:拒绝网络192.168.1.0/24访问FTP服务器192.168.2.100/24,而允许其他主机访问。
Router(config)#access-list 102 deny tcp 192.168.1.0 0.0.0.255 host 192.168.2.100 eq 21
Router(config)#access-list 102 permit ip any any
列如:禁止网络192.168.1.0/24中的主机ping同服务器192.168.2.200/24,而允许其它主机访问。
Router(config)#access-list 103 deny icmp 192.168.1.0 0.0.0.255 host 192.168.1.200 echo
Router(config)#access-list 103 permit ip any any
将创建好的ACL应用与路由器的接口上
不管是标准ACL还是扩展ACL只有将创建好的ACL应用与路由器的接口上才算是有效的。语法如下:
Router(config-if)#ip access-group access-list-number {in|out}
参数解释如下:
access-list-number:创建ACL时指定的访问控制列表号
in:应用到入站接口。
out:应用出站接口。
取消接口上的ACL应用可以使用如下命令:
Router(config-if)#no ip access-group access-list-number {in|out}
可以使用show access-lists命令查看ACL配置。
注意:不管是标准ACL或者是扩展ACL,只要应用了该规则就不可以在向里面添加新的规则了,只能是删除整个ACL。这样很不方便我们管理ACL,那么我们改这么办呢?下面我们来讲解命名访问控制列表。
配置命名访问控制列表
所谓的命名控制列表就是给控制列表取个名字,而不是想上面所述的使用访问控制列表号。我们通过命令访问控制列表可以很方便的管理ACL规则,可以随便添加和删除规则,而无需删除整个访问控制列表了。
创建命名访问控制列表的语法如下:
Router(config)#ip access-list {standard|extended} access-list-name
下面是命令参数的详细说明
standard:创建标准的命名访问控制列表。
extended:创建扩展的命名访问控制列表。
access-list-name:命名控制列表的名字,可以是任意字母和数字的组合。
标准命名ACL语法如下:
Router(config-std-nacl)#[Sequence-Number] {permit|deny} source [souce-wildcard]
扩展命名ACL语法如下:
Router(config-ext-nacl)#[Sequence-Number] {permit|deny} protocol {source souce-wildcard destination destination-wildcard} [operator operan]
无论是配置标准命名ACL语句还是配置扩展命名ACL语句,都有一个可选参数Sequence-Number。Sequence-Number参数表明了配置的ACL语句在命令ACL中所处的位置,默认情况下,第一条为10,第二条为20,以此类推。Sequence-Number可以很方便地将新添加的ACL语句插于到原有的ACL列表的指定位置,如果不选择Sequence-Number,默认添加到ACL列表末尾并且序列号加10。
删去以创建的命名ACL语法如下:
Router(config)#no ip access-list {standard|extended} access-list-name
对于命名ACL来说,可以删除单条ACL语句,而不比删除整个ACL。并且ACL语句可以有选择的插入到列表中的某个位置,使得ACL配置更加方便灵活。
如果要删除某一ACL语句,可以使用“no Sequence-Number”或“no ACL”语句两种方式。
列如:将一条新添加的ACL加入到原有标准命名ACL的序列15的位置。内容为允许主机192.168.1.1/24访问Internet。
Router(config)#ip access-list standard test1
Router(config-std-nacl)#15 permit host 192.168.1.1
列如:创建扩展命名ACL,内容为拒绝192.168.1.0/24访问FTP服务器192.168.2.200/24,允许其他主机。
Router(config)#ip access-list extended test2
Router(config-ext-nacl)#deny tcp 192.168.1.0 0.0.0.255 host 192.168.2.200 eq 21
Router(config-ext-nacl)#permit ip any any
将命名ACL应用于接口语法如下:
Router(config-if)#ip access-group aaccess-list-name {in|out}
取消命名ACL的应用语法如下:
Router(config-if)#no ip access-group aaccess-list-name {in|out}