admin 发表于 2013-10-4 01:02:44

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]
查看完整版本: openwrt简单带宽叠加脚本(支持pppoe同网关带宽叠加)