|
本帖最后由 Kim_Kong_♂ 于 2014-1-15 23:18 编辑
- #!/bin/sh
- #-------------------------------
- # Created by Tommy.Liu
- #
- #-------------------------------
- #------------自行修改-----------
- wan1_if=ppp0
- wan1_ipaddr=$(ifconfig $wan1_if|grep "inet addr"|awk -F ":" '{print $2}'|awk -F " " '{print $1}')
- wan1_gateway=$(ifconfig $wan1_if|grep "inet addr"|awk -F ":" '{print $3}'|awk -F " " '{print $1}')
- wan2_if=ppp1
- wan2_ipaddr=$(ifconfig $wan2_if|grep "inet addr"|awk -F ":" '{print $2}'|awk -F " " '{print $1}')
- wan2_gateway=$(ifconfig $wan2_if|grep "inet addr"|awk -F ":" '{print $3}'|awk -F " " '{print $1}')
- #-------------------------------
- echo "Wan1 IP:$wan1_ipaddr"
- echo "Wan1 Gateway:$wan1_gateway"
- echo "Wan2 IP:$wan2_ipaddr"
- echo "Wan2 Gateway:$wan2_gateway"
- echo "Set adv routing..."
- #设定策略路由
- ip rule flush
- ip rule add lookup main prio 32766
- ip rule add lookup default prio 32767
- ip rule add from $wan1_ipaddr table 100 prio 100
- ip rule add fwmark 0x100 table 100 prio 101
- ip rule add from $wan2_ipaddr table 200 prio 200
- ip rule add fwmark 0x200 table 200 prio 201
- ip route flush table 100
- ip route flush table 200
- for TABLE in 100 200
- do
- ip route | grep link | while read ROUTE
- do
- ip route add table $TABLE to $ROUTE
- done
- done
- ip route add table 100 default via $wan1_gateway
- ip route add table 200 default via $wan2_gateway
- echo "Set PREROUTING..."
- #清除PREROUTING
- iptables -t mangle -F PREROUTING
- #所有wan1进入的包(NEW)都标记为0x100,走Wan1策略路由(101)
- iptables -t mangle -A PREROUTING -i $wan1_if -m state --state NEW -j CONNMARK --set-mark 0x100
- #所有wan2进入的包(NEW)都标记为0x200,走Wan2策略路由(201)
- iptables -t mangle -A PREROUTING -i $wan2_if -m state --state NEW -j CONNMARK --set-mark 0x200
- #所有LAN进入并且已经建立连接的包,恢复MARK
- iptables -t mangle -A PREROUTING -i br0 -m state --state RELATED,ESTABLISHED -j CONNMARK --restore-mark
- echo "Set POSTROUTING..."
- #清除POSTROUTING
- iptables -t mangle -F POSTROUTING
- #所有WAN1出去的包
- iptables -t mangle -A POSTROUTING -o $wan1_if -m state --state NEW -j CONNMARK --set-mark 0x100
- #所有WAN2出去的包
- iptables -t mangle -A POSTROUTING -o $wan2_if -m state --state NEW -j CONNMARK --set-mark 0x200
- #DNS默认走WAN1(应为双线的线路如果不是同一个ISP,那么DNS就不能混用,只能指定一个)
- iptables -t mangle -A POSTROUTING -p udp --dport 53 -j CONNMARK --set-mark 0x100
- echo "Set QOS..."
- #QOS
- iptables -t mangle -F OUTPUT
- iptables -t mangle -A OUTPUT -o $wan1_if -j QOSO
- iptables -t mangle -A OUTPUT -o $wan2_if -j QOSO
- iptables -t mangle -F FORWARD
- iptables -t mangle -A FORWARD -o $wan1_if -j QOSO
- iptables -t mangle -A FORWARD -o $wan2_if -j QOSO
- echo "Set Nat..."
- echo "Set default gateway..."
- #负载平衡
- ip route change default equalize nexthop via $wan1_gateway nexthop via $wan2_gateway
- echo "finished."
复制代码
|
|