企业网络流量负载实现的方法有很多,其中一种方法是使用策略路由。策略路由是一种转发机制,它可以在数据包的接口定义某种转发规则,那么数据包就直接按照转发规则转发,并不会查看路由表。这种机制就称为策略路由,即按照一定的策略来转发数据包。

以下是一个实例讲解企业网络流量负载实现的方案:

如果公司组网图如下所示:一台路由器下联一台三层交换机,内部有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

```