找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12764|回复: 0

openwrt简单带宽叠加脚本(支持pppoe同网关带宽叠加)

[复制链接]
发表于 2013-10-4 01:02:44 | 显示全部楼层 |阅读模式
之前介绍的文章不是任何路由都能叠加:https://bbs.swdyz.com/thread188sw1dyz1.shtml

所以,这里加点料,不用multi-wan来实现带宽叠加了。简单的添加接口,设置macvlan就能实现带宽的叠加了!看代码:
[Bash shell] 纯文本查看 复制代码
#!/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 '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{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="$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则标记设置为0x011(应为双线的线路如果不是同一个ISP,那么DNS就不能混用,只能指定一个)
iptables -t mangle -A POSTROUTING -p udp --dport 53 -j CONNMARK --set-mark 0x0$j

eval $cmd


将上面代码拷贝到一个文件如 :router.sh 加执行权限,拔上号后运行一下这脚本文件就能叠加带宽(建议加在拨号脚本里面!)

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|第一站论坛 ( 蜀ICP备06004864号-6 )

GMT+8, 2025-4-12 10:04 , Processed in 0.063987 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表