|
本帖最后由 sutuo 于 2012-9-28 19:47 编辑
- #!/bin/ash
- interface="wan wan1" #wan wan1是要叠加的网络 风飞雪编写
- j=10
- ip rule flush
- ip rule add lookup main prio 32766
- ip rule add lookup default prio 32767
- #清除PREROUTING
- iptables -t mangle -F PREROUTING
- #清除POSTROUTING
- iptables -t mangle -F POSTROUTING
- cmd="ip route replace default scope global "
- for i in $interface
- do
- j=$(expr $j + 1)
- ifname=`ifstatus ${i} |grep '"l3_device"'|cut -d '"' -f 4`
- ipaddr=`ifconfig $ifname|grep 'inet addr'|cut -d ':' -f2|cut -d ' ' -f1`
- gateway=`ifstatus ${i} |grep '"nexthop"'|cut -d '"' -f 4`
- ip rule add from $ipaddr table $j prio $j
- ip rule add fwmark 0x0$j table $j prio $j
- ip route flush table $j
- ip route | grep link | while read ROUTE
- do
- ip route add $ROUTE table $j
- done
- ip route add default via $gateway table $j
- #所有wan进入的包(NEW)都标记为0x0$j,走Wan策略路由($j)
- iptables -t mangle -A PREROUTING -i $ifname -m state --state NEW -j CONNMARK --set-mark 0x0$j
- #所有WAN出去的包(NEW)都标记为0x0$j,走Wan策略路由($j)
- iptables -t mangle -A POSTROUTING -o $ifname -m state --state NEW -j CONNMARK --set-mark 0x0$j
- cmd="$cmd nexthop via $gateway dev $ifname weight 1"
- done
- #所有LAN进入并且已经建立连接的包,恢复MARK
- iptables -t mangle -A PREROUTING -i br-lan -m state --state RELATED,ESTABLISHED -j CONNMARK --restore-mark
- #DNS默认走WAN(应为双线的线路如果不是同一个ISP,那么DNS就不能混用,只能指定一个)
- iptables -t mangle -A POSTROUTING -p udp --dport 53 -j CONNMARK --set-mark 0x011
- eval $cmd
复制代码 把上面的保存到一个文件并加执行权
依赖以下包 libc, ip, iptables, iptables-mod-conntrack, iptables-mod-conntrack-extra, iptables-mod-ipopt
拔上号后运行一下这脚本文件就能叠加 |
评分
-
查看全部评分
|