OpenWrt使用macvlan和mwan3实现单线(并发)多拨、负载均衡,并与IPV6共存

背景:电信宽带,在openwrt上设置设置单线多拔与负载均,且实现与ipv6共存。可以正常上网

设备:红米AX6S
固件:ImmortalWrt 18.06-5.4-SNAPSHOT r11814-ef0c86bdb0

macvlan和mwan3 安装

如果路由器是运行的OpenWrt或者LEDE,只需用过以下命令安装这两个软件:

opkg update  
opkg install kmod-macvlan mwan3 luci-app-mwan3

其中,luci-app-mwan3是mwan3的luci界面,可以很方便的使用网页端对mwan3进行配置。

luci-app-syncdial

多播luci界面管理,也就是用于多播的脚本.
- 依赖:kmod-macvlan
- 项目地址:https://github.com/monokoo/luci-app-syncdial

luci-app-nwan3

负载均衡 luci界面管理器
负载均衡简单理解,
是多拨后,宽带流量均衡分配的套件.
如果没有负载均衡,那么所有流量可能会单走一条线,多播变得没有意义.
负载均衡会让网络请求分布走不同的(拨号)路线.

  • 依赖:nwan3
  • 安装方式:直接opkg install 安装,或者网页管理里面安装.

luci-app-syncdial安装

两种安装方式:
1、直接复制文件安装
顾名思义就是,直接克隆项目,拷贝到路由器对应目录.
项目文件(项目files文件内所有文件)和路由器目录路径是一一对应的,不需要怎么管路径的问题.
如果你不想搭建openwrt编译环境.那么可以选这个方式安装.
当然你手动复制文件安装,首先得安装依赖包.kmod-macvlan

复制后,有三个需要做.
1. 给可执行文件添加执行权限.
2. 修改usr/lib/lua/luci/model/cbi/syncdial.lua

```
#第三行
local e="mwan3 status | grep -c \"is online and tracking is active\""

<pre><code>#修改为
local e="mwan3 status | grep -c \"is online\""
```

  1. 添加rpcd
    仅openwrt 19.07之后版本才需要,在19.07之后的版本,没有这个文件会提示:
    > LuCi 提示:权限不足,无法读取UCI配置。
    添加一个文件/usr/share/rpcd/acl.d/luci-app-syncdial.json 内容如下:
{
    "luci-app-syncdial": {
        "description": "syncdial",
        "read": {
            "uci": [
                "syncdial"
            ]
        },
        "write": {
            "uci": [
                "syncdial"
            ]
        }
    }
}
  1. 清理luci缓存
rm /tmp/luci-indexcache.*

2、编译安装
将项目克隆到openwrt编译环境的主目录package文件夹中,不过不能直接编译,
要做一些修改.

  1. 添加rpcd
    参考上面rpcd说明新建一个文件,放在files目录.文件内容直接是上面的.

  2. 修改files/usr/lib/lua/luci/model/cbi/syncdial.lua

  3. 修改Makefile
    删除依赖,将

    DEPENDS:=+kmod-macvlan +shellsync

    修改成

    DEPENDS:=+kmod-macvlan

    将添加rpcd的文件,在define Package/$(PKG_NAME)/install处理下.

make menuconfig

#选luci -->  3. Applications -->选择luci-app-syncdial

#保存后直接make编译

端口设置

光猫一定要使用桥连模式,光猫一定要使用桥连模式,光猫一定要使用桥连模式。

删除默认的WAN6,并修改LAN接口配置,如图修改,经过测试选服务器模式,并且NDP代理禁用,完全行不通。如下为我的设置。
image.png|1200

全局网络选项,一定要删除留空,一定要删除留空,一定要删除留空!!!
image.png|1200

取消勾选:DHCP/DNS >> 高级设置 >> 禁止解析 IPV6 DNS 记录
image.png|1200

修改 mwan.sh 文件
image.png|1200

按红框内修改,即 IPT6的值修改为 /bin/true

wan 口正常拔号,也就是 pppoe 拔号

负载均衡设置

网络 >> 负载均衡 >> 接口
删除除了 wan 之外所有接口
psc.png|1200

检查 负载均衡 >> 规则 >> Https -> 粘滞模式,是否启动,设置为否
image.png|1200

如果设置为,那么根据官方描述:

来自相同源 IP 的流量,如果已经匹配过此规则并且在粘滞超时时间内,将会使用相同的 WAN 接口

意思就是如果你同一个设备连接,Https走的WAN接口始终是同一个,就达不到负载均衡的效果了!

多线多拔设置

设置如下图,注意:设置完后,点击保存,不要点保存并应用
image.png|1200

  1. 修改 vwan1,很重要
    上述步骤已进行 wan 接口的 pppoe 拔号,且多线多拔设置,点击保存后,vwan1~vwan* 协议全为 pppoe,所以此步不需要像其他教程那样,进去 pppoe 拔号的账号和密码设置。
    image.png|1200

vwan1 高级设置如下图修改:
image.png|1200

此处,选择阿里云公共DNS进行IPv6地址解析,选择腾讯云或者其他DNS服务商也可以。

  • DNS1: 2400:3200::1
  • DNS2: 2400:3200:baba::1

经测试,如像别的教程那样,取消勾选 使用默认网关 ,会导致多拔不上。

  1. vwan2~vwan* 修改
    image.png|1200

取消勾选:使用内置的IPV6管理 和 obtain ipv6-address

重启路由,至此,我们可以在子网设备和路由器上都能获取IPv6并且访问IPv6网站了。

效果

Win系统下:
image.png|1200

image.png|1200

Openwrt >> 网络 >> 接口:
image.png|1200

可以看到,进行了单线五拔,最终获取到了4个公网IP。

测速:
单线多播前,如下图:
image.png|1200

单线5拔号,如下图:
image.png|1200

参考

多拨与IPv6并存,Openwrt路由器设置指北_路由器_什么值得买
Site Unreachable