企业网络流量负载实现的方法有很多,其中一种方法是使用策略路由。策略路由是一种转发机制,它可以在数据包的接口定义某种转发规则,那么数据包就直接按照转发规则转发,并不会查看路由表。这种机制就称为策略路由,即按照一定的策略来转发数据包。
以下是一个实例讲解企业网络流量负载实现的方案:
如果公司组网图如下所示:一台路由器下联一台三层交换机,内部有2个vlan,每个vlan有100左右用户数量,路由器出口上联链路有电信和联通的出口,带宽都是10M出口。原始网络设计为通过浮动静态路由,把电信出口做主用链路,所有用户访问外部网络都从电信网络出去,当电信出口故障时候再使用联通出口上网。这样的设计虽然能保证业务不中断,但是在正常的情况下联通的网络是没有使用的,这部分带宽就浪费掉了。为了最大利用资源现要求实现如下网络功能:
- 所有内部vlan10的用户访问互联网资源的时候通过联通出口;
- 所有内部vlan20的用户访问互联网资源的时候通过电信出口;
- 当电信出口故障时候所有用户自动切换到联通出口,反之亦然。
解决方案:使用GNS3模拟器模拟真实网络环境,三层交换机设备用路由器替代,三层设备分别下面有两个主机来模拟不同的vlan 用户。设计思路:如果出口只有一条链路,内部网络出去的时候在出口路由器上做NAT地址翻译后,内网用户就可以通过出口路由器访问互联网资源,内部网络互通可以使用一种路由协议,完成出口路由器和主机之间的互通。现在增加一条线路,要求网络负载分担,vlan10用户走联通的线路,vlan20的用户走电信的线路,这个拓扑解决方案需要使用策略路由的技术来实现。普通路由转发机制是在数据包到达路由器后通过查找IP头部的目的IP地址来寻址转发的。而策略路由则可以按照一定的策略来转发数据包。因此我们可以在企业的出口路由上使用策略路由,在内部接口收到的数据指定数据包的转发下一跳地址。如果数据的源地址是192.168.10.0网段的,指定下一跳为联通的出口;如果数据源地址是192.168.20.0网段的,指定下一跳为电信的出口。这样就可以实现网络的负载分担。
上述环境配置任务1包括配置各个设备的接口基本信息IP地址信息。
配置IP地址规划如下:
出口路由器IP地址:100.1.1.1、200.1.1.1、192.168.30.1
三层网络设备IP地址:192.168.30.2、192.168.20.2、192.168.10.2
主机1的IP地址:192.168.10.1,网关地址192.168.10.2
主机2的IP地址:192.168.20.1,网关地址 192.168.20.2
联通出口IP地址:100.1.1.2,环回地址8.8.8.8(用于互联网测试)
电信出口IP地址:200.1.1.2,环回地址8.8.8.8(用户互联网测试)
任务2:配置内部网络地址互通,内网有两台路由互联,我们可以运行OSPF动态路由协议,让出口路由器学习到192.168.10.0和192.168.20.0两个网段的路由。
出口路由器配置:
```
Router(config)#router ospf 1
Router(config-router)#network 192.168.30.1 0.0.0.0 area 0 //宣告直连链路
Router(config-router)#exit
```
三层网络设备配置:
```
router(config)#router ospf 1
router(config-router)#network 192.168.10.2 0.0.0.0 area 0
router(config-router)#network 192.168.20.2 0.0.0.0 area 0
router(config-router)#network 192.168.30.2 0.0.0.0 area 0
router(config-router)#end
```
此时内网应该可以互通了,PC1和PC2测试PING 192.168.30.1应该是通的。
任务3:配置内网网络访问外部网络默认路由,可以保证内部网络的数据包能出去。暂时只需要在三层网络设备需要配置默认路由。
三层网络设备配置:
```
router(config)#ip route 0.0.0.0 0.0.0.0 192.168.30.1 //只需要添加默认路由即可
```
(此处还可以使用OSPF来下发默认路由)。
为了实现负载分担,我们需要在出口路由器上使用策略路由。具体来说,我们可以通过设置数据包的下一跳地址来实现内网进入的IP地址的负载分担需求。配置如下:
1. 在出口路由器上创建访问控制列表10和20,分别抓取源为192.168.10.0和192.168.20.0的网段。
```markdown
router(config)#access-list 10 permit 192.168.10.0 0.0.0.255
router(config)#access-list 20 permit 192.168.20.0 0.0.0.255
```
2. 定义路由策略图,对上面分类的流量设置数据的下一跳地址。
```markdown
router(config)#route-map test permit 1
router (config-route-map)#match ip address 10
router (config-route-map)#set ip next-hop 100.1.1.2
router (config-route-map)#exit
router(config)#route-map test permit 2
router (config-route-map)# match ip address 20
router (config-route-map)# set ip next-hop 200.1.1.2
router (config-route-map)#exit
```
3. 在内部接口下,调用策略路由。注意此处的NAT地址翻译需要分开翻译。
```markdown
router(config)#int s1/2
router(config)#ip policy route-map test //调用前创建的test名称的策略图
router(config-if)#exit
```
4. 配置NAT翻译规则。
```markdown
router(config)#int s1/0
router(config-if)#ip nat outside
router(config-if)#exit
router(config)#int s1/1
router(config-if)#ip nat outside
router(config-if)#exit
router(config)#int s1/2
```
以下是重构后的内容:
```
router(config-if)#ip nat inside
router(config-if)#exit
router(config)#route-map liantong
router(config-route-map)#match ip address 10 // 如果数据匹配访问控制列表10的流量
router(config-route-map)#match interface s1/0 // 设置NAT翻译出接口就是S1/0接口
router(config)#route-map dianxin
router(config-route-map)#match ip address 20 // 如果数据匹配访问控制列表20的流量
router(config-route-map)#match interface s1/1 // 设置NAT翻译出接口就是S1/1接口
// 设置NAT映射规则
router(config)#ip nat inside source route-map dianxin interface Serial1/1 overload
router(config)#ip nat inside source route-map liantong interface Serial1/0 overload
测试:
在PC1上执行tracert 8.8.8.8
在PC2上执行tracert 8.8.8.8
重点内容:
1. 策略路由一定是对穿越的流量进行调整
2. 策略路由转发优先级高于路由表,本例中R3的路由表中根本就没有8.8.8.8的路由条目或者默认路由。内部三层网络设备默认路由可以使用OSPF下发配置,本例中可以在出口路由器上配置:`router(config-router)#default-information originate always`,以下发缺省路由给三层网络设备。
扩展内容:
1. 当联通出口断开时,vlan10的用户流量无法完成自动切换,需要配置自动切换功能。在出口路由器的策略路由图中设置备用下一跳地址,并且NAT也要添加映射规则。例如:`router(config)#route-map test permit 1`,`router(config-route-map)#match ip address 10`。
在配置路由器时,我们需要使用路由映射(route-map)来设置不同流量的下一跳地址。以下是根据提供的内容重构的命令:
1. 设置主用下一跳地址为联通出口:
```
router (config-route-map)#set ip next-hop 100.1.1.2 //主用下一跳地址为联通出口
```
2. 设置备用下一跳地址是电信出口:
```
router (config-route-map)#set ip default next-hop 200.1.1.2 //设置备用下一跳地址是电信出口
```
3. 退出当前路由映射配置模式:
```
router (config-route-map)#exit
```
4. 添加NAT映射规则:
```
router(config)#route-map liantong2
```
5. 匹配访问控制列表10的流量:
```
router(config-route-map)#match ip address 10 //如果数据匹配访问控制列表10的流量
```
6. 设置NAT映射出接口是S1/1接口:
```
router(config-route-map)#match interface s1/1 //设置NAT映射出接口是S1/1接口
```
7. 为匹配到的流量应用NAT映射:
```
router(config)#ip nat inside source route-map liantong2 interface Serial1/0 overload
```