|
原帖由 watermore 于 2008-9-21 18:44 发表
这样的均衡脚本要修改吧?具体怎么改呢?你可否提供
我的ADSL线路端口限速6M,账号限速2M,可以多重拨号,
所以我想实现3wan均衡负载
需要修改,懒得发附件了直接贴3WAN负载均衡脚本(黑体字为在原2WAN负载均衡基础上增加的代码):
#!/bin/ash
# Script VER 0.2
LOGGER=logger
LOCK_FILE=/var/policyroute-set.lock
NETLIST=/var/policyroute-netlist
if [ ! -f $WAN1_NETLIST ]; then
$LOGGER "$NETLIST does not exist!"
exit 2
fi
$LOGGER "Start PolicyRouting ..."
WAN1_GATEWAY=$(nvram get wan_gateway)
WAN2_GATEWAY=$(nvram get wan2_gateway)
WAN3_GATEWAY=自己写
WAN1_IFACE=$(nvram get wan_iface)
WAN2_IFACE=$(nvram get wan2_iface)
WAN3_IFACE=自己写
LAN_IFACE=$(nvram get lan_ifname)
LAN_IP=$(nvram get lan_ipaddr)
LAN_NET=${LAN_IP%.*}.0/24
WAN1_WAN_IP=$(ifconfig $WAN1_IFACE|grep "inet addr"|awk -F ":" '{print $2}'|awk -F " " '{print $1}')
WAN2_WAN_IP=$(ifconfig $WAN2_IFACE|grep "inet addr"|awk -F ":" '{print $2}'|awk -F " " '{print $1}')
WAN3_WAN_IP=$(ifconfig $WAN3_IFACE|grep "inet addr"|awk -F ":" '{print $2}'|awk -F " " '{print $1}')
LAN_IP=$(ifconfig $LAN_IFACE|grep "inet addr"|awk -F ":" '{print $2}'|awk -F " " '{print $1}')
if [ "$WAN1_IFACE" = "$WAN2_IFACE" ]; then
$LOGGER "Start PolicyRouting fail, WAN1_IFACE = WAN2_IFACE"
exit
fi
if [ "$WAN1_IFACE" = "" ]; then
$LOGGER "Start PolicyRouting fail, WAN1_IFACE is NULL"
exit
fi
if [ "$WAN2_IFACE" = "" ]; then
$LOGGER "Start PolicyRouting fail, WAN2_IFACE is NULL"
exit
fi
if [ "$WAN3_IFACE" = "" ]; then
$LOGGER "Start PolicyRouting fail, WAN3_IFACE is NULL"
exit
fi
if [ -f $LOCK_FILE ]; then
$LOGGER "Start PolicyRouting exit, other process starting."
exit
fi
echo "SETTING" > $LOCK_FILE
$LOGGER "WAN1_IFACE: $WAN1_IFACE, WAN1_WAN_IP: $WAN1_WAN_IP, WAN1_GATEWAY: $WAN1_GATEWAY"
$LOGGER "WAN2_IFACE: $WAN2_IFACE, WAN2_WAN_IP: $WAN2_WAN_IP, WAN2_GATEWAY: $WAN2_GATEWAY"
$LOGGER "WAN3_IFACE: $WAN3_IFACE, WAN3_WAN_IP: $WAN3_WAN_IP, WAN3_GATEWAY: $WAN3_GATEWAY"
$LOGGER "LAN_IP: $LAN_IP LAN_NET: $LAN_NET"
$LOGGER "disable rp_filter "
echo 0 >/proc/sys/net/ipv4/conf/all/rp_filter
$LOGGER "set WAN1 is default router "
ip route del default
ip route del default
ip route add default nexthop via $WAN1_GATEWAY dev $WAN1_IFACE weight 1 nexthop via $WAN2_GATEWAY dev $WAN2_IFACE weight 1 dev $WAN3_IFACE weight 1
ip rule flush
ip rule del table main
ip rule del table default
ip rule add lookup main prio 32766
ip rule add lookup default prio 32767
WAN1_GET_DNS=$(nvram get wan_get_dns)
for WAN1_DNS in $WAN1_GET_DNS
do
$LOGGER "set route($WAN1_GATEWAY) for DNS: $WAN1_DNS"
ip rule add to $WAN1_DNS table 100 prio 150
done
$LOGGER "set route table 100..."
ip route flush table 100
ip route del table 100
ip route add to $WAN1_GATEWAY dev $WAN1_IFACE src $WAN1_WAN_IP proto kernel scope link table 100
ip route add to $WAN2_GATEWAY dev $WAN2_IFACE src $WAN2_WAN_IP proto kernel scope link table 100
ip route add to $WAN3_GATEWAY dev $WAN3_IFACE src $WAN3_WAN_IP proto kernel scope link table 100
ip route add to $LAN_NET dev $LAN_IFACE src $LAN_IP proto kernel scope link table 100
ip route add to 127.0.0.0/8 dev lo scope link table 100
ip route add default via $WAN1_GATEWAY dev $WAN1_IFACE src $WAN1_WAN_IP table 100
ip route append default via $WAN2_GATEWAY dev $WAN2_IFACE src $WAN2_WAN_IP table 100
ip route append default via $WAN3_GATEWAY dev $WAN3_IFACE src $WAN3_WAN_IP table 200
ip rule add from $WAN1_WAN_IP table 100 prio 100
$LOGGER "set route table 200..."
ip route flush table 200
ip route del table 200
ip route add to $WAN1_GATEWAY dev $WAN1_IFACE src $WAN1_WAN_IP proto kernel scope link table 200
ip route add to $WAN2_GATEWAY dev $WAN2_IFACE src $WAN2_WAN_IP proto kernel scope link table 200
ip route add to $WAN3_GATEWAY dev $WAN3_IFACE src $WAN3_WAN_IP proto kernel scope link table 200
ip route add to $LAN_NET dev $LAN_IFACE src $LAN_IP proto kernel scope link table 200
ip route add to 127.0.0.0/8 dev lo scope link table 200
ip route add default via $WAN2_GATEWAY dev $WAN2_IFACE src $WAN2_WAN_IP table 200
ip route append default via $WAN1_GATEWAY dev $WAN1_IFACE src $WAN1_WAN_IP table 200
ip route append default via $WAN3_GATEWAY dev $WAN3_IFACE src $WAN3_WAN_IP table 200
ip rule add from $WAN2_WAN_IP table 200 prio 100
$LOGGER "set route table 203..."
ip route flush table 203
ip route del table 203
ip route add to $WAN1_GATEWAY dev $WAN1_IFACE src $WAN1_WAN_IP proto kernel scope link table 203
ip route add to $WAN2_GATEWAY dev $WAN2_IFACE src $WAN2_WAN_IP proto kernel scope link table 203
ip route add to $WAN3_GATEWAY dev $WAN3_IFACE src $WAN3_WAN_IP proto kernel scope link table 203
ip route add to $LAN_NET dev $LAN_IFACE src $LAN_IP proto kernel scope link table 203
ip route add to 127.0.0.0/8 dev lo scope link table 203
ip route add default via $WAN3_GATEWAY dev $WAN3_IFACE src $WAN3_WAN_IP table 203
ip route append default via $WAN2_GATEWAY dev $WAN2_IFACE src $WAN2_WAN_IP table 203
ip route append default via $WAN1_GATEWAY dev $WAN1_IFACE src $WAN1_WAN_IP table 203
ip rule add from $WAN3_WAN_IP table 203 prio 100
$LOGGER "clear route cache..."
ip route flush cache
$LOGGER "Start PolicyRouting success."
rm $LOCK_FILE
[ 本帖最后由 rightzd 于 2008-9-21 20:36 编辑 ] |
|