资源描述
前言:
本着“共同学习,共同提高”的宗旨,我们汇总整理了华为接入网设备日常维护中需要特别注意的事项和常见问题解答,发布在华为技术支持网站首页“华为资源-电子期刊-接入网宝典”栏目,希望对您的日常设备维护工作有所帮助。让我们携起手来,共同打造可运营、可管理的精品网络!
接入网宝典
―ACL原理及ESR实现ACL的方法
尊敬的客户:
本期主要对ACL原理及ESR实现ACL的方法作简单介绍。
一、 ACL概念
ACL(Access Control List)的中文名称为访问控制列表. ISN8850提供强大的ACL支持,可以起到报文过滤、防攻击和NAT的作用。可以配置两种ACL规则,标准ACL规则和扩展ACL规则。
Ø 标准ACL
标准ACL规则是指规则组号为1~99的规则组,标准ACL规则配置是动作+源地址范围,如:
access-list 20 permit 192.168.0.1 0.0.0.255
组号 动作 源地址范围
标准ACL规则主要用于软件模块进行权限过滤,需要与特定的软件模块绑定,如NAT(老配置)、Telnet、OSPF、SNMP等;
配置ACL规则中IP地址有两种方式:配置一个网段或一个用户。
配置一个网段时,掩码使用通配比较位。通配比较位用法类似于子网掩码,是实际网络掩码的取反。
配置只允许一个用户时,掩码设置为0。
IP地址与地址通配位的关系语法上规定如下:在通配位中相应位为1的地址中的位在比较中被忽略。地址与通配位都是32位的长整型数。如通配位是0.255.255.255,则比较时,高8位需要比较,其他的都被忽略。如IP地址是129.100.20.1,通配位是0.0.0.255,则地址与通配位合在一起表示129.100.20.0网段。
例:设置标准ACL,只允许10.19.20.5一台主机接入。
BRAS(config)#access-list 10 permit 10.19.20.5 0
例:设置标准ACL,禁止129.100.20.1/24网段的主机接入。
BRAS(config)#access-list 11 deny 129.100.20.1 0.0.0.255
设置完成后可在特权模式下使用命令[show access-list]查看指定ACL的信息。
Ø 扩展ACL
扩展ACL规则是指规则组号为164~999的规则组,扩展ACL规则配置是动作+IP五元组(实际上是四元组,分别为源IP地址、目的IP地址、协议号、目的端口。不包括四层源端口号),如:
access-list 200 deny tcp 192.168.0.1 0.0.0.255 200.0.0.1 0.255.255.255 eq 80
组号 动作 协议 源地址范围 目的地址范围 目的端口号
扩展ACL是使用硬件(NP)实现的,实现了对数据报文的过滤。
其中规则组号为100~163为系统保留使用。
Ø 扩展ACL分类
ISN8850的扩展ACL分为安全类和NAT类,安全类ACL负责对报文的过滤以达到对报文的安全控制,NAT类ACL规则负责判断报文是否需要做NAT。
可以通过以下命令设置扩展ACL规则的类型,如:
access-list 199 type normal (安全类ACL规则组)
access-list 200 type nat (NAT类ACL规则组)
安全类规则组可以配置的动作有permit、deny和redirect。
NAT类规则组可以配置的动作有permit、deny和nat。
对于一类的ACL规则组中绝对不可以出现另一类ACL规则组的动作,例如在安全类规则组中不能出现带nat关键字的ACL规则。
redirect是重定向动作,它的作用是对报文不使用报文的目的地址查找路由,而是使用配置的重定向下一跳IP地址查找路由,如:
access-list 500 redirect 10.0.0.2 ip any any
这条ACL规则的意思是将所有报文重定向到下一跳10.0.0.2,即查找路由时不使用报文里的目的IP地址查找,而是使用10.0.0.2去查找路由转发报文。注意这个重定向地址不是本机接口的地址,而是本机接口的对端地址。
Ø 扩展ACL排序规则
对同一个ACL规则组,ACL规则的匹配顺序是按照ACL规则的先后顺序匹配的,找到一条匹配的ACL规则(四元组匹配)马上返回动作,不再查找后面的ACL规则。如果该ACL规则组没有匹配到则继续匹配下一个ACL规则组。
一个ACL规则组中的ACL规则的顺序是由该规则组的排序类型决定的,规则组的缺省排序类型是“config”,即根据配置的先后排列,如果使用下面的命令:
access-list 300 match-order auto
将ACL规则组的排序类型改为“auto”,那么该规则组的规则按照下面的规则排序:
1、源地址范围小的插在前面,源地址范围大的插在后面,源地址范围相等则使用下面的第2条规则继续判断;
2、目的地址范围小的插在前面,目的地址范围大的插在后面,目的地址范围相等的则使用下面的第3条规则继续判断;
3、目的端口范围小的插在前面,目的端口范围大的插在后面,目的端口范围也相等的插在后面。
在两类ACL规则组中还有共有的动作:permit和deny,在两类规则中deny的意思都是表示丢弃报文,但是permit在安全类ACL规则中表示的是报文可以通过,在NAT类ACL规则中表示的是可以通过但不做NAT!
二、 ACL在ISN8850的实现方式
Ø ACL规则组的配置
首先介绍一个概念profile,profile就是一组ACL规则组的集合。
ACL规则组必须应用于profile中才能起作用,profile可以应用于接口下,也可以配置在ISP域中,还可以由RADIUS服务器通过filter-ID下发。
一个Profile中可以配置8个安全类ACL规则组和8个NAT类规则组,它们的匹配顺序是先匹配安全类ACL规则组,安全类ACL匹配到的动作如果不是deny则继续匹配NAT类ACL规则,否则不匹配NAT类ACL规则组。例如:
配置一个安全类规则组:
access-list 201 type normal
access-list 201 permit ip any 61.175.164.14 0
access-list 201 redirect 10.71.248.1 ip any 10.0.0.0 0.255.255.255
access-list 201 deny ip any any
配置一个NAT类规则组:
access-list 202 type nat
access-list 202 nat pool poola ip 218.72.48.0 0.0.7.255 10.0.0.0 0.255.255.255
access-list 202 nat pool poola ip 218.72.56.0 0.0.7.255 10.0.0.0 0.255.255.255
access-list 202 nat pool poola ip 218.72.64.0 0.0.15.255 10.0.0.0 0.255.255.255
再将这两个ACL规则组加入一个Profile:
profile cernet
ip access group 201
ip access group 202
然后将这个profile应用到接口或ISP下。假设用户A的IP地址为218.72.48.22,他去访问10.0.0.22这台服务器,ACL规则的匹配顺序如下:
先匹配安全类规则组201,匹配到access-list 201 redirect 10.71.248.1 ip any 10.0.0.0 0.255.255.255这条规则,由于这条规则的动作是redirect(非deny),所以不再匹配下面的安全类规则(组),继续匹配NAT类规则;
匹配NAT类规则组202,匹配到access-list 202 nat pool poola ip 218.72.48.0 0.0.7.255 10.0.0.0 0.255.255.255这条规则,所以这个报文将会使用POOL池poola做NAT;
综合查找到的安全类和NAT类ACL规则的动作,这个报文将送到poola所在的NAT板进行处理,处理完后重定向到10.71.248.1。
如果用户A去访问(IP地址211.100.15.170),那么在查找安全类ACL规则201时匹配到access-list 201 deny ip any any,由于该规则的动作是deny,所以不再查找其他的安全类规则(组)和NAT类规则组。
如果用户B的IP地址为172.16.1.99,他也去访问10.0.0.22这台服务器,那么ACL规则的匹配顺序如下:
先匹配安全类规则组201,匹配到access-list 201 redirect 10.71.248.1 ip any 10.0.0.0 0.255.255.255这条规则,由于这条规则的动作是redirect(非deny),所以不再匹配下面的安全类规则(组),继续匹配NAT类规则;
匹配NAT类规则组202,匹配不到任何ACL规则,由于NAT类规则组匹配不到规则缺省动作是permit(即不做NAT),所以该报文不会做NAT;
综合安全类和NAT类规则返回的结果,该报文将直接重定向到10.71.248.1。
Ø 如何在接口下应用profile
如果某个接口下面接三层设备,在该接口配置profile可以实现防火墙功能,同时可以实现策略NAT。当然我们的ACL只对该接口接收的流量起作用,对该接口发出的流量不起作用。
如果某个接口下面接入PORTAL用户,那么该接口下配置的profile是用户的缺省权限,即用户未认证通过前拥有的权限,认证通过后由RADIUS服务器下发认证后的权限,如果RADIUS服务器没有下发,则使用ISP下配置的profile作为用户认证后的权限。
如果某个接口下面接入PPP用户,那么该接口配置的profile将不起作用,由RADIUS服务器在用户认证通过后下发权限后使用ISP下配置的profile。
如果某个接口下接入PPPoE+强制PORTAL用户,用户在PPPoE认证过后切换为PORTAL状态,这时接口下的profile也不起作用,用户被强制PORTAL以后,将使用PPPoE认证获得的权限。
注意:
ESR支持扩展ACL,可以对安全、NAT和QoS进行相关的控制。V5R2B03版本对于匹配不到任何ACL规则的报文,ESR默认的动作如下:安全类为deny;NAT和QoS类为permit;而V5R5B01和B02版本中默认动作是:安全类、NAT类和QoS类全部为permit。
V5R5版本开始,GFI单板也支持扩展ACL,为了统一不同业务、不同单板的默认动作,研发在V5R5版本开始将全部默认动作更改为permit。
由于扩展ACL的默认动作,在show run中是不显示的,产品维护和问题分析时容易疏忽。所以对于扩展ACL的应用,建议不考虑系统的默认动作,在策略配置时就全部体现出来,根据实际情况,在最后增加deny any any或者permit any any语句。
另外在V5R2B03升级V5R5时要重点考虑这一点,避免ACL默认动作变化导致问题。
三、 典型应用
下面以一个典型的扩展ACL使用的实例进一步解释ACL的应用,加强的扩展ACL的理解。
宿舍区用户通过L2接至ISN8850,同时ISN8850与163城域网、校园网两个网络相连。用户采用WEB方式上网、Radius认证计费。Radius服务器采用公司的iTellin系统,iTELLIN服务器和DHCP服务器放置在城域网。校园网使用私网地址10.0.0.0/8。
Ø 网络功能要求:
1、宿舍区用户采用@163域名上网时,用户可以访问163城域网,无法访问校园网(教育网),采用的认证计费方法为163auth、163acct
2、宿舍区用户采用@cernet域名上网时,可以访问校园网(同时可以通过校园网proxy访问教育网,这部分访问功能由proxy控制),采用的认证计费方法为:cernetauth、cernetacct
3、用户采用DHCP获取163城域网地址,访问校园网时做公网到私网的地址转换。宿舍区用户采用的地址为61.175.172.0/24、61.175.174.0/24
Ø 组网结构:
Ø 数据配置:
根据以上组网要求可以通过扩展ACL实现,具体实现方法如下。(只列出ACL,ISP配置)
access-list 201 match-order auto
access-list 202 match-order auto
access-list 301 match-order auto
(ACL排序方式为auto)
access-list 201 type normal
access-list 201 permit ip any 61.175.164.100 0
(允许访问iTellin服务器)
access-list 201 redirect 10.1.1.1 ip any 10.0.0.0 0.255.255.255
(访问校园网时数据报重定向到与ISN8850对接的6506接口地址)
access-list 201 deny ip any any
(除iTellin与校园网以外的所有访问被禁止)
access-list 202 type nat
access-list 202 nat pool poola ip 61.175.174.0 0.0.0.255 10.0.0.0 0.255.255.255
(源地址为61.175.174.0/24、目的地址为10.0.0.0/8的报文使用poola地址池做NAT)
access-list 202 nat pool poolb ip 61.175.172.0 0.0.0.255 10.0.0.0 0.255.255.255
(源地址为61.175.172.0/24、目的地址为10.0.0.0/8的报文使用poolb地址池做NAT)
access-list 301 type normal
access-list 301 deny ip any 10.0.0.0 0.255.255.255
(禁止访问10.0.0.0/8网段)
access-list 301 permit ip any any
(其他地址可以访问)
profile 163
ip access group 301
(配置profile采用的ACL规则组为301)
profile cernet
ip access group 201
ip access group 202
(配置profile采用的ACL规则组为201、202)
!
nat pool poola nat-card 2/0 10.171.0.1 10.171.0.254 netmask 255.255.255.0
nat pool poolb nat-card 2/1 10.171.1.1 10.171.1.254 netmask 255.255.255.0
(配置poola、poolb地址池)
!
!
isp domain 163
dns pri 202.96.96.96
ip profile 163
isp accounting 163acct
isp authentication 163auth
(配置163域,采用的profile为163)
isp domain cernet
dns pri 202.96.96.96
ip profile cernet
isp accounting cernetacct
isp authentication cernetauth
(配置cernet域,采用的profile为cernet)
!
四、 FAQ
Ø ACL在portal业务中的使用的注意事项
如果在一个接口下配置了PORTAL关键字,那么该接口下配置的profile就是用户的缺省权限。我们知道,接口下不配置profile(ACL),那么用户在PORTAL认证成功前可以访问与PORTAL服务器同一网段的服务器,认证后如果RADIUS不下发权限,那用户将拥有ISP域下配置的权限。
引入了ACL,用户认证前的权限和认证后的权限将都可以进行控制。用户在认证前拥有接口下配置的profile描述的缺省权限,在该权限之外的访问将会被进行强制PORTAL。认证过后RADIUS下发(或ISP域配置)的权限将覆盖用户的缺省权限。
用户使用私网地址而PORTAL服务器位于公网该如何配置?
这样的组网,需要设备和PORTAL服务器互相配合,在这里我们只讲设备的配置。
这种情况用户在认证前后与PORTAL服务器联系都要做NAT。既然缺省权限是用户认证前拥有的权限,那么我们是否可以使用缺省权限来配置用户认证前的NAT呢?答案是不可以!因为我们上面说过,只有缺省权限不允许通过(安全类deny)的情况下,才会被强制到PORTAL服务器,既然已经被deny了,肯定不会再去匹配NAT类规则组了。
那我们该怎么办?这时我们就可以利用标准的NAT配置(即老版本的NAT配置,在接口下配置NAT INSIDE、NAT OUTSIDE等)了。我们可以在用户的接口下配置NAT INSIDE,在到PORTAL服务器的接口上配置NAT OUTSIDE,配置标准ACL规则,配置关联表…
看到这里,大家可能要问:使用2K微码不是不支持标准NAT吗?是的,但是我们上面说的标准NAT配置只在PORTAL认证时起作用,认证后如果需要做NAT,由下发的用户权限(ACL)描述作NAT!
Ø ISN8850四层会话数限制配置和生效条件
使用命令access-list security default-connection可以配置系统缺省的会话数,在接口下使用access-list security max-connection命令可以限制该接口下用户的最大会话数。那其生效条件如下:
VE接口下配置的四层会话数限制对该VE接口下接入的固定ip用户和pppoe用户都有效。
2、全局下配置的四层会话数限制对ISN8850所有引用profile的接入用户有效。
3、PPPOE用户必须在域中引用一个profile,才能使四层会话数限制生效,该profile引用的扩展ACL可以是任意类型的。如果pppoe用户是没有域的用户,没有办法配置四层会话数限制,只能通过配置缺省域的方法来给不带域的用户在ISN8850上增加一个域,并在缺省域中引用profile。
4、IPOEOA或IPOEOVLAN用户必须在VE接口下引用一个profile,才能使四层会话数限制生效,该profile引用的扩展ACL可以是任意类型的。
Ø 如何查看ISN8850LPUH/SPUB单板扩展ACL的HASH表使用情况?
1、扩展ACL的hash表是用来记录用户建立的四层会话连接的,当使用扩展ACL时,报文没有在hash表中没有查到相应的表项并且扩展ACL允许通过则在hash表中产生一条记录,这样下次转发直接查找hash表,如果被扩展ACL拒绝掉则不产生hash表项。
2、ISN8850 LPUH/SPUB单板使用扩展ACL时,每个1200处理器都有两张ACL hash表,每路子槽可以同时保存131072(正常表项)+131072(扩展表项)=256K个四层会话,这样每单板就可以同时保存512K四层会话,可以使用示例查看表项,重点关注“Used normal hash item number”(表示正常hash表项使用了多少个会话)和“Used extend hash item number”(表示扩展hash表项使用了多少个会话)两项。
举例:#show access-list translation statistics all 10/0
Statistic Items CPU10/0
--------------------------------- ----------
Normal acl hash item number 131072
Extend acl hash item number 131072
Used normal hash item number 74
Used extend hash item number 0
Conflict normal hash number 0
Max conflict hash item length 0
Max conflict acl hash index None
Min used acl hash item index 33776
Max used acl hash item index 117635
3、如果某个hash表项使用达到或接近了131072,则表明该子槽下面的用户建立的较多的四层会话,有可能是用户感染病毒,也有可能每个用户配置的允许四层会话数太大,用户建立的链接太多导致,可能出现用户打不开网页,上网慢等现象,此时需要进行相应的处理,查杀病毒、更改数据配置等。
Ø ISN8850上profile中同时包含NAT类和Normal类扩展ACL的匹配顺序说明?
扩展ACL优先匹配安全类(normal),如果安全类匹配结果为deny则不再匹配别的类别的ACL规则;如果安全类匹配结果不是deny则继续匹配别的类别ACL规则,并将匹配到的结果进行组合,所有结果同时生效。
此致
敬礼!
华为技术有限公司 全球技术服务部
意见反馈:
如有任何意见和建议,请发送supportmaster@。【接入网宝典】维护宣传系列在陆续发布上网的同时,也通过email邮件发送部分客户维护工程师。如果您希望收到相关邮件,请发邮件给supportmaster@。
******************************************************************************************
华为机密,未经许可不得扩散
展开阅读全文