1、 1、链路流量分配流程图2、网关网卡配置:ifconfig eth0 218.240.17.98 netmask 255.255.255.0 /*网联光通,主要用于到上地机房和广内机房要通过的链路。和eth3电信通80M以负载均衡方式提供服务*/ eth1 192.168.8.1 netmask 255.255.252.0 /*内网*/ eth2 124.205.137.178 netmask 255.255.255.252 /*电信通20M,主要用于作为到上地和广内机房备用的链路*/ eth3 124.202.202.186 netmask 255.255.255.252 /*电信通80M,
2、主要用于和eth0网联光通一起以负载均衡方式共同提供服务*/3、NAT配置:(实现过程已经书写为shell程序,并设置为开机启动生效。程序位置/usr/local/virus/iptables/iptables.rule)以下为主要的代码。iptables -t nat -A POSTROUTING -seth1 -oeth0 -j MASQUERADE iptables -t nat -A POSTROUTING -seth2 -j MASQUERADEeth3 -j MASQUERADE4、策略路由配置:1)添加路由表 eth0 : rootlocalhost # echo 101 ISP
3、1 /etc/iproute2/rt_tables /*网联光通,标示为ISP1*/rootlocalhost # ip route add 218.240.17.96/27 dev eth0 table ISP1rootlocalhost # ip route add default via 218.240.17.97 dev eth0 table ISP1eth2:102 ISP2 /*电信通20M,标示为ISP2*/ rootlocalhost # ip route add 124.205.137.176/30 dev eth2 table ISP2 rootlocalhost # ip
4、 route add default via 124.205.137.177 dev eth2 table ISP2 eth3:103 ISP3 /*电信通80M,标示为ISP3*/ rootlocalhost # ip route add 124.202.202.184/30 dev eth3 table ISP3rootlocalhost # ip route add default via 124.202.202.185 dev eth3 table ISP32)设置默认网关 rootlocalhost # /sbin/ip route replace default nexthop v
5、ia 218.240.17.97 dev eth0 weight 1 nexthop via 124.202.202.185 dev eth3 weight 1 /*线路1和线路3同时服务内部网络用户,权重为1:1*/3)根据目标IP设置策略路由 rootlocalhost # /sbin/ip rule add to 117.79.92.96/27 table ISP1 pre 1000/*到上地机房走ISP1线路*/rootlocalhost # /sbin/ip rule add to 117.79.81.8/29 table ISP1 pre 1001 /*到上地机房走ISP1线路*/
6、 rootlocalhost # /sbin/ip rule add to 118.67.112.0/20 table ISP1 pre 1002 /*到广内机房走ISP1线路*/ rootlocalhost shell# /sbin/ip rule add to 119.147.137.87 table ISP1 pre 1003/*用于ISP1的链路监测,测试IP为外地机房IP,较稳定*/ rootlocalhost shell# /sbin/ip rule add to 112.253.13.196 table ISP1 pre 1004rootlocalhost shell# /sbi
7、n/ip rule add to 119.147.137.88 table ISP2 pre 1005/*用于ISP2的链路监测,测试IP为外地机房IP,较稳定*/ rootlocalhost shell# /sbin/ip rule add to 112.253.13.197 table ISP2 pre 1006rootlocalhost shell# /sbin/ip rule add to 119.147.137.89 table ISP3 pre 1007/*用于ISP3的链路监测,测试IP为外地机房IP,较稳定*/ rootlocalhost shell# /sbin/ip rul
8、e add to 112.253.13.198 table ISP3 pre 1008 /*用于ISP3的链路监测,测试IP为外地机房IP,较稳定*/ 4) 更具不同的需求应用不同的路由表/*以下三行应用了来自internet的数据的路由表,保证所有的回应数据都会从来的那块网卡返回*/rootlocalhost # ip rule add from 218.240.17.98 table ISP1 pre 32700rootlocalhost # ip rule add from 124.205.137.178 table ISP2 pre 32701rootlocalhost # ip ru
9、le add from 124.202.202.186 table ISP3 pre 327025、链路失效保护的实现1)手动方式连接方式:通过SecureCRT的ssh连接到服务器。在内网:通过ssh直接连接192.168.8.1(网关)就可以。在非内网:通过ssh连接后面地址都可以,(eth0:218.240.17.98,eth2:124.205.137.178,eth3:124.202.202.186)故障切换策略: 默认路由是eth0(ISP1)和eth3(ISP3)两条链路以负载均衡方式共同提供内网用户使用。到达上地机房和广内机房网络默认通过eth0(ISP1)链路。 如果eth0出
10、现问题,我们需要将默认路由,更改为只是用eth3(ISP3)链路,还有到上地机房和广内机房的路由规则,由eth0(ISP1)链路更改到eth2(ISP2)链路上。实现如下:rootlocalhost # ip route replace default via 124.202.202.185 dev eth3 /*将默认路由更改只是用eth3链路*/rootlocalhost # /sbin/ip rule del to 117.79.92.96/27 tableISP1 pre 1000 /*删除之前到上地机房走eth0链路的路由规则*/ rootlocalhost # /sbin/ip r
11、ule del to 117.79.81.8/29 tableISP1 pre 1001 /*删除之前到上地机房走eth0链路的路由规则*/rootlocalhost # /sbin/ip rule del to 118.67.112.0/20 tableISP1 pre 1002 /*删除之前到广内机房走eth0链路的路由规则*/ rootlocalhost # /sbin/ip rule add to 117.79.92.96/27 table ISP2 pre 1000 /*添加之前到上地机房走eth2链路的路由规则*/ rootlocalhost # /sbin/ip rule add
12、 to 117.79.81.8/29 table ISP2 pre 1001/sbin/ip rule add to 118.67.112.0/20 table ISP2 pre 1002 /*添加之前到广内机房走eth2链路的路由规则*/如果eth3(ISP3)出现问题,我们需要将默认路由,更改为只是用eth0 (ISP1)链路。rootlocalhost # ip route replace default via 218.240.17.97 dev eth0 /*将默认路由更改只是用eth0链路*/2)自动方式 (自动切换脚本程序已经书写完毕,待测试。脚本路径:) 自动切换方案思路:1)
13、如果判断链路状态: 通过在网关服务器上添加路由规则,规定到测试IP走的路由。如下 /*用于ISP2的链路监测,测试IP为外地机房IP,较稳定*/ 在shell程序中,通过如下命令监测网路情况。 /usr/sbin/check_ping -H 119.147.137.87 -w 100,30% -c 150,50% | awk print $2如果通过每条链路到测试的两个IP,其中有一个返回OK,说明链路正常,如果到两个测试IP都返回CRITICAL,说明连接不正常,需要切换。2)如何切换:每次判断链路状态的时候,都会记录符合条件的链路状态信息。当下次再次进行链路状态判断及切换之前,本次的链路状态信息会和上次的链路状态信息作比较。如果本次链路状态和上次链路状态一致,我们什么也不做。如果不一致,判断它是属于那种状态,并应用那种状态的路由规则。代码实现如下。#以下代码是判断链路状态的,分为四个状态。if $loss1 = ok | $loss2 then$loss5$loss6 thenL_State=ALL_SUCCESSecho $L_State $Link_Stateelse L_State=ISP1fi
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1