1 #!/bin/sh

2 #modified by muziling v0.3

3 #并发多拨脚本4 #modified by carl v0.3.1(修正一处bug,改善友好提示信息)5

6 #number是重拔次数,本脚本启动后一共尝试的次数7 #n是几拔,同时发出几拨,理论上设置越大成功概率越大!8 #ok是拔上几次后退出拔号, 要实现的预期目标9 #wait time每次单线多拨失败后,重试的等待时间10

11 number=15

12 n=7

13 ok=2

14 wait=8

15 # avoid same with feixiang's N-WAN naming and must start with "wan"

16 prefix=wan17 vthprefix=vth18

19 j=$(ifconfig | grep pppoe-wan | wc -l)20 if [ $j -ge $ok ] ;21 then

22 echo已经是[$j]拔了,退出拔号程序。23 exit 0

24 fi

25

26 if [ -f /etc/config/nwannumset ] ;27 then

28 uci set nwannumset.@macvlan_numset[0].macvlan_num=1

29 uci commit nwannumset30 fi

31

32 for i in $( seq 1 $(($n-1)))33 do

34 ifname=$prefix$i35 ifvth=$vthprefix$i36 #ifwan=$(uci get network.wan.ifname)37 pppoe_name=$(uci get network.wan.username)38 pppoe_pw=$(uci get network.wan.password)39

40 if [ $(ip link | grep "${ifvth}@eth0.2:" | wc -l) == "0"] ;41 then

42 macfac=$(ifconfig | grep eth0.2 | tr -s " " | cut -d " " -f5 | cut -b 1-8)43 mac="$macfac:"$(md5sum /proc/sys/kernel/random/uuid | sed 's/\(..\)/&:/g' | cut -b 1-8 | tr [a-f] [A-F])44 ip link add link eth0.2$ifvth type macvlan45 ifconfig$ifvth hw ether $mac46 echo更换MAC完毕$ifvth.47 fi

48

49 # add /etc/config/network50 uci delete network.$ifname51 uci set network.$ifname=interface52 uci set network.$ifname.ifname=$ifvth53 #uci set network.$ifname._orig_ifname=eth0.2

54 #uci set network.$ifname._orig_bridge=false

55 uci set network.$ifname.proto=pppoe56 uci set network.$ifname.username=$pppoe_name57 uci set network.$ifname.password=$pppoe_pw58 uci set network.$ifname.auto=0

59 uci set network.$ifname.defaultroute=0

60 uci set network.$ifname.peerdns=1

61 uci set network.$ifname.pppd_options="plugin rp-pppoe.so syncppp $n"

62

63 # add /etc/config/dhcp64 uci delete dhcp.$ifvth65 uci set dhcp.$ifvth=dhcp66 uci set dhcp.$ifvth.interface=$ifname67 uci set dhcp.$ifvth.ignore=1

68

69 if [ -f /etc/config/nwan ] ;70 then

71 uci delete nwan.$ifname72 uci set nwan.$ifname=interface73 uci set nwan.$ifname.name=unicom74 uci set nwan.$ifname.route=balance75 uci set nwan.$ifname.weight=1

76 uci set nwan.$ifname.uptime=0day,0hour,0min77 uci commit nwan78 fi

79 done

80

81 uci set network.wan.defaultroute=0

82 uci set network.wan.peerdns=1

83 uci set network.wan.pppd_options="plugin rp-pppoe.so syncppp $n"

84 uci commit network85 uci commit dhcp86

87 fw_wan_list=$(uci show network |grep =interface |grep -v lan|grep -v loopback |cut -d"." -f2 | awk -F "=" '{printf $1" "}')88 uci set firewall.@zone[1].network="$fw_wan_list"

89 uci commit firewall90 /etc/init.d/firewall restart91

92 for q in $( seq 1$number )93 do

94 echo

95 echo___________________________________________________96 echo开始第$q次拔号...........97 killall -q -SIG pppd98 if [ "$q" == "1"] ;99 then

100 for i in $( seq 1 $(($n-1)))101 do

102 ifup $prefix$i103 done

104 fi

105

106 echo正在并发拔号中.............107 echo等待$wait秒.............108 sleep $wait

109

110 j=$(ps | grep pppd | wc -l)111 ! [ "$j" -ge "$n" ] && ifup ${prefix}1

112

