更新时间:2023-12-08
1IPv6访问控制列表配置命令
本章描述了用来配置IPv6访问控制列表的命令及其方法,用于对用户访问网络的权限控制。命令主要包括Deny、Permit和Sequence三个部分。
IPv6访问列表配置命令包括:
配置命令 |
主要功能 |
ipv6 access-list |
建立标准的和扩展的IPv6访问列表 |
ipv6 access-group |
将访问列表应用到端口 |
deny/permit |
过滤报文 |
sequnence |
配置访问列表序号 |
show ipv6 access-list |
展示配置的访问列表 |
1.1IPv6 ACL命令配置
1.1.1ipv6 access-list
配置访问列表的名字,并进入IPv6 ACL命令配置模式。在用exit命令退出访问列表配置模式后,使用该命令的no形式可以删除该访问控制列表。
ipv6 access-list access-list-name
no ipv6 access-list access-list-name
参数
参数 |
参数说明 |
access-list-name |
访问列表名。 |
缺省
不存在缺省的访问列表,必须配置访问列表名。
命令模式
全局配置态。执行此命令后进入IPv6访问控制列表配置态。
使用说明
1.IPv6不再使用数字访问列表,数字也将作为名字访问列表处理;而且IPv4和IPv6的访问列表不能使用相同的名字,否则端口无法识别。
2.IPv6 ACL默认配置是允许ICMPv6的ND报文(相当于IPv4的ARP),但禁止其他IPv6报文。也就是说,在用deny配置规则时,应该在最后添加一条permit any any。规则如下:
permit icmpv6 any any nd-na
permit icmpv6 any any nd-ns
deny ipv6 any any
示例
下面的示例创建了一个IPv6访问控制列表,用deny配置了阻止了源地址前缀为FEC0:0:0:2::/64目的地址为任何值(any)的报文,而允许(permit)其它任何报文的规则。并将其应用在千兆以太网接口G1/1上。
ipv6 access-list list2
deny FEC0:0:0:2::/64 any
permit ipv6 any any
interface G1/1
ipv6 access-group list2 egress
相关命令
deny (IPv6)
permit (IPv6)
ipv6 access-group
show ipv6 access-list
1.1.2ipv6 access-group
该命令将特定名字的访问控制列表应用到特定的vlan端口上。使用本命令的no形式将取消对该端口的访问控制。
ipv6 access-group access-list-name {in | out}
no ipv6 access-group {in | out}
参数
参数 |
参数说明 |
access-list-name |
ipv6 access-list access-list-name中,配置的访问列表名字。 |
in |
过滤进入端口的报文。 |
out |
过滤离开端口的报文。 |
缺省
不存在缺省的访问列表,必须配置特定的访问列表名到指定端口才有效。
命令模式
vlan端口配置态
使用说明
第1章ipv6 access-group过滤的是交换机转发的报文,而不是交换机自身产生的报文。
示例
下面的示例在vlan端口下,将访问列表规则”example”应用到离开端口的报文规则中。
Switch_config#interface vlan 4
Switch_config_v4#ipv6 access-group example out
相关命令
ipv6 access-list
show ipv6 access-list
1.1.3deny/permit
对于需要拒绝的报文,应使用deny命令及其相关参数设定规则。使用该命令的no形式可以删除设定的规则。
deny protocol {source-ipv6-prefix/prefix-length | any | host source-ipv6-address} [operator [port-number]] {destination-ipv6-prefix/prefix-length | any | host destination-ipv6-address} [operator [port-number]] [dest-option-type [doh-number | doh-type]] [dscp value] [flow-label value] [fragments] [log] [log-input] [routing] [sequence value] [time-range name] [undetermined-transport]
no deny protocol {source-ipv6-prefix/prefix-length | any | host source-ipv6-address} [operator [port-number]] {destination-ipv6-prefix/prefix-length | any | host destination-ipv6-address} [operator [port-number]] [dest-option-type [doh-number | doh-type]] [dscp value] [flow-label value] [fragments] [log] [log-input] [routing] [sequence value] [time-range name] [undetermined-transport]
deny icmpv6 {source-ipv6-prefix/prefix-length | any | host source-ipv6-address} [operator [port-number]] {destination-ipv6-prefix/prefix-length | any | host destination-ipv6-address} [operator [port-number]] [icmp-type [icmp-code] | icmp-message] [dest-option-type [doh-number | doh-type]] [dscp value] [flow-label value] [fragments] [log] [log-input] [routing] [sequence value] [time-range name]
deny tcp {source-ipv6-prefix/prefix-length | any | host source-ipv6-address} [operator [port-number]] {destination-ipv6-prefix/prefix-length | any | host destination-ipv6-address} [operator [port-number]] [ack] [dest-option-type [doh-number | doh-type]] [dscp value] [established] [fin] [flow-label value] [fragments] [log] [log-input] [neq {port | protocol}] [psh] [range {port | protocol}] [routing] [rst] [sequence value] [syn] [time-range name] [urg]
deny udp {source-ipv6-prefix/prefix-length | any | host source-ipv6-address} [operator [port-number]] {destination-ipv6-prefix/prefix-length | any | host destination-ipv6-address} [operator [port-number]] [dest-option-type [doh-number | doh-type]] [dscp value] [flow-label value] [fragments] [log] [log-input] [neq {port | protocol}] [range {port | protocol}] [routing] [sequence value] [time-range name]
绿色:deny protocol、deny icmp、deny tcp、deny udp都有的字段。
红色:deny protocol有而deny icmp、deny tcp、deny udp没有的字段,而且permit也没有。
蓝色:deny protocol没有而deny icmp、deny tcp、deny udp有的字段。
对于需要允许的报文,应使用permit命令及其相关参数设定规则。使用该命令的no形式可以删除设定的规则。
permit protocol {source-ipv6-prefix/prefix-length | any | host source-ipv6-address} [operator [port-number]] {destination-ipv6-prefix/prefix-length | any | host destination-ipv6-address} [dscp value] [flow-label value] [fragments] [log] [log-input] [routing] [sequence value] [time-range name] [undetermined-transport]
no permit protocol {source-ipv6-prefix/prefix-length | any | host source-ipv6-address} [operator [port-number]] {destination-ipv6-prefix/prefix-length | any | host destination-ipv6-address} [dscp value] [flow-label value] [fragments] [log] [log-input] [routing] [sequence value] [time-range name] [undetermined-transport]
permit icmpv6 {source-ipv6-prefix/prefix-length | any | host source-ipv6-address} [operator [port-number]] {destination-ipv6-prefix/prefix-length | any | host destination-ipv6-address} [icmpv6-type [icmpv6-code] | icmpv6-message] [dscp value] [flow-label value] [fragments] [log] [log-input] [routing] [sequence value] [time-range name]
permit tcp {source-ipv6-prefix/prefix-length | any | host source-ipv6-address} [operator [port-number]] {destination-ipv6-prefix/prefix-length | any | host destination-ipv6-address} [operator [port-number]] [ack] [dscp value] [established] [fin] [flow-label value] [fragments] [log] [log-input] [neq {port | protocol}] [psh] [range {port | protocol}] [routing] [rst] [sequence value] [syn] [time-range name] [urg]
permit udp {source-ipv6-prefix/prefix-length | any | host source-ipv6-address} [operator [port-number]] {destination-ipv6-prefix/prefix-length | any | host destination-ipv6-address} [operator [port-number]] [dscp value] [flow-label value] [fragments] [log] [log-input] [neq {port | protocol}] [range {port | protocol}] [routing] [sequence value] [time-range name]
参数
参数 |
参数说明 |
protocol |
网络协议名或协议号。目前支持的协议名有ahp(51), esp(50), icmpv6(58), ipv6(41), pcp(108), sctp(132), tcp(6), udp(17)。 |
source-ipv6-prefix/prefixlength |
源IPv6前缀/前缀长度。 |
any |
IPv6前缀::/0的缩写。 |
host source-ipv6-address |
源IPv6主机地址。 |
operator [port-number] |
(可选)比较的运算符和端口号,只对tcp和udp协议有效。operator有lt (less than), gt (greater than), eq(equal), neq(not equal)和range(inclusive range)。range运算符后带有两个端口号,其他运算符只带一个端口号。port-number的范围是0-65535。 |
destination-ipv6-prefix/prefix-length |
目的IPv6前缀/前缀长度。 |
host destination-ipv6-address |
目的IPv6主机地址。 |
dscp value |
(可选)区分服务代码点(dscp, differentiated services code point)。用于匹 配IPv6分组头Traffic Class域,0-63。其中已经定义的有af11(001010), af12(001100), af13(001110), af21(010010), af22(010100), af23(010110), af31(011010), af32(011100), af33(011110), af41(100010), af42(100100), af43(100110), cs1(001000), cs2(010000), cs3(011000), cs4(100000), cs5(101000), cs6(110000), cs7(111000), ef(101110), default(000000) |
flow-label value |
(可选)IPv6分组头的流标记域,1-1048575(1024*1024-1)。 |
fragments |
(可选)当分片扩展头包含非0的offset时,匹配非初始分片分组。只有operator [port-number]不被声明时,fragments才是可选的。 |
log |
(可选)当分组匹配时,将日志信息发送到console口。日志信息应该包含访问列表名、序列号、分组是否被禁止(deny/permit)、协议/协议号(TCP, UDP, ICMPv6, etc.)、源地址/目的地址、源端口号/目的端口号等。 |
log-input |
(可选)与log有同样的功能,另外还包括报文进入的接口。 |
routing |
(可选)匹配被源路由的IPv6分组的路由扩展头。 |
sequence value |
(可选)指定访问列表的排列顺序号值,方便用户对访问列表的添加1-4294967295 (65536*65536-1)。IPv4访问列表只能将规则依次添加在最后一项,而IPv6访问列表可以利用sequence将规则添加在希望的任何位置,如果新添加的顺序号位置原来已经有规则,则将该条规则覆盖。 |
time-range name |
(可选)对访问列表做出时间范围的规定。在time-range命令里,用absolute/periodic关键字将时间规则name应用在访问列表上。 |
undetermined-transport |
(可选)匹配第4层协议无法判断的分组,只有在protocol未被声明时,undetermined-transport才是可选的。如果protocol是ipv6,也表示IPv6的第4层协议未被声明。 |
icmpv6-type |
(可选)ICMPv6报文类型,0-255。 |
icmpv6-code |
(可选)ICMPv6报文码,0-255。 |
icmpv6-message |
(可选)通过ICMPv6报文名(RFC规定的报文名和报文码所构成ICMP报文类型,如目的不可达等),0-255。 |
ack |
(可选)只用于TCP报文,acknowledgment(ACK)位匹配设定。 |
fin |
(可选)只用于TCP报文,finish(FIN)位匹配设定。 |
psh |
(可选)只用于TCP报文,push(PSH)位匹配设定。 |
rst |
(可选)只用于TCP报文,reset (RST)位匹配设定。 |
syn |
(可选)只用于TCP报文,synchronize(SYN)位匹配设定。 |
urg |
(可选)只用于TCP报文,urgent(URG)位匹配设定。 |
established |
(可选)只用于TCP报文,当TCP报文的ACK或RST位被设定时,表示匹配(已建立)。当该条规则被设定为deny时,用于拒绝由外部网络向内部网络发起的连接,而允许由内部向外部发起的连接。 |
eq{port | protocol} |
(可选)只匹配在指定端口号的分组。protocol为指定的协议名。 |
gt{port | protocol} |
(可选)只匹配大于指定端口号的分组。protocol为指定的协议名。 |
lt {port | protocol} |
(可选)只匹配小于指定端口号的分组。protocol为指定的协议名。 |
neq {port | protocol} |
(可选)只匹配不在指定端口号的分组。protocol为指定的协议名。 |
range {port | protocol} |
(可选)只匹配指定端口号范围内的分组。protocol为指定的协议名。 |
缺省
1.顺序号:
与IPv4的ACL不同,IPv6的ACL可以用permit, deny, sequence在已有访问列表的任何位置进行添加,而不仅是在ACL的末尾。因此,需要对访问列表加入编号,如果用户没有手动配置访问列表的顺序号,缺省的第一个ACL序列号是10,以后依次+10;如果用户指定了顺序号,将按照此顺序号插入;如果用户指定顺序号与现有的一条ACL的顺序号相同,则覆盖现有顺序号的ACL;在用户指定了顺序号后,最后一条规则的顺序号可能不是10的整数倍,此时,当添加未指定顺序号的ACL规则时,将以最后一条规则的+10作为序列号。
2.默认规则:
与IPv4 ACL类似,当只配置了ACL的名字,而没有进行规则配置时,访问列表不会禁止任何规则,即:
permit icmpv6 any any nd-na
permit icmpv6 any any nd-ns
permit ipv6 any any
注意到,由于在IPv6中ICMP的作用相当于IPv4中的ARP,因此在默认状态下是允许邻居发现的邻居通告和邻居请求报文通过的。而如果只要在IPv6 ACL规则中配置了一条规则,不满足该条规则的报文的隐含匹配条件是允许ICMPv6报文,而禁止所有IPv6报文,即:
permit icmp any any nd-na
permit icmp any any nd-ns
deny ipv6 any any
所以,如果希望不满足规则的报文不会被禁止,应该在IPv6 ACL的最后添加一条permit ipv6 any any。
命令模式
IPv6访问列表配置态
使用说明
1.ICMPv6报文名字如下:
• beyond-scope
• destination-unreachable
• echo-reply
• echo-request
• header
• hop-limit
• mld-query
• mld-reduction
• mld-report
• nd-na
• nd-ns
• next-header
• no-admin
• no-route
• packet-too-big
• parameter-option
• parameter-problem
• port-unreachable
• reassembly-timeout
• renum-command
• renum-result
• renum-seq-number
• router-advertisement
• router-renumbering
• router-solicitation
• time-exceeded
• unreachable
2.已定义的TCP端口号上的协议有:
• bgp(179)
• chargen(19)
• cmd(514)
• daytime(13)
• discard(9)
• domain(53)
• echo(7)
• exec(512)
• finger(79)
• ftp(21)
• ftp-data (20)
• gopher (70)
• hostname (101)
• ident (113)
• irc (194)
• klogin (543)
• kshell (544)
• login (513)
• lpd (515)
• nntp (119)
• pim-auto-rp (496)
• pop2 (109)
• pop3 (110)
• smtp (25)
• sunrpc (111)
• syslog (514)
• talk (517)
• time (37)
• uucp (540)
• whois (43)
• www (80)
3.已定义的UDP端口号上的协议有:
• biff (512)
• bootpc (68)
• bootps (67)
• discard (9)
• dnsix (195)
• domain(53)
• echo(7)
• isakmp (500)
• netbios-dgm (138)
• netbios-ns (137)
• netbios-ss (139)
• ntp (123)
• pim-auto-rp (496)
• rip (520)
• snmp (512)
• snmptrap (162)
• sunrpc (111)
• syslog (514)
• talk (517)
• tftp (69)
• time (37)
• who (513)
• xdmcp (177)
示例
下面的示例创建了一个IPv6访问列表“example”,并为其制定了4条规则。第一条规则拒绝了所有目的端口号大于5000的tcp连接的报文;第二条规则拒绝了所有源端口号小于5000的udp的报文,并在规则匹配时向console口发送日志;第三条规则允许了所有的icmpv6报文;第四条规则允许了其他所有不满足规则的报文。注意,第四条规则在配制访问列表时,如果用户希望不满足规则的报文不会被拒绝,应该添加这条规则。最后,在端口配置态下,将该规则应用在交换机的以太网端口g2/1的外出方向上。。
ipv6 access-list example
deny tcp any any gt 5000
deny udp ::/0 lt 5000 ::/0 log
permit icmpv6 any any
permit any any
exit
int gigaEthernet 2/1
ipv6 access-group example egress
相关命令
ipv6 access-list
ipv6 access-group
show ipv6 access-list
list
1.1.4sequence
sequence命令是IPv6访问列表为方便用户,可以在已经添加好的访问列表的任何位置插入新的访问列表,或覆盖原有相同顺序号的访问列表,不必像IPv4中配置访问列表一样只能将新规则添加在最末尾一条。使用该命令的no形式可以删除这条规则。
sequence value {deny | permit} protocol {source-ipv6-prefix/prefix-length | any | host source-ipv6-address} [operator [port-number]] {destination-ipv6-prefix/prefix-length | any | host destination-ipv6-address} [operator [port-number]] [dscp value] [flow-label value] [fragments] [log] [log-input] [routing] [time-range name] [undetermined-transport]
no sequence value {deny | permit} protocol {source-ipv6-prefix/prefix-length | any | host source-ipv6-address} [operator [port-number]] {destination-ipv6-prefix/ prefix-length | any | host destination-ipv6-address} [operator [port-number]] [dscp value] [flow-label value] [fragments] [log] [log-input] [routing] [time-range name] [undetermined-transport]
sequence {deny | permit} icmpv6 {source-ipv6-prefix/prefix-length | any | host source-ipv6-address} [operator [port-number]] {destination-ipv6-prefix/prefix-length | any | host destination-ipv6-address} [icmpv6-type [icmpv6-code] | icmpv6-message] [dscp value] [flow-label value] [fragments] [log] [log-input] [routing] [time-range name]
sequence {deny | permit} tcp {source-ipv6-prefix/prefix-length | any | host source-ipv6-address} [operator [port-number]] {destination-ipv6-prefix/prefix-length | any | host destination-ipv6-address} [operator [port-number]] [ack] [dscp value] [established] [fin] [flow-label value] [fragments] [log] [log-input] [neq {port | protocol}] [psh] [range {port | protocol}] [routing] [rst] [syn] [time-range name] [urg]
sequence {deny | permit} udp {source-ipv6-prefix/prefix-length | any | host source-ipv6-address} [operator [port-number]] {destination-ipv6-prefix/prefix-length | any | host destination-ipv6-address} [operator [port-number]] [dscp value] [flow-label value] [fragments] [log] [log-input] [neq {port | protocol}] [range {port | protocol}] [routing] [time-range name]
参数
参数的解释和1.1.3节的deny/permit完全相同,只是将sequence命令关键字放在了最前面。
缺省
与1.1.3节的deny/permit的缺省规则相同。
命令模式
IPv6访问列表配置态
使用说明
可以用permit, deny, remark, evaluate在已有acl列表的任何位置进行添加,而不仅是在acl的末尾。在两个已存的入口号中间,创建一个适当的入口号作为添加。缺省的默认的第一个acl入口号是10,后续的acl入口号应该以10作为递增。
sequence关键字是用来做这个的:
如果没有指定seq,第一个seq=10,以后依次递增;
如果已经指定seq,此后添加没有seq的ipv6acl将被加在最后,并在最后一个seq上加10;
如果已经指定seq,此后添加有seq的ipv6acl将被插入中间;
如果已经指定seq,此后添加有seq的ipv6acl,且seq与现有的相同,则更新该seq的ipv6acl;
如果直接指定seq XXX,则表示seq XXX deny 0 any any;
其他与1.1.3节的deny/permit使用说明相同。
示例
下面的示例与1.1.3节的规则配置相同,只是在添加每条规则时在最前端加入了sequence顺序号,便于以后的管理。
ipv6 access-list example
sequence 30 deny tcp any any gt 5000
sequence 70 deny udp ::/0 lt 5000 ::/0 log
sequence 75 permit icmpv6 any any
sequence 76 permit any any
如果要在现有规则中添加一条新的规则,如果用下面的命令再添加一条规则:
deny ipv6 FE80::/64 any log-input
该规则将被添加到最后,并被自动编号其sequence为76+10=86。如果用户在添加新规则时明确指定了顺序号,如下面这条命令:
sequence 50 deny ahp any any
或 deny ahp any any sequence 50
该规则将被插入到顺序号为30和70的规则中间。如果用户指定的顺序号与原有的顺序号相同,如下面这条命令:
sequence 75 deny esp any any log
或deny esp any any log sequence 75
原有访问列表中,顺序号为75的规则将被覆盖。如下所示是添加了3条规则后的访问列表的变化情况:
ipv6 access-list example
sequence 30 deny tcp any any gt 5000
sequence 50 deny ahp any any
sequence 70 deny udp ::/0 lt 5000 ::/0 log
sequence 75 deny esp any any log
sequence 76 permit any any
deny ipv6 FE80::/64 any log-input sequence 86
相关命令
deny(IPv6)
permit(IPv6)
ipv6 access-list
ipv6 access-group
show ipv6 access-list
list
1.1.5show ipv6 access-lists
该命令显示IPv6 ACL的规则信息情况。
show ipv6 access-lists [access-list-name]
参数
参数 |
参数说明 |
access-list-name |
访问列表名字。 |
缺省
如果没有输入访问列表名字,则显示所有的访问列表。
命令模式
全局配置态或管理态
使用说明
使用show ipv6 access-lists命令显示IPv6访问列表的格式,与使用show running时显示的IPv6 ACL格式不相同。用show running显示时,输入时指定顺序号的规则将把顺序号显示在最开始的位置,而没有指定顺序号的规则将把顺序号显示在最末的位置,如1.1.4节的示例。而当使用show ipv6 access-lists命令时,无论在输入规则时是否指定了顺序号,顺序号都将显示在规则的最后位置,如本节的示例。
示例
输入命令show ipv6 access-lists后,显示example1和example2:
ipv6 access-list example1
permit ipv6 any any sequence 10
deny icmpv6 any any 255 255 routing sequence 20
exit
ipv6 access-list example2
permit icmpv6 12::/0 host 34:: header dscp ef fragments sequence 20
permit icmpv6 any any header flow-label 987 sequence 30
deny ahp any any routing log time-range example_TIMER sequence 50
deny icmpv6 any any 255 255 sequence 8918
permit any any sequence 8928
输入命令show ipv6 access-list example1后,只显示example1:
ipv6 access-list example1
permit ipv6 any any sequence 10
deny icmpv6 any any 255 255 routing sequence 20
相关命令
ipv6 access-lists