mwan3 负载平衡 多PPPOE账号 LTE WIFI 负载均衡

2023-05-16

OpenWrt上的MWAN3可以支持多根网线或者多个PPPOE账号的同时拨号使用和负载均衡。并且还可以通过Ping方式来检测中断线路并自动屏蔽中断线路。
在这里插入图片描述

mwan3的详细介绍

https://openwrt.org/docs/guide-user/network/wan/multiwan/mwan3

说白了,就是可以负载平衡。多个口负载一块。也就是说,你有两个运营商账号
账号A是100M,B是200M,使用mwan3,同时使用。也就是可以100+200, 300M网速。

下面的配置记录,是做LTE和WIFI(STA上网,类似于wifi桥接),这样LTE和WIFI,可以保持用户,无论LTE或者WIFI网络不好时候,保证用户的上网稳定。

类似于优先用户上网正常,WIFI没网络就切换到LTE,LTE没网络,就切换到WIFI。
前段时间做过。具体流程,等有空更新一波。



我使用的是平台 openwrt + mtk7621

配置network

 root@OpenWrt:~# cat /etc/config/network 
 
 config interface 'loopback'
         option ifname 'lo'
         option proto 'static'
         option ipaddr '127.0.0.1'
         option netmask '255.0.0.0'
 
 config globals 'globals'
         option ula_prefix 'fd6b:0d06:1413::/48'
 
 config interface 'lan'
         option ifname 'eth0'
         option force_link '1'
         option type 'bridge'
         option proto 'static'
         option ipaddr '192.168.0.1'
         option netmask '255.255.255.0'
         option ip6assign '60'
         option macaddr 'FF:FF:FF:FF:FF:FF'
 
 config interface 'wan'
         option proto 'dhcp'
         option macaddr 'FF:FF:FF:FF:FF:FF'
         option ifname 'eth1'  //LTE模式
         option metric '20'  //添加 
 
 config interface 'wan0'
         option ifname 'wlan0'  //WIFI模式
         option metric '10'
         option proto 'dhcp'
         option metric '10'  //添加
 
 config interface 'wan6'
         option ifname '@wan'
         option proto 'dhcpv6'

