x86 单线并发多拨_OpenWrt ADSL单线多拨,负载均衡(仅供参考)
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单线多拨,负载均衡(仅供参考)相关推荐
- Java面试题:Java+并发+Spring+MySQL+分布式+Redis+算法+JVM等,仅供参考
第一部分 Java相关 1.1 JAVA基础 面向对象和面向过程的区别 Java 语言有哪些特点 关于 JVM JDK 和 JRE 最详细通俗的解答 Oracle JDK 和 OpenJDK 的对比 ...
- OpenWrt ADSL单线多拨,负载均衡(仅供参考)
前题 硬件:路由器,刷入OpenWrt 一些背景知识和动手能力 目标效果图 步骤 使用SSH 登陆路由器.I.e. ssh root@192.168.2.1 运行/usr/bin/duobo.日志类似 ...
- 程序员修神之路--高并发系统设计负载均衡架构
点击上方"蓝字"关注,酷爽一夏 菜菜哥,上次你给我讲的分库分表策略对我帮助很大 有帮助就好,上次请我的咖啡也很好喝~ 呵呵,不过随着访问量的不断加大,网站我又加了nginx做负载均 ...
- .net core高并发_高并发下的Node.js与负载均衡
阅读本文约需要6分钟 大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了下浅谈前端自动化构建的相关知识,今天跟大家分享浅谈前端自 ...
- EMQ 助力阿里云洛神云网络构建新一代“亿级并发、百万级吞吐”NLB 网络型负载均衡系统
万物智联的数字化时代,我们正走在从"数据量变"到"连接质变"的道路上.在日益丰富的物联网应用场景中,实现海量设备与云端之间双向通信连接,分析并从中获得实时洞察成 ...
- 高并发负载均衡(二):LVS 的 DR,TUN,NAT 网络模型推导
上节回顾 路由器就是要连接不同的网段,它是用来选择路线的.它里面有路由表,可以进行路由转发的判定. 交换机是负责同一个网络中转发,他只要转发就行了. ARP协议 发送端必须获取到目的MAC地址,MAC ...
- 高并发系统搭建:web负载均衡
高并发系统搭建:web负载均衡 所谓的负载均衡就是让多个请求尽量均衡的分配到不同的机器上面去 1. HTTP负载均衡 当用户的请求发来之后,web服务器通过修改HTTP响应报头中的Location标记 ...
- 面试90%都会翻车的高可用+高并发+负载均衡架构设计 !
很多人面试的时候被问到一个让人特别手足无措的问题: 你的系统如何支撑高并发? 对于一个公司而言,"为什么要高可用" 关于负载均衡架构设计你了解多少? 大多数同学被问到这个问题压根儿 ...
- 高并发应用场景下的负载均衡与故障转移实践,AgileEAS.NET SOA 负载均衡介绍与实践...
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- net 模式中虚拟机连不上本机oracle_高并发与负载均衡(三种负载模式)
随着互联网的飞速发展,传统的昂贵的大容量高性能服务器(F5 BIG-IP.Citrix NetScaler.A10)已经越来越应付不了日益增长的业务需求了,而高并发和负载均衡所带来的高可靠/高可用/低 ...
最新文章
- Android Studio导出Jar包并混淆
- 从拟物到简约 ------谈网站设计风格的变革
- Activiti多人会签例子
- 泰拉瑞亚服务器怎么让玩家注册,上线10年,《泰拉瑞亚》为何变成了一款交友游戏?...
- get post put delete
- python后端开发书籍_后端书籍推荐
- echarts环形图加边框
- web页面移动端键盘弹出后对页面布局的影响
- textarea 滚动条设置
- TCP offload to the resuce 让TCP减负来挽救我们
- 2022建筑架子工(建筑特殊工种)考试练习题及在线模拟考试
- 写一段wavefront_reader的代码
- [UVALive3942] Remember the Word 字符串
- ORA-00257 错误处理
- 国家、省、市三级联动下拉列表
- 安装design compiler的教程
- 沙特CB认证如何申请,流程怎样
- Spring MVC工作流程图
- Echarts3.0入门基础与实战(学习笔记)
- aot android,android – JIT与AOT编译
热门文章
- 支持10K高清视频是HDMI 2.1有什么特点?
- VMware下安装Raspbian树莓派系统
- toolbar遇到问题和解决方式
- 沟通的艺术与处世智慧 ——戴尔卡耐基(笔记)
- 电脑安装android2.0,应用多开 这才是最适用电脑的安卓—凤凰系统2.0
- 定制化件T恤其实很简单,您需要了解的有以下几点
- SPOJ - DQUERY D-query
- 友盟分享,极光推送Demo
- LittleVGL学习笔记(1)---获取源码实现仿真并移植到STM32
- 联发科mtk手机处理器怎么样_“传音”新款手机发布,设计大胆,搭载联发科G90T处理器...