113 ifconfig | greppppoe114 j=$(ifconfig | grep pppoe-wan | wc -l)115

116 ! [ "$j" -ge "$ok" ] && echo[$n]拔[$j]拔成功, 小于设定的[$ok]拔,将重新拔号...117 [ "$j" -ge "$ok" ] && echo[$n]拔[$j]拔成功, 大于或等于设定的[$ok]拨,退出拔号...118

119 if [ "$j" -ge "$ok"] ;120 then

121 for i in $( seq 0 $(($n-1)))122 do

123 if [ "$i" == "0"] ;124 then

125 interface=wan126 else

127 interface=$prefix$i128 fi

129 if [ $(ifconfig | grep "pppoe-$interface" | wc -l) == "0"] ;130 then

131 ifdown $interface132 fi

133 done

134 break135 fi

136 done # done/tried all tring times $number137

138 # kill ddns sleep and re-check wan ip change139 killall sleep

140

141 # reboot the machine iffailed tried times142 #sleep $wait

143 j=$(ifconfig | grep pppoe-wan | wc -l)144 ! [ "$j" -gt 0 ] &&reboot145

146

147 echo___________________________________________________148 echo 开始N-WAN负载均衡功能...149 #ppoename=$(ifconfig |grep 'ppoe-' |awk '{print substr($1,7)}'|tr '\n' ' ')150 ppoename=$(ifconfig|grep 'ppoe-' |awk '{print $1}'|tr '\n' ' ')151 i=0

152 vias=""

153 for wan_ifname in$ppoename154 do

155 vias="$vias nexthop via $wan_ip dev $wan_ifname weight 1"

156 let "rt=100+$i"

157 i=$(($i+1))158 ip route flush table $rt159 #REMOVE ERROR160 ip route add default via $wan_ip dev $wan_ifname table $rt161 ip route add table $rt to $(ip route | grep br-lan)162

163 if [ $(iptables -t nat -vxnL POSTROUTING | grep -c "$wan_ifname") == "0"] ;164 then

165 #REMOVE ERROR166 iptables -t raw -A PREROUTING -i $wan_ifname -j zone_wan_notrack167 iptables -t nat -A PREROUTING -i $wan_ifname -j zone_wan_prerouting168 #REMOVE ERROR169 iptables -t nat -A POSTROUTING -o $wan_ifname -j zone_wan_nat170 iptables -t filter -A forward -i $wan_ifname -j zone_wan_forward171 #REMOVE ERROR172 iptables -t filter -A input -i $wan_ifname -j zone_wan173 iptables -t filter -A zone_wan_ACCEPT -o $wan_ifname -j ACCEPT174 iptables -t filter -A zone_wan_ACCEPT -i $wan_ifname -j ACCEPT175 iptables -t filter -A zone_wan_DROP -o $wan_ifname -j DROP176 iptables -t filter -A zone_wan_DROP -i $wan_ifname -j DROP177 iptables -t filter -A zone_wan_REJECT -o $wan_ifname -j reject178 iptables -t filter -A zone_wan_REJECT -i $wan_ifname -j reject179 fi

180

181 iptables -A PREROUTING -t mangle -i $wan_ifname -j MARK --set-mark $rt182 iptables -t mangle -A zone_wan_MSSFIX -o $wan_ifname -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu183 ip rule add fwmark $rt table $rt prio $rt184 done

185

186 ip route del default187

188 echo___________________________________________________189 echo下面执行ip route add default scope global $vias190 ip route add default scope global $vias191

192 ip route flush cache193

194 echo___________________________________________________195 echo下面输出ip route list196 ip route list197

198 echo___________________________________________________199 echo 下面输出route -n200 route -n