配置Firewall

 root@OpenWrt:~# cat /etc/config/firewall
 
 config defaults
         option syn_flood '1'
         option input 'ACCEPT'
         option output 'ACCEPT'
         option forward 'ACCEPT'
 
 config zone
         option name 'lan'
         list network 'lan'
         option input 'ACCEPT'
         option output 'ACCEPT'
         option forward 'ACCEPT'
 
 config zone
         option name 'wan'
         list network 'wan'
         list network 'wan0'  //添加
         list network 'wan6'
         option input 'REJECT'
         option output 'ACCEPT'
         option forward 'ACCEPT'
         option masq '1'
         option mtu_fix '1'
 
 config forwarding
         option src 'lan'
         option dest 'wan'
 
 config rule
         option name 'Allow-DHCP-Renew'
         option src 'wan'
         option proto 'udp'
         option dest_port '68'
         option target 'ACCEPT'
         option family 'ipv4'
 
 config rule
         option name 'Allow-Ping'
         option src 'wan'
         option proto 'icmp'
         option icmp_type 'echo-request'
         option family 'ipv4'
         option target 'ACCEPT'
 
 config rule
         option name 'Allow-DHCPv6'
         option src 'wan'
         option proto 'udp'
         option src_ip 'fe80::/10'
         option src_port '547'
         option dest_ip 'fe80::/10'
         option dest_port '546'
         option family 'ipv6'
         option target 'ACCEPT'
 
 config rule
         option name 'Allow-ICMPv6-Input'
         option src 'wan'
         option proto 'icmp'
         list icmp_type 'echo-request'
         list icmp_type 'echo-reply'
         list icmp_type 'destination-unreachable'
         list icmp_type 'packet-too-big'
         list icmp_type 'time-exceeded'
         list icmp_type 'bad-header'
         list icmp_type 'unknown-header-type'
         list icmp_type 'router-solicitation'
         list icmp_type 'neighbour-solicitation'
         list icmp_type 'router-advertisement'
         list icmp_type 'neighbour-advertisement'
         option limit '1000/sec'
         option family 'ipv6'
         option target 'ACCEPT'
 
 config rule
         option name 'Allow-ICMPv6-Forward'
         option src 'wan'
         option dest '*'
         option proto 'icmp'
         list icmp_type 'echo-request'
         list icmp_type 'echo-reply'
         list icmp_type 'destination-unreachable'
         list icmp_type 'packet-too-big'
         list icmp_type 'time-exceeded'
         list icmp_type 'bad-header'
         list icmp_type 'unknown-header-type'
         option limit '1000/sec'
         option family 'ipv6'
         option target 'ACCEPT'
 
 config include
         option path '/etc/firewall.user'
 
 config include 'miniupnpd'
         option type 'script'
         option path '/usr/share/miniupnpd/firewall.include'
         option family 'any'
         option reload '1'	

 root@OpenWrt:~# ip route show
 default via 192.168.154.1 dev wlan0  proto static  metric 10 
 default via 10.158.172.222 dev eth1  proto static  metric 20 
 10.0.0.1 dev eth1  proto static  scope link  metric 20 
 10.158.172.220/30 dev eth1  proto static  scope link  metric 20 
 192.168.0.0/24 dev br-lan  proto kernel  scope link  src 192.168.0.1 
 192.168.154.0/24 dev wlan0  proto static  scope link  metric 10 
 
 root@OpenWrt:~# ping -c 1 -I eth1 www.baidu.com
 PING www.baidu.com (115.239.211.112): 56 data bytes
 64 bytes from 115.239.211.112: seq=0 ttl=51 time=151.846 ms
 
 --- www.baidu.com ping statistics ---
 1 packets transmitted, 1 packets received, 0% packet loss
 round-trip min/avg/max = 151.846/151.846/151.846 ms
 
 
 root@OpenWrt:~# ping -c 1 -I wlan0 www.baidu.com
 PING www.baidu.com (115.239.211.112): 56 data bytes
 
 --- www.baidu.com ping statistics ---
 1 packets transmitted, 0 packets received, 100% packet loss

配置mwan3

  root@OpenWrt:/# cat /etc/config/mwan3 

config interface 'wan'
        option enabled '1'
        list track_ip '8.8.4.4'
        list track_ip '8.8.8.8'
        list track_ip '208.67.222.222'
        list track_ip '208.67.220.220'
        option reliability '2'
        option count '1'
        option timeout '2'
        option interval '5'
        option down '3'
        option up '8'

config interface 'wan2'
        option enabled '0'
        list track_ip '8.8.8.8'
        list track_ip '208.67.220.220'
        option reliability '1'
        option count '1'
        option timeout '2'
        option interval '5'
        option down '3'
        option up '8'

config member 'wan_m1_w3'//***************重点*************
        option interface 'wan'//***************重点*************LTE
        option metric '1'
        option weight '3'

config member 'wan_m2_w3'
        option interface 'wan'
        option metric '2'
        option weight '3'

config member 'wan2_m1_w2'//***************重点*************
        option interface 'wan0'//***************重点*************WIFI
        option metric '1'
        option weight '2'

config member 'wan2_m2_w2'
        option interface 'wan0'
        option metric '2'
        option weight '2'

config policy 'wan_only'
        list use_member 'wan_m1_w3'

config policy 'wan2_only'
        list use_member 'wan2_m1_w2'

config policy 'balanced' //***************重点*************
        list use_member 'wan_m1_w3'//***************重点*************
        list use_member 'wan2_m1_w2'//***************重点*************

config policy 'wan_wan2'
        list use_member 'wan_m1_w3'
        list use_member 'wan2_m2_w2'

config policy 'wan2_wan'
        list use_member 'wan_m2_w3'
        list use_member 'wan2_m1_w2'

config rule 'sticky_even'
        option src_ip '0.0.0.0/0.0.0.1'
        option dest_port '443'
        option proto 'tcp'
        option use_policy 'wan_wan2'

config rule 'sticky_odd'
        option src_ip '0.0.0.1/0.0.0.1'
        option dest_port '443'
        option proto 'tcp'
        option use_policy 'wan2_wan'

config rule 'default_rule'
        option dest_ip '0.0.0.0/0'
        option use_policy 'balanced'

root@OpenWrt:/# 

https://blog.csdn.net/qq_17308321/article/details/62422419

# This is a mwan3 example config. For mwan3 to work you will need at least这是mwan3的设置示例。至少需要以下几项才能运行mwan3)
#
# - 2 interfaces(2个接口)
# - 2 members(2个成员)
# - 1 policy(1个策略)
# - 1 rule(1条规则)
#
# First define all your wan interfaces. Interface name must match with the
# name used in your network configuration:
(首先要设置所有的wan口,wan口的名字必须跟network配置文件中的wan口名字一致)
config 'interface' 'wan1'
        option 'enabled' '1'
        list 'track_ip' '8.8.4.4'(这些IP都是测试IP,验证是否能ping的通。这里有4个,前两个都是google提供的免费DNS服务器,国内访问应该比较慢。)
        list 'track_ip' '8.8.8.8'
        list 'track_ip' '208.67.222.222'
        list 'track_ip' '208.67.220.220'
        option 'reliability' '2'(可靠性,测试以上IP的可靠性,必须是有响应的链接的个数。简单说就是要求上面的ip几个能ping通)
        option 'count' '1'(ping几次)
        option 'timeout' '2'(ping后如果超时,超时几秒)
        option 'interval' '5'(多次ping之间的间隔时间)
        option 'down' '3'(出现几个ping不通时就认定该wan口掉线了)
        option 'up' '8'(出现几个ping能成功时就认定已经掉线的wan口又上线了)

config 'interface' 'wan2'
        option 'enabled' '1'
        list 'track_ip' '8.8.8.8'
        list 'track_ip' '208.67.220.220'
        option 'reliability' '1'
        option 'count' '1'
        option 'timeout' '2'
        option 'interval' '5'
        option 'down' '3'
        option 'up' '8'

# Next define a member and configure metric and weight values for this member.(接着设置一个成员的权重和跃点值)
# Each interface can have multiple member definitions. Give each member a correct(每一个接口可以含有多重成员定义。每一个成员名称必须有正确的名称)
# name (A-Z, a-z, 0-9, "_" and no spaces).

config 'member' 'wan1_m1_w3'
        option 'interface' 'wan1'
        option 'metric' '1'(1-1000的范围)
        option 'weight' '3'(1-1000的范围)

config 'member' 'wan1_m2_w3'
        option 'interface' 'wan1'
        option 'metric' '2'
        option 'weight' '3'

config 'member' 'wan2_m1_w2'
        option 'interface' 'wan2'
        option 'metric' '1'
        option 'weight' '2'

config 'member' 'wan2_m2_w2'
        option 'interface' 'wan2'
        option 'metric' '2'
        option 'weight' '2'

# After that create a routing policy. A routing policy consist of one or more(然后创建一条路由策略。包括一个或者几个成员。每个策略必须有正确的名称。可以创建多重策略,以至于可以使不同的通信走不同的主/次wan口)
# members. Give each policy a correct name (A-Z, a-z, 0-9, "_" and no spaces). You 
# can create multiple policies, so that it is possible for different traffic to
# have different primary and/or backup interfaces.

config 'policy' 'wan1_only'(只走wan1)
        list 'use_member' 'wan1_m1_w3'

config 'policy' 'wan2_only'(只走wan2)
        list 'use_member' 'wan2_m1_w2'

config 'policy' 'wan1_wan2_loadbalanced'(wan1、wan2负载平衡)
        list 'use_member' 'wan1_m1_w3'
        list 'use_member' 'wan2_m1_w2'

config 'policy' 'wan1_pri_wan2_sec'(wan1主,wan2次)
        list 'use_member' 'wan1_m1_w3'
        list 'use_member' 'wan2_m2_w2'

config 'policy' 'wan2_pri_wan1_sec'(wan2主,wan1次)
        list 'use_member' 'wan1_m2_w3'
        list 'use_member' 'wan2_m1_w2'

# And to finish the config define your traffic rules. Rules are matched in top to(最后来设置通信规则。他是从你设置的规则由上到下依次匹配,如果你定义的一条规则匹配上了,后面的规则都将忽略。如果平衡选项已经设置,mwan3将使每一个新的包走同一个目标主机地址来到达负载平衡,如果没有设置,那么mwan3会根据目标地址自动负载平衡)
# bottom order. If you define a rule and it matches, all following rules are ignored.
#
# If the option equalize is set, mwan3 will load-balance each new session to the same
# host. If not set, it will load-balance based on destination.

config 'rule'
        option 'src_ip' '192.168.21.0/24'(源IP,支持网段的表示方法)
        option 'proto' 'tcp'(指定协议)
        option 'dest_port' '563'(目标端口)
        option 'use_policy' 'wan2_only'(指定走上面设定的哪个策略)

config 'rule'
        option 'src_ip' '192.168.21.0/24'
        option 'proto' 'tcp'
        option 'dest_port' '995'
        option 'use_policy' 'wan1_only'

config 'rule'
        option 'dest_ip' '88.154.0.0/16'(目标IP)
        option 'proto' 'tcp'
        option 'dest_port' '1024:65535'(1024-65535的所有端口)
        option 'equalize' '1'(1为选中。如果选中,mwan3将使每一个新的包走同一个目标主机地址来到达负载平衡。如果没有,那么mwan3会根据目标地址自动负载平衡)

        option 'use_policy' 'wan1_wan2_loadbalanced'

config 'rule'
        option 'dest_ip' '77.11.41.0/24'
        option 'proto' 'tcp'
        option 'dest_port' '1024:65535'
        option 'use_policy' 'wan1_pri_wan2_sec'

config 'rule'
        option 'dest_ip' '112.136.0.0/16'
        option 'proto' 'udp'
        option 'dest_port' '5352'
        option 'use_policy' 'wan2_pri_wan1_sec'

config 'rule'
        option 'dest_ip' '0.0.0.0/0'
        option 'use_policy' 'wan1_wan2_loadbalanced'

	else // no psw 
	{
		my_printf(LOG_MODE_LEVEL_3,"%s(%d) security_mode is %s \n",__FUNCTION__,__LINE__,security_mode);

		system("uci set network.wan.ifname=wlan0");
		system("uci set CusCMCfg.Mode.EncMode=Disable");
		system("uci commit");

		system("ifup wan&");
		system("ifup wan0&");//up eth1
		
		system("killall wpa_supplicant");
		sleep(1);
		system("wpa_supplicant -Dnl80211 -iwlan0 -c /etc/config/8192eeshare &");
		//system("/etc/init.d/dnsmasq restart");
		sleep(3);
		
	}

root@OpenWrt:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.154.1   0.0.0.0         UG    10     0        0 wlan0
0.0.0.0         100.112.252.37  0.0.0.0         UG    20     0        0 eth1
10.0.0.1        0.0.0.0         255.255.255.255 UH    20     0        0 eth1
100.112.252.36  0.0.0.0         255.255.255.252 U     20     0        0 eth1
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 br-lan
192.168.154.0   0.0.0.0         255.255.255.0   U     10     0        0 wlan0
root@OpenWrt:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.154.1   0.0.0.0         UG    10     0        0 wlan0
0.0.0.0         100.112.252.37  0.0.0.0         UG    20     0        0 eth1
10.0.0.1        0.0.0.0         255.255.255.255 UH    20     0        0 eth1
100.112.252.36  0.0.0.0         255.255.255.252 U     20     0        0 eth1
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 br-lan
192.168.154.0   0.0.0.0         255.255.255.0   U     10     0        0 wlan0
root@OpenWrt:~# 
root@OpenWrt:~# 
root@OpenWrt:~# 
root@OpenWrt:~# 
root@OpenWrt:~# ping -c 1 -I eth1 www.baidu.com
PING www.baidu.com (115.239.211.112): 56 data bytes
64 bytes from 115.239.211.112: seq=0 ttl=53 time=84.848 ms

--- www.baidu.com ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 84.848/84.848/84.848 ms
root@OpenWrt:~# ping -c 1 -I wlan0 www.baidu.com
PING www.baidu.com (115.239.210.27): 56 data bytes
64 bytes from 115.239.210.27: seq=0 ttl=51 time=206.639 ms

--- www.baidu.com ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 206.639/206.639/206.639 ms
root@OpenWrt:~# 

root@OpenWrt:~# mwan3 restart
sh: enabled: unknown operand
sh: enabled: unknown operand
root@OpenWrt:~# mwan3 status
Interface status:
Interface wan is online (tracking active)
Interface wan0 is online (tracking active)

Policy balanced:
 wan0 (40%)
 wan (60%)

Policy wan2_only:
 wan0 (100%)

Policy wan2_wan:
 wan0 (100%)

Policy wan_only:
 wan (100%)

Policy wan_wan2:
 wan (100%)

Known networks:
destination        policy             hits     
-----------------------------------------------
127.0.0.0/8        default            6        
224.0.0.0/3        default            0        
10.0.0.1           default            0        
100.112.252.36/30  default            20       
192.168.0.0/24     default            4        
192.168.154.0/24   default            10       
100.112.252.36     default            0        
100.112.252.38     default            20       
100.112.252.39     default            0        
127.0.0.0          default            0        
127.0.0.0/8        default            6        
127.0.0.1          default            6        
127.255.255.255    default            0        
192.168.0.0        default            0        
192.168.0.1        default            4        
192.168.0.255      default            0        
192.168.154.0      default            0        
192.168.154.103    default            9        
192.168.154.255    default            0        

Active rules:
source             destination        proto  src-port      dest-port     policy          hits     
--------------------------------------------------------------------------------------------------
0.0.0.0/0.0.0.1    0.0.0.0/0          tcp    0:65535       443           wan_wan2        0        
0.0.0.1/0.0.0.1    0.0.0.0/0          tcp    0:65535       443           wan2_wan        0        
0.0.0.0/0          0.0.0.0/0          all                                balanced        27       

root@OpenWrt:~# 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mwan3 负载平衡 多PPPOE账号 LTE WIFI 负载均衡 的相关文章

随机推荐

  • python使用ElementTree处理xml容易犯错的点&美化xml

    python使用ElementTree处理xml容易犯错的点 amp 美化xml 引言代码环境相关先上代码 引言 目前因为需要写一个tool处理xml文件 xff0c 对于面向浏览器编程的我来说 xff0c 迅速打开chrome开始搜索关键
  • java截取视频的三种方式

    String cut 61 34 ffmpeg ss 34 43 startTime 43 34 i 34 43 videoPath 43 34 t 34 43 String valueOf seconds 43 34 c v copy c
  • 有关C语言中字符串入栈的理解

    C语言中字符串的入栈 写在前面 对于C语言中变量入栈的顺序实际上需要具体情况具体分析 xff0c 不同操作系统下的编译器可能对此有不同的解释 xff0c 即使对于同一个C的编译器而言 xff0c 参数设定的不同也会导致编译器调整局部变量的入
  • win10 安装MySQL 无管理员权限

    1 找到下载的安装文件 xff0c 按住Shift键 xff0c 同时在安装文件上点击鼠标右键 xff0c 选择复制为路径 2 打开C Windows System32 xff0c 找打cmd exe xff0c 点击右键选择以管理员方式运
  • Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected

    现象描述 xff1a 代码连接本地kafka没有问题 能监听到监听的topic xff0c 可获取通道中的所有topic 将kafka放到服务器上 xff0c 本地程序启动报异常 xff0c 可获取kafka中所有的topic xff0c
  • java 视频转换 avi 转 MP4

    添加jar 包 lt dependency gt lt groupId gt ws schild lt groupId gt lt artifactId gt jave core lt artifactId gt lt version gt
  • 前后端分离,SpringBoot。WEBSocket后台报警页面提示

    前端JS var websocket 61 null 判断当前浏览器是否支持WebSocket 主要此处要更换为自己的地址 if 39 WebSocket 39 in window websocket 61 new WebSocket 34
  • MYSQL 依据字段值分段统计

    SELECT sum mun max from select ceil distance 500 1 500 as min ceil distance 500 500 as max count mun from tablename wher
  • java8转换数组。找到最接近指定数据

    List lt String gt lsstr 61 Arrays asList arear 数组转list List lt String gt listWithoutNulls 61 lsstr stream filter Objects
  • nested exception is java.lang.IllegalStat eException:duplicate spring bean

    nested exception is java lang IllegalStat eException duplicate spring bean 多次注入bean信息 xff0c 经过长时间排查 xff0c 我是将项目进行整合 xff0
  • Artifact xxx:war exploded: Error during artifact deployment.

    Artifact xxx war exploded Error during artifact deployment 出现这个问题 xff0c 在网上查资料 xff0c 1 说是idear 配置的tomcat Artifact 添加的Var
  • zTree取消父子关联

    对于zTree父子关联关系的设置 xff0c zTree里面自带了一个chkboxType函数 取消父子关联 xff0c 只需要在初始化树的时候 xff0c 在settings里面设置 xff1a check enable true chk
  • 解决Linux系统下,出现“不在sudoers文件中,此事将被报告”的问题

    使用sudo mkdir software xff0c 提示XXX 不在 sudoers 文件中 此事将被报告 是因为当前操作用户的权限不足 xff0c 而root用户只有在权限分配及系统设置时才会使用 xff0c 而root用户的密码也不
  • 结构体数组的引用方式

    期末复习时发现答案中有p i a的用法 xff0c 遂进行了一番测试 xff0c 所获心得记载如下 引用结构体指针数组时 xff0c p i 61 61 A i 61 61 p 43 i 注意加括号 xff0c 优先级较低 具体为 xff1
  • Hadoop安装和配置

    1 安装Hadoop 注意 xff1a 安装JDK类似 xff0c 解压后配置环境变量 1 0 Hadoop下载地址 xff1a https archive apache org dist hadoop common hadoop 2 7
  • 机器学习(1)机器学习的范围

    机器学习的范围包括但是不局限与如下 xff1a 机器学习跟模式识别 xff0c 统计学习 xff0c 数据挖掘 xff0c 计算机视觉 xff0c 语音识别 xff0c 自然语言处理等领域有着很深的联系 从范围上来说 xff0c 机器学习跟
  • Tesseract-OCR-v5.0中文识别,训练自定义字库,提高图片的识别效果

    1 xff0c 下载安装Tesseract OCR 安装 xff0c 链接地址Index of tesseract 2 xff0c 安装成功 tesseract v 注意 xff1a 安装后 xff0c 要添加系统环境变量 3 xff0c
  • 4x4矩阵按键应用详解

    一 简介 4x4矩阵按键是单片机外部设备中所使用的排布类似于矩阵的按键组 显然矩阵按键的使用要比独立按键要复杂一些 xff0c 编程也要复杂一些 xff0c 但可以单片机IO资源 4x4矩阵按键即分为4组列线 xff0c 4组行线 xff0
  • Hyper-V 显卡直通

    创建虚拟机后 xff0c 打开虚拟机设置 gt 禁用检查点功能 使用WIN11镜像来部署安装Hyper V虚拟机系统 xff0c 进入桌面后关闭虚拟机 物理机以管理员运行Windows PowerShell 输入以下命令 vm 61 34
  • mwan3 负载平衡 多PPPOE账号 LTE WIFI 负载均衡

    OpenWrt上的MWAN3可以支持多根网线或者多个PPPOE账号的同时拨号使用和负载均衡 并且还可以通过Ping方式来检测中断线路并自动屏蔽中断线路 mwan3的详细介绍 https openwrt org docs guide user