openwrt简单带宽叠加脚本(支持pppoe同网关带宽叠加)
之前介绍的文章不是任何路由都能叠加:https://bbs.swdyz.com/thread188sw1dyz1.shtml,所以,这里加点料,不用multi-wan来实现带宽叠加了。简单的添加接口,设置macvlan就能实现带宽的叠加了!看代码:
#!/bin/ash
#把脚本保存到一个文件并加执行权
#依赖以下包 libc, ip, iptables, iptables-mod-conntrack, iptables-mod-conntrack-extra, iptables-mod-ipopt
#拔上号后运行一下这脚本文件就能叠加
ip rule flush
ip rule add lookup main prio 32766
ip rule add lookup default prio 32767
#清除PREROUTI..
iptables -t mangle -F PREROUTING
iptables -t mangle -F POSTROUTING
cmd="ip route replace default scope global "
#wan wan1是要叠加的网络
interface="wan wan2 hg320"
j=10
for i in $interface
do
j=$(($j+1))
ifname=$(ifstatus ${i} | grep '"l3_device"' | cut -d '"' -f 4)
ipaddr=$(ifconfig $ifname | grep 'inet addr' | cut -d ':' -f 2 | cut -d " " -f 1)
gateway=$(ifstatus ${i} | grep '"nexthop"'|grep '\{1,3\}\.\{1,3\}\.\{1,3\}\.\{1,3\}'| cut -d '"' -f 4)
# 这里将网关设置为pppoe获得的ip地址,用于同网关带宽无法叠加的情况(只适用于点对点如pppoe)
if [ "$(ifconfig | grep "pppoe-${i}" | wc -l)" != "0" ];then
gateway=$ipaddr
fi
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="$cmdnexthop 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则标记设置为0x011(应为双线的线路如果不是同一个ISP,那么DNS就不能混用,只能指定一个)
iptables -t mangle -A POSTROUTING -p udp --dport 53 -j CONNMARK --set-mark 0x0$j
eval $cmd
将上面代码拷贝到一个文件如 :router.sh 加执行权限,拔上号后运行一下这脚本文件就能叠加带宽(建议加在拨号脚本里面!)
页:
[1]