文档目的:
- XCM8800系列交换机的ACL编写方式与其它的NETGEAR交换机存在很大差异。本文档对ACL的功能与编写作出应用上的说明。
- ACL除了能实现基本的包的过滤和转发决定(如策略路由等)外,它也是实现多种其它
功能与特性的基础要素。多种基于ACL的功能与特性包括:
- 记录次数(匹配ACL的次数)
- 记录与查看包头部
- 镜像流量到一个监控端口,为具体的监控流量作匹配
- 将包送到一个QoS文件,为需要QoS的前期流量作匹配
- 计量匹配ACL的包去控制带宽
文档适用性:
本文主要针对XCM8800系列的三层的ACL设置,其它IPv6,二层ACL此文档或会有所涉及,但不作具体说明。
ACL的建立具有两种方法
一、基于Policy的ACL:
建立一个ACL的策略并将ACL的策略应用到一个端口集中列表,一个VLAN或者所有的端口。
步骤1:
ACL 策略建立 |
#edit policy |
创建一个策略并给策略起一个名字,系统将创建一个 policyname.pol的文件,“<>”指整体可更改字段。 |
~ |
进入到类似于LINUX 的VI编辑器,进行编写程序模式。输入“I”可以开始编写 |
Entry { |
给ACL起一个名字,“{”对应最后一行条目的“}”。“{}” 为一种书写格式,“{”和“}”必须为一对使用,在“{}” 中表明设备需要的各种属性项。 |
if {; ; --- __} |
match-conditions里面填写你需要匹配的属性项。以下会 有部分说明,切记“;”需要跟在属性项后。 match-conditions可以有多个,相互间是与关系。 |
then {; ; --- ----} |
action 里面填写匹配后的动作属性项,action-modifiers 里面填写将动作修改后的属性项。 action-modifiers可以有多个,相互间是顺序执行关系。 |
} |
对应ACL名字后面的“{”。 |
ESC |
退出编辑模式。 |
:wq/:q! |
保存文档并退出/不保存文档直接退出,退回到“#”模式。 |
Match-conditionsnt 属性项(部分): |
Ethernet-type |
Number指 IP:0x0800 8021Q:0x8100 IPv6:0x86DD |
ethernet-source-address |
以太网源地址,其中mac-address和mask格式为XX:XX:XX:XX:XX:XX/YY:YY:YY:YY:YY:YY 或XX:XX:XX:XX:XX:XX mask YY:YY:YY:YY:YY:YY,mask为可选项,默认mask 为FF:FF:FF:FF:FF:FF |
Ethernet-destination-address |
以太网目的地址,其中mac-address和mask格式为XX:XX:XX:XX:XX:XX/YY:YY:YY:YY:YY:YY 或XX:XX:XX:XX:XX:XX mask YY:YY:YY:YY:YY:YY,mask为可选项,默认mask 为FF:FF:FF:FF:FF:FF |
Protocol |
Number指tcp :6,udp:17,igmp:2,icmp:1 ip:4等等 |
Source-address |
IP源地址与掩码 格式:X.X.X.X/X |
Destination-address |
IP目的地址与掩码 格式:X.X.X.X/X |
Source-port or |
源端口 number格式:X 范围:1~65535 number range格式:X-X范围:1~65535 |
destination-port or |
目的端口 number格式:X范围:1~65535 number range格式:X-X范围:1~65535 |
其它选项请参考官方文档链接:http://support.netgear.cn/doucument/Detail.asp?id=2108 XCM8800系列用户手册中列表31 (Table 31)。 |
Actions |
Permit |
Action中的允许动作,是默认行为。 |
Deny |
Action 中的丢弃动作。 |
Action Modifiers |
Count |
递增次数(匹配ACL的次数)countname 给一个名字以方便显示匹配数使用。查看次数的命令为: Show access-list couter [][any|ports|vlan ][ingress|egress] |
Log/log-raw |
记录包头部/以十六进制格式记录包头部 |
Meter |
依据流量的速率产生动作。 |
Mirror |
发送一份包的副本(拷贝)到监控(镜像)端口(只在入站方向) |
Mirror-cpu |
发送一份包的副本(拷贝)到CPU,用于产生LOG。 |
Qosprofile |
转发包到具体指定的QoS 文档 |
Traffic-queue |
放置流量到具体指定的流量队列 |
Redirect |
转发包到具体的IPv4地址(用于策略路由)。 |
Replace-dscp |
从已关联的QoS文档中替换掉DSCP的值。 |
Replace-dot1p |
从已关联的QoS文档中替换掉QoS的值 |
Replace-ethernet-destinaton -address |
替换包的目的MAC地址,此应用只用于2层转发流量 |
Redirect-port |
重写转发决定且改变已使用的出站端口。 |
步骤2:
查看策略是否已写成功命令:# check policy
当编写完policy时,需要检查policy语法是否已写正确,当屏幕回显: “Policy file check successful.” 说明策略的语法已通过测试.
要注意的是:上面回显只代表书写语法正确,不代表在策略含义上已写对并能匹配到正确的流量。
步骤3:
将ACL的Policy应用到端口、VLAN、所有接口:
#configure access-list {any | ports | vlan }
{ingress|egress}
从端口上移除 ACL的Policy:
#unconfigure access-list {any | ports | vlan }{ingress | egress}
注意:应用到VLAN的ACL情况等同于应用到所有的接口,而不是只应用到VLAN所包括的端口。
具体例子:
要求:
- 在XCM8800系列的交换机上建立一个ACL拒绝流量从源为10.203.134.0/24,端口是:190, 到目的主机:140.158.18.16/32,端口为:1200到1250的UDP流量。
- 放行其它流量。
- 在1:10端口入站方向(ingress)应用。
编辑 policy 时常用的命令 |
i |
在初始光标位置前插入内容 |
a |
在初始光标位置后插入内容 |
dd |
删除当前行 |
yy |
复制当前的行 |
p |
粘贴行的复制 |
:w |
保存文档 |
:q |
没有改变Policy时退出 |
:q! |
强制退出不管Policy有没有变化 |
:wq |
保存Policy并退出 |
注:以上命令通过按ESC进行切换 |
#edit policy udpacl
entry comeonA {
If {
source-address 10.203.134.0/24;
destination-address 140.158.18.16/32;
protocol udp;
source-port 190;
destination-port 1200 – 1250;
}
then {
deny;
}
entry comeonB{
if {}
then{permit;}
编写要点:
- policy 和entry名字可以不一样,entry间的名字要求不一样。
- 上面的示例中使用到的“{}”只要成对出现即可,不需要考虑前后是否存在空格。
- 由于默认是禁止所有流量通行,需要在comeonB中放行其它流量。
- 将ACL应用在入站方向(ingress)上,要match所有流量只需要使用“if {}”即可,
如果应用在出站方向(egress)上,match 所有流量需要使用“if {source-address 0.0.0.0/0}”
上面的例子comeonB只应用到ingress 方向,所以采用“if {}”
- 在最后的“}”的下一行开始,每一行必须要带有“~”符号开始,将不需要的空行、空格或文字删除,这时才能在check policy udpacl中检查policy成功。
在全局模式下(“#”)对policy需要使用到的检查、查看、更名、删除policy的命令
#check policy //policyname后面不需要加后缀名
例如: #check policy udpacl
查看所有或单个文件,包括policy:
#ls 或#ls suffix> //后面需要加入后缀名(suffix)
例如:#ls udpacl.pol
更名一个文件或一个policy:
#mv suffix> suffix> //将前一个文件名改为后一个文件名 ,且要加后缀名。
例 如:#mv udpacl.pol www.pol
删除一个文件或一个policy:
#rm suffix> //删除www的policy,且要加后缀名。此处只作命令说明,对上面所举例子不作实际删除
例如:#rm www.pol
应用ACL到接口
#configure access-list udpacl ports 1:10 ingress
最后不要忘记保存所有配置,包括ACL列表的应用
#save
二、动态ACL:
动态ACL的建立直接使用CLI界面,它的使用相似于policy的ACL的表达方式,能完成相同的动作,简单且直观。多条的动态ACL可以被应用到一个接口上,条目应用的优先级别也可以被配置。动态ACL比policy 的ACL应用到接口有更高的优先级别,在理解XCM8800系列的交换机的ACL配置语法的情况下,一般更多会使用动态ACL。
表达方式:
#create access-list [non-permanent]
//表示ACL的名字,在动态ACL中必须是唯一的,但它可以和policy的ACL重名。
//表示的条件,等同于policy中的if{……},使用“;”分隔条件。
//表示的动作,等同于policy中的then{……},使用“;”分隔条件。
[non-permanent] //可选项,默认为永久保留。使用此命令后,save 保存配置后,动态ACL不被保留
应用动态ACL到接口:
configure access-list add [ [[first | last] {priority } {zone } ] | [[before | after] ] | [ priority {zone } ]] [ any | vlan | ports ] {ingress | egress}
first //在写入多条 ACL 时,作为第一条需要匹配的 ACL 列表在最前
last //在写入多条ACL时,作为最后一条需要匹配的ACL列表在最后
before //指定该ACL放置在某一条ACL之前,后面参数需要写入一条ACL的名字
after //指定该ACL放置在另一条ACL之后,后面的参数需要写入一条ACL的名字
从接口中移除动态ACL
configure access-list delete [ any | vlan | ports | all] {ingress | egress}
具体例子:
要求:对于ICMP协议的流量进行匹配,并统计数包数量并在管理端口上禁止PING入:
#create access-list icmp-echo “protocol icmp;icmp-type echo-request””deny;count echo”
以上条目解释:
icmp-echo //给动态ACL起名字,表明本ACL针对icmp的echo包。
“protocol icmp; //条件中的一个选项,表明需要匹配到的协议是ICMP,条件最前面用双引号,条件间用冒号分隔。
icmp-type echo-request; //条件中的另一个选项,ICMP的类型是 echo-request,条件间用冒号分隔,条件陈述完使用双引号结束状态。
“deny” //另一个双引号代表动作选项为deny,仍然需要使用双引号。默认最后为永久保存型。
将动态ACL应用到管理接口入站方向:
#configure access-list add “icmp-echo” vlan “Mgmt” ingress
以上条目解释:
add //增加一个条目
“icmp-echo” //表示动态ACL的名字,需要双引号
vlan //应用到的是管理VLAN
“Mgmt” //管理VLAN的名字是Mgmt,需要双引号
查看动态ACL丢弃ICMP包的数目
#show access-list dynamic counter
移除动态ACL
#configure access-list del “icmp-echo” vlan “Mgmt”
#del access-list “icmp-echo”
清除ACL中ICMP包的数目
#clear access-list dynamic counter
最后不要忘记保存所有配置,包括ACL列表的应用
#save
序号 no. |
日期 date |
作者 author |
摘要 summary |
1 |
2012-08-29 |
Sam Li |
文档创建 |
2 |
2013-06-28 |
Sam Li |
文档修改 |