Multiwan

multiwan 是一个能让多WAN设置变得简单易用可维护的代理脚本。它支持负载均衡,failover,还有容易配置的出入规则。multiwan 随包提供了uci设置文件 /etc/config/multiwan

不像那些“channel bonding(多网卡冗余)” 或者 “link aggregation(链路聚合技术)” , multiwan 引导每一个独立的会话走不太繁忙的WAN接口,并且这个会话到结束为止都只通过一个接口。

注意:如果WAN连接在同一个子网共用一个网关,那么multiwan就不干了。

在 LuCI GUI 中进入:

  • 系统 → 软件包 → 更新软件包列表
  • 系统 → 软件包 → 下拉到“可用软件包” →点 luci-app-multiwan 旁边的“安装”.

那么现在你将会在 网络 → Multi-WAN下看到 multiwan 的设置页面了。

opkg update
opkg install multiwan
/etc/init.d/multiwan enable
/etc/init.d/multiwan start
/etc/init.d/multiwan single

全局设定

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
vconfig add eth0 2

使用 /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'
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只走一个网关。 做好了。

  1. Status > Interfaces 应该显示出通过各接口的流量
  2. 路由分配
 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
  1. route命令应该显示出2个默认网关 。
  2. 下一个多人下的种子(H种子为妙?)如果 multiwan 正确工作了,那么你会发现总带宽比你带宽最宽端口的还要大。
  3. 切断一个 WAN 端口不会打断你的连接。

可能的问题:

  1. 你刷新了网络状态页面但是网速没有提升。
  2. 在 “接口” 页面只显示了一个WAN接口
  3. 你使用了 route 命令但是只显示一个网关。
  4. ip route show table 123命令没有显示 nexthops

渣翻译,如果发现有不妥地方还请雅正。如果您有空最好发封邮件到xlctemp # foxmail.com 来拍一下译者,谢谢!

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2013/07/17 03:27
  • (external edit)