x86 单线并发多拨_OpenWrt ADSL单线多拨,负载均衡(仅供参考)相关推荐

  1. Java面试题:Java+并发+Spring+MySQL+分布式+Redis+算法+JVM等,仅供参考

    第一部分 Java相关 1.1 JAVA基础 面向对象和面向过程的区别 Java 语言有哪些特点 关于 JVM JDK 和 JRE 最详细通俗的解答 Oracle JDK 和 OpenJDK 的对比 ...

  2. OpenWrt ADSL单线多拨,负载均衡(仅供参考)

    前题 硬件:路由器,刷入OpenWrt 一些背景知识和动手能力 目标效果图 步骤 使用SSH 登陆路由器.I.e. ssh root@192.168.2.1 运行/usr/bin/duobo.日志类似 ...

  3. 程序员修神之路--高并发系统设计负载均衡架构

    点击上方"蓝字"关注,酷爽一夏 菜菜哥,上次你给我讲的分库分表策略对我帮助很大 有帮助就好,上次请我的咖啡也很好喝~ 呵呵,不过随着访问量的不断加大,网站我又加了nginx做负载均 ...

  4. .net core高并发_高并发下的Node.js与负载均衡

    阅读本文约需要6分钟 大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了下浅谈前端自动化构建的相关知识,今天跟大家分享浅谈前端自 ...

  5. EMQ 助力阿里云洛神云网络构建新一代“亿级并发、百万级吞吐”NLB 网络型负载均衡系统

    万物智联的数字化时代,我们正走在从"数据量变"到"连接质变"的道路上.在日益丰富的物联网应用场景中,实现海量设备与云端之间双向通信连接,分析并从中获得实时洞察成 ...

  6. 高并发负载均衡(二):LVS 的 DR,TUN,NAT 网络模型推导

    上节回顾 路由器就是要连接不同的网段,它是用来选择路线的.它里面有路由表,可以进行路由转发的判定. 交换机是负责同一个网络中转发,他只要转发就行了. ARP协议 发送端必须获取到目的MAC地址,MAC ...

  7. 高并发系统搭建:web负载均衡

    高并发系统搭建:web负载均衡 所谓的负载均衡就是让多个请求尽量均衡的分配到不同的机器上面去 1. HTTP负载均衡 当用户的请求发来之后,web服务器通过修改HTTP响应报头中的Location标记 ...

  8. 面试90%都会翻车的高可用+高并发+负载均衡架构设计 !

    很多人面试的时候被问到一个让人特别手足无措的问题: 你的系统如何支撑高并发? 对于一个公司而言,"为什么要高可用" 关于负载均衡架构设计你了解多少? 大多数同学被问到这个问题压根儿 ...

  9. 高并发应用场景下的负载均衡与故障转移实践,AgileEAS.NET SOA 负载均衡介绍与实践...

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  10. net 模式中虚拟机连不上本机oracle_高并发与负载均衡(三种负载模式)

    随着互联网的飞速发展,传统的昂贵的大容量高性能服务器(F5 BIG-IP.Citrix NetScaler.A10)已经越来越应付不了日益增长的业务需求了,而高并发和负载均衡所带来的高可靠/高可用/低 ...

最新文章

  1. Android Studio导出Jar包并混淆
  2. 从拟物到简约 ------谈网站设计风格的变革
  3. Activiti多人会签例子
  4. 泰拉瑞亚服务器怎么让玩家注册,上线10年,《泰拉瑞亚》为何变成了一款交友游戏?...
  5. get post put delete
  6. python后端开发书籍_后端书籍推荐
  7. echarts环形图加边框
  8. web页面移动端键盘弹出后对页面布局的影响
  9. textarea 滚动条设置
  10. TCP offload to the resuce 让TCP减负来挽救我们
  11. 2022建筑架子工(建筑特殊工种)考试练习题及在线模拟考试
  12. 写一段wavefront_reader的代码
  13. [UVALive3942] Remember the Word 字符串
  14. ORA-00257 错误处理
  15. 国家、省、市三级联动下拉列表
  16. 安装design compiler的教程
  17. 沙特CB认证如何申请,流程怎样
  18. Spring MVC工作流程图
  19. Echarts3.0入门基础与实战(学习笔记)
  20. aot android,android – JIT与AOT编译

热门文章

  1. 支持10K高清视频是HDMI 2.1有什么特点?
  2. VMware下安装Raspbian树莓派系统
  3. toolbar遇到问题和解决方式
  4. 沟通的艺术与处世智慧 ——戴尔卡耐基(笔记)
  5. 电脑安装android2.0,应用多开 这才是最适用电脑的安卓—凤凰系统2.0
  6. 定制化件T恤其实很简单,您需要了解的有以下几点
  7. SPOJ - DQUERY D-query
  8. 友盟分享,极光推送Demo
  9. LittleVGL学习笔记(1)---获取源码实现仿真并移植到STM32
  10. 联发科mtk手机处理器怎么样_“传音”新款手机发布,设计大胆,搭载联发科G90T处理器...