路由策略简介
路由策略是通过一系列工具或方法对路由进行各种控制的“策略”,该策略可影响到路由产生、发布、选择等,进而影响报文的转发路径。
路由策略应用灵活而广泛,有以下几种常见方式:
控制路由的发布:通过路由策略对发布的路由进行过滤,只发布满足条件的路由。
控制路由的接收:通过路由策略对接收的路由进行过滤,只接收满足条件的路由
控制路由的引入:通过路由策略控制从其它路由协议引入的路由条目,只有满足条件的路与才会被引入。
路由策略具有以下价值:
- 控制路由的接收、发布和引入,提高网络安全性。
- 修改路由属性,对网络数据流量进行合理规划,提高网络性能。
路由策略工具
工具有:ACL、route-policy、ip-frefix、filter-policy等。
使用ACL匹配感兴趣路由
使用IP-Prefix匹配感兴趣路由
使用filter-poliyc进行路由过滤
使用route-policy进行路由过滤及路由属性修改
ACL工具,能匹配IP路由表,也能匹配IP报文。但只能匹配前缀,不能匹配掩码长度。
IP-Prefix List(地址前缀表):只能匹配IP路由,不能匹配IP报文;能够同时匹配IP地址前缀及掩码长度。
Route-Policy工具:是一种比较复杂的过滤器,它不仅可以匹配给定路由信息的某些属性,还可以在条件满足时改变路由信息的属性。Route-Policy可以使用其它过滤器定义自己的匹配规则。
路由策略相关的工具划分成三类:
- 条件工具:用于把需要的路由“抓取”出来。
- 策略工具:用于把“抓取”出来的路由执行某个动作,比如允许、拒绝、修改属性值等。
- 调用工具:用于将路由策略应用到某个具体的路由协议里面,使其生效。
注意:调用工具中的filter-policy和peer又自带策略工具的功能,因此这两者又可以直接调用条件工具。而其他的调用工具都必须通过route-policy来间接的调用条件工具。且peer不能调用ACL,但可以调用其他的所有条件工具。
路由匹配工具1:访问控制列表ACL
访问控制例表ACL是由一条或多条规则组成的集合(规则:指的是报文匹配条件的判断语句,这些条件可以是报文的源地址、目的地址、端口号等)。
设备基于这些规则进行报文匹配,过滤出特定的报文,并根据应用ACL的业务模块的处理策略来允许或阻止该报文通过。配置完ACL后,必须在具体的业务模块中应用ACL,才能使其生效。
ACL还可以应用在Telnet、FTP、路由等模块。
ACL由若干条permit或deny语句组成,每条语句就是该ACL的一条规则,每条语句中的permi或deny就是这条规则相对应的处理动作。
acl number 2000 #访问控制列表的编号2000,每个ACL都都需要分配一个编号,用来标识ACL #通配符是一个32比特长的数值,用于指示IP地址中哪些比特位需要严格匹配,哪些比特位不需要匹配。 匹配规则 当进行IP地址匹配的时候,后面会跟着32位掩码为位,这32位称为通配符。 通配符,也是点分十进制格式,换算成二进制后,“0”表示“匹配”,“1”表示“不匹 配”。通配符中的1或者0可以不连续。 比如:如何匹配192.168.10.0/24内的IP地址?(点分十进制格式转换为二进制) IP地址:192.168.10.1 1100 0000 1010 1000 0000 1010 0000 0001 子网掩码:0.0.0.255 0000 0000 0000 0000 0000 0000 1111 1111 #“0”严格匹配 #“1”不需要匹配 比如: rule 15 deny 10.1.3.1 0 拒绝IP地址10.1.3.1报文通过,且因为通配符为全0,所以每一位都要严格匹配,因此匹配的是IP地址10.1.3.1。 rule 5 permit 10.1.1.1 0.0.0.255允许源IP地址为10.1.1.0/24网段地址的报文通过,因为通配符是0.0.0.255(0.0.0.1111 1111)后8位为全1,可以为任意值,所以匹配的是10.1.1.0/24网段。 网络位需要严格匹配,主机位无所谓,因此通配符为“0.0.0.255”。 当通配符全为0来匹配IP地址时,表示精确匹配某个IP地址; 当通配符全为1来匹配0.0.0.0地址时,表示匹配了所有IP地址。 |
分类 | 编号范围 | 参数 |
基本ACL | 2000-2999 | 源IP地址等 |
高级ACL | 3000-3999 | 源IP地址、目的IP地址、 源端口、目的端口等 |
二层ACL | 4000-4999 | 源MAC地址、目的MAC地址、以太帧协议类型等 |
配置了ACL的设备接收报文后,会将该报文域ACL中的规则逐条进行匹配,如果还不能匹配上,就会接着往下匹配下一条规则;一旦匹配上,该设备会对该报文执行这条规则中定义的处理动作(permit、deny),且不再与后面的规则匹配。
系统按照ACL规则编号从小到大的顺序进行报文匹配,规则编号越小越容易被匹配。
ACL应用的业务模块
业务分类 | 应用场景 | 涉及业务模块 |
对转发的报文进行过滤 | 基于全局、接口和VLAN,对转发的报文进行过滤,从而使设备能够进一步对过滤出的报文进行丢弃、修改优先级、重定向等处理。 例如,可以利用ACL,降低P2P下载、网络视频等消耗大量带宽的数据流的服务等级,在网络拥塞时优先丢弃这类流量,减少它们对其他重要流量的影响。 | 简化流策略/流策略 |
对上送CPU处理的报文进行过滤 | 对上送CPU的报文进行必要的限制,可以避免CPU处理过多的协议报文造成占用率过高、性能下降。 例如,当发现某用户向设备发送大量的ARP攻击报文,造成设备CPU繁忙,引发系统中断时,可以在本机防攻击策略的黑名单中应用ACL,将该用户加入黑名单,使CPU丢弃该用户发送的报文。 | 黑名单 |
登录控制 | 对设备的登录权限进行控制,允许合法用户登录,拒绝非法用户登录,从而有效防止未经授权用户的非法接入,保证网络安全性。 例如,一般情况下设备只允许管理员登录,非管理员用户不允许随意登录。这时就可以在Telnet中应用ACL,并在ACL中定义哪些主机可以登录,哪些主机不能。 | Telnet、STelnet、FTP、SFTP、HTTP、SNMP |
路由过滤 | ACL可以应用在各种动态路由协议中,对路由协议发布、接收的路由信息以及组播组进行过滤。 例如,可以将ACL和路由策略配合使用,禁止设备将某网段路由发给邻居路由器。 | BGP、IS-IS、OSPF、OSPFv3、RIP、RIPng、组播协议 |
在各业务模块中应用ACL时,ACL的默认动作各有不同,所以各业务对匹配/未匹配ACL规则报文的处理机制也不同,
下面做实验来基础学习。
ACL基础实验
模拟一个企业内网,运行ospf路由协议,区域划分如网络拓扑所示:
1、AR1配置telnet,只允许被JISHU设备登录管理,使用AAA认证。用命名admin,密码为admin123;
2、Clinet1、Client2之间不能互通,但都可以与IT通信;
3、Client3不能访问到server1的www服务;
4、Client1的10.1.10.0/24网段不能访问server1服务;
基础配置命令:设备的命名、IP地址、子网掩码以及ospf路由协议的配置等等。后面也有全部实验命令。
验证:全网互通
除了基础配置命令,未做其它配置之前,ospf邻接关系建立成功,传递路由信息,内部网络可以全部相互通信。
实现1—使用基本ACL限制Telnet登录权限
对设备登录权限进行控制,一般情况下设备只允许管理员登录,非管理员用户不允许随意登录。这时就可以在Telnet中应用ACL,并在ACL中定义哪些主机可以登录,Telnet中的ACL默认动作是deny。
在全网路由可达的情况下,在AR1上配置Telnet用户使用AAA验证登录方式,使得设备JISHU远程可登录设备AR1,远程维护网络核心设备。
配置管理员的用命名为admin,密码为admin123,配置AAA认证策略,保证只有通过认证的用户才能登录设备;
[AR1] user-interface vty 0 4 #指定VTY用户界面编号 [AR1] aaa #privilege level level 指定用户的级别,不同级别的用户登录后,只能使用等于或者低于自己级别的命令,默认级别为0,取值范围有:0~15,值越大,用户级别越高。 |
上述配置完成之后,在AR2、JISHU、LSW3上测试都可以telnet远程登录AR1,如下图所示。现要求做策略,只允许JISHU设备可以telnet远程登录。
配置基本ACL
保证只有符合策略的JISHU用户才能登录设备。配置基本ACL,允许用户登录设备JISHU1的主机地址。
[AR1] acl 2001 [AR1-acl-basic-2001] rule permit source 10.1.14.2 0 #允许源IP地址为10.1.14.2报文通过 [AR1-acl-basic-2001] quit [AR1] user-interface vty 0 4 [AR1-ui-vty0-4] acl 2001 inbound [AR1-ui-vty0-4] quit [AR1] |
再次在各设备上telnet 10.1.11.1进行测试,如下图所示:只有JISHU设备能成功。
需求2—使用高级ACL限制不同网段的用户互访
在Client1上测试去访问Client2是可以正常ping通,现要求它们之间不能互通。
创建高级ACL使得Client1与Client2之间不能互通。
这里的策略是在AR2上做的,因为client1的报文从AR2的GE0/0/2接口进入,所以在GE0/0/2入方向上配置报文过滤。需要注意接口调用时是inbound(指定在接口入方向上配置报文过滤)还是outbound(指定在接口出方向上配置报文过滤)。
[AR2] acl 3000 #创建编号为3000的ACL #拒绝源IP地址是10.1.10.2(Client1)主机地址且目的IP地址是10.1.20.2主机(Client2)ICMP报文通过。 |
测试
在Client1上测试去往Client2,通过在AR2的接口GE0/0/2抓包可以看到只有请求报文,没有应答报文,因为做了策略,报文被过滤掉了,所以测试显示的是失败,成功实现Client1与Client2主机之间不能互通。
需求3—使用高级ACL限制用户只能访问特定服务
在AR1上创建acl 3000,配置Client3只能访问server1的www服务,在接口GE0/0/0入方向应用。操作配置如下:
[AR1] acl 3000 #允许10.1.13.2主机建立与端口号等于80的10.1.30.2主机的TCP连接 |
启动server1的ftp、http服务
测试
在Client3上访问server1的www服务,同时在AR1的GE0/0/0接口上抓包,可以看到,TCP通过三次握手之后成功建立连接,发送完数据之后,会通过四次挥手断开TCP连接,如下:
在Client3上访问server1的FTP服务不成功,因为报文被过滤掉了,在AR1的GE0/0/0接口上抓包,可以看到TCP建立不成功,只有主机10.1.30.2不断向10.1.30.2服务器发送TCP建立请求报文。如下:
同样也可在Client3上ping向server1,同时在AR1的GE0/0/0接口上抓包,可以看到只有请求包,没有回复,已经被过滤掉了。
需求4—创建高级ACL限制特定用户访问服务
配置流行为,拒绝匹配ACL的报文通过,并在LSW3的接口GE0/0/4出方向应用策略,使得ACL和流行为生效,
[LSW3] acl 3000 因为Client1的报文是从LSW3的GE0/0/4接口出去流向server的,所以在LSW3接口GE0/0/4出方向应用 |
测试
cleint1不能访问server1的服务。
实验命令
AR1 AR2 LSW3 JISHU 1、AR1 aaa acl 2001 2、AR2 3、AR1 4、LSW3 |