Multiwan
multiwan 已经过时并且不再维护, 您应该使用 mwan3 替代。
multiwan 是一个能让多WAN设置变得简单易用可维护的代理脚本。它支持负载均衡,failover,还有容易配置的出入规则。multiwan 随包提供了uci设置文件 /etc/config/multiwan
不像那些“channel bonding(多网卡冗余)” 或者 “link aggregation(链路聚合技术)” , multiwan 引导每一个独立的会话走不太繁忙的WAN接口,并且这个会话到结束为止都只通过一个接口。
注意:如果WAN连接在同一个子网共用一个网关,那么multiwan就不干了。
安装
通过 LuCI 安装
在 LuCI GUI 中进入:
- 系统 → 软件包 → 更新软件包列表
- 系统 → 软件包 → 下拉到“可用软件包” →点 luci-app-multiwan 旁边的“安装”.
那么现在你将会在 网络 → Multi-WAN下看到 multiwan 的设置页面了。
通过命令行(CLI) 安装
opkg update opkg install multiwan /etc/init.d/multiwan enable /etc/init.d/multiwan start /etc/init.d/multiwan single
设置
使用命令行 (CLI) 设置
全局设定
config 'multiwan' 'config' option 'default_route' 'balancer'
设置名称 | 默认值 | 选项 | 描述 |
---|---|---|---|
default_route | balancer | balancer/fastbalancer/<interface> | 给未指定的连接指定默认通道 |
health_monitor | parallel | parallel/serial | Memory footprint related |
debug | 0 | 0/1 | 输出debug到日志文件 |
lan_if | lan | <firewall lan zone> |
uci set multiwan.config.health_monitor=serial uci commit multiwan /etc/init.d/multiwan restart
* 使用 netfilter 的 Load Balancing 被称为: “Fast Balancer (Best Distribution)”
* 使用 iproute2 的 Load Balancing 就是 “Load Balancer (Best Compatibility)”
* 那么现在 “Fast Balancer” 对应的 wanrule 就是fastbalancer
* “Load Balancer” 对应的 wanrule 还是 balancer
似乎 fastbalancer
在稳定性方面比 balancer
好, 不过你还是需要每种设置都试一下看哪种来看看哪种最好。
WAN 接口
config 'interface' 'wan' option 'weight' '10' option 'health_interval' '10' option 'icmp_hosts' 'dns' option 'timeout' '3' option 'health_fail_retries' '3' option 'health_recovery_retries' '5' option 'failover_to' 'wan2' option 'dns' 'auto' config 'interface' 'wan2' option 'weight' '10' option 'health_interval' '10' option 'icmp_hosts' 'dns' option 'timeout' '3' option 'health_fail_retries' '3' option 'health_recovery_retries' '5' option 'failover_to' 'wan' option 'dns' 'auto'
设置项 | 默认值 | 选项 | 描述 |
---|---|---|---|
weight | 10 | disable/1-10 | 负载均衡权重 |
health_interval | 10 | disable/5/10/20/30/60/120 | 监控通断时间间隔 |
icmp_hosts | ? | disable/dns/gateway/<host> | 监控通断目标ICMP 地址 |
timeout | ? | disable/1-5/10 | 监控 ICMP 超时 |
health_fail_retries | ? | 1/3/5/10/15/20 | 在切换负载前的重试次数 |
health_recovery_retries | ? | 1/3/5/10/15/20 | 认为此WAN口恢复正常的重试次数 |
failover_to | ? | disable/balancer/fastbalancer/<interface> | 如果此接口断开则切换到的接口 |
dns | auto | auto/<dns> | DNS 服务器 |
uci delete multiwan.wan2 uci set multiwan.wwan=interface uci set multiwan.wwan.weight=3 uci set multiwan.wwan.health_interval=disable uci set multiwan.wwan.icmp_hosts=disable uci set multiwan.wwan.timeout=3 uci set multiwan.wwan.health_fail_retries=3 uci set multiwan.wwan.health_recovery_retries=5 uci set multiwan.wwan.failover_to=fastbalancer uci set multiwan.wwan.dns=auto uci commit multiwan /etc/init.d/multiwan restart
对于 PPP 3G WAN 接口, 一般需要对每个WAN接口单独设置DNS服务器。 如果遇到多重 3G 软件狗 , 在 etc/config/network 中把下面的东西加到每个WAN接口下面:
option 'peerdns' '0' option 'defaultroute' '0'
对外 Traffic Rules
如果有多条相同规则存在, 最后添加的规则优先生效。
config 'mwanfw' option 'src' '192.168.1.0/24' option 'proto' 'udp' option 'port_type' 'source-ports' option 'ports' '5060,16384:16482' option 'wanrule' 'wan'
设置项 | 默认值 | 选项 | 描述 |
---|---|---|---|
src | all | all/<IP>/<hostname> | 源地址 |
dst | all | all/<IP>/<hostname> | 目的地址 |
port_type | dports | dports/source-ports | |
ports | all | all/<port,port:range> | 端口 |
proto | all | all/tcp/udp/icmp/<custom> | 协议 |
wanrule | balancer/fastbalancer/<interface> | WAN上行 | |
failover_to | balancer/fastbalancer/<interface> | multiwan_per_mwanfw_failover.patch.txt |
uci add multiwan mwanfw uci set multiwan.@mwanfw[-1].src=192.168.2.0/24 uci set multiwan.@mwanfw[-1].dst=www.whatismyip.com uci set multiwan.@mwanfw[-1].wanrule=fastbalancer uci commit multiwan /etc/init.d/multiwan restart
简单的设置方法
1.为WAN2 创建一个 VLAN
vconfig add eth0 2
2. 设置 VLAN 和 Network接口
使用 /etc/config/network.
- 将 LAN “0” 口 从默认的 eth0_0 改成 eth0_2.
- 首先将 WAN 和 WAN2 的'proto' 设置成成 'dhcp' 。如果需要的话, 再在WEB界面中设置为静态地址或者PPPOE .
- 如果你DNS服务有问题,那么使用下面的 DNS 服务器设置。 一些ISP只允许自家IP段传过来的DNS请求。
# 以下的设置假定这是一个有6个口的交换机 ,默认的WAN端口是 端口0, #默认LAN口 (1-4) 是交换口 (1-4) 和内置交换口 # 连接到路由主板的是 交换口5. # 虽然这是一个常见的设置方法,但是一些路由器只有5个口,一个单独的物理WAN接口;并且编号系统可能不同。 config 'switch' 'eth0' option 'enable' '1' # 注意:内置交换口5在下文称为 “5t”来让它能被 VLANs (eth0.0., eth0.1, eth0.2) 共享 # 设置 LAN 外置端口3 为 VLAN0 . config 'switch_vlan' 'eth0_0' option 'device' 'eth0' option 'vlan' '0' option 'ports' '2 3 4 5t' # 在VLAN1 上设置默认WAN端口. config 'switch_vlan' 'eth0_1' option 'device' 'eth0' option 'vlan' '1' option 'ports' '1 5t' # 在 VLAN2 上设置 WAN2端口(将WAN2端口设置为VLAN2?). config 'switch_vlan' 'eth0_2' option 'device' 'eth0' option 'vlan' '2' option 'ports' '0 5t' # 默认回环连接接口. config 'interface' 'loopback' option 'ifname' 'lo' option 'proto' 'static' option 'ipaddr' '127.0.0.1' option 'netmask' '255.0.0.0' # 在默认LAN接口上开启 生成树协议(Spanning Tree Protocol,STP) config 'interface' 'lan' option 'type' 'bridge' # 一些路由器上面默认的 ”lan“是直接设置到物理接口eth0 。这必须改成一个VLAN接口,在这里是eth0.0 。 option 'ifname' 'eth0.0' option 'proto' 'static' option 'stp' '1' option 'ipaddr' '192.168.1.1' option 'netmask' '255.255.255.0' # WAN接口 config 'interface' 'wan' option 'ifname' 'eth0.1' option 'proto' 'dhcp' option 'dns' '216.146.35.113 216.146.36.113 8.8.8.8 8.8.4.4' # WAN2接口 config 'interface' 'wan2' option 'ifname' 'eth0.2' option 'proto' 'dhcp' option 'dns' '216.146.35.113 216.146.36.113 8.8.8.8 8.8.4.4'
3. 设置 WAN 接口和 multiwan
WANs:
网络 >接口 > WAN/WAN2 - 将WAN2添加到防火墙的WAN区域
Multiwan:
网络 > Multiwan 看看下面的页面了解一下设置的例子。 这是我的设置方法:
- a.我只有两个WAN接口所以我总是把最后两个删掉。我也在 /etc/iproute2/rt_tables 中注释掉了 MWAN3 和 MWAN4 (尽管可能不需要).
- b. Load Balancer Distribution = 1
两个连接中: Failover = LoadBalancer
- c.出入规则
看看例子 Source, Destination, protocol, Ports, WAN Uplink all, all,all,all, Load Balancer all, all, UDP, all, wan ←-
这个让所有VPN和VOIP只走一个网关。 做好了。
3. 测试.
- Status > Interfaces 应该显示出通过各接口的流量
- 路由分配
root@culiat-wg:~# ip route show table 123 192.168.2.0/24 dev eth0.2 proto kernel scope link src 192.168.2.214 192.168.1.0/24 dev br-lan proto kernel scope link src 192.168.1.1 114.108.201.0/24 dev eth0.1 proto kernel scope link src 114.108.201.49 default proto static nexthop via 114.108.201.1 dev eth0.1 weight 1 nexthop via 192.168.2.1 dev eth0.2 weight 1
route
命令应该显示出2个默认网关 。- 下一个多人下的种子(H种子为妙?)如果 multiwan 正确工作了,那么你会发现总带宽比你带宽最宽端口的还要大。
- 切断一个 WAN 端口不会打断你的连接。
4. 解决问题
可能的问题:
- 你刷新了网络状态页面但是网速没有提升。
- 在 “接口” 页面只显示了一个WAN接口
- 你使用了
route
命令但是只显示一个网关。 ip route show table 123
命令没有显示nexthops
渣翻译,如果发现有不妥地方还请雅正。如果您有空最好发封邮件到xlctemp # foxmail.com 来拍一下译者,谢谢!