文章

openwrt 单线多拨及IPV6策略路由/分流/负载均衡

  编辑于:2024-05-16
文章目录

前言

本站之前之前介绍过不同运营商的多线多播,如果你在同一个运营商具有多个宽带账号,则可以通过单线进行拨号,实现单线多拨。

错误的配置将导致网络故障。
操作前做好相关资料备份,本文仅作参考。

操作

openwrt版本:22.03.5
需要依赖:kmod-macvlan(若自行编译,编译选项为Kernel modules→Network Devices→Kmod-macvlan
如果需要策略路由(分流/负载均衡):mwan3插件

单线多拨

1.进入openwrt后台后,点击网络→接口→设备→添加设备配置
创建一个MAC VLAN,基设备选择接运营商设备的口,这里以wan为例。

有几个账号就创建几个MAC VLAN
2.在网络→接口→接口页面将原有的wanwan6删除。
3.在网络→接口→接口页面点击添加新接口...,设备选择刚刚创建的MAC VLAN设备,并将防火墙区域选择为WAN


老版本的openwrt可能不能通过luci添加macvlan接口,可以在系统→启动项→本地启动脚本编辑本地启动脚本,通过命令添加接口。

#eth0为接运营商设备的口,wanmac0可根据需要进行修改,mode有四种模式可选bridge, vepa, passthru, private
ip link add link eth0 name wanmac0 type macvlan mode private
#可选,设置该接口的mac地址,mac地址也可根据需要进行修改。
ifconfig wanmac0 hw ether 00:01:6C:06:A6:29
#启动接口
ifconfig wanmac0 up

通过脚本添加的接口在重启后生效,亦可通过ttyd/ssh直接执行这些命令生效。
还可通过修改网络配置文件创建接口,具体可参考:https://forum.openwrt.org/t/save-ip-link-macvlan-interfaces-after-reboot/5215
有几个账号则创建几个接口,通过这些接口则可以实现单线多拨。

nat6

若运营商提供了IPV6,则以上操作已经可以访问IPV6了。
如果需要实现IPV6的分流与负载均衡,需要配置nat6
1.进入openwrt后台后,点击网络→防火墙→区域,点击wan的编辑,进入高级设置,勾选IPv6 Masquerading

2.进入网络→接口→接口页面,点击添加新接口...,协议选择DHCPv6 客户端,设备选择@之前新建的接口

常规设置中,请求指定长度的 IPv6 前缀选择已禁用,高级设置中取消勾选IPv6 源路由,防火墙选择wan
根据实际情况可配置多个接口

3.进入网络→接口→全局网络选项页面,将IPv6 ULA 前缀修改为2001:db8::/32(若仅需要NAT6,且未安装mwan3插件,可不进行此步骤)。
自此已完成nat6的设置。

mwan3

mwan3的IPV6设置可以参考:k2p基于openwrt实现不同运营商双宽带/双线叠加
注意:
1.添加IPV6的策略后可能导致IPV6的网络不通,需要重启路由器才能使IPV6网络恢复并使IPV6相关策略生效(与防火墙配置有关)。
2.部分情况下,DHCPv6 客户端可能获取不到IPV6地址,可以尝试将拨号接口中的获取 IPv6 地址改为手动以解决该问题。
3.还可以通过脚本检测是否获取到IPV6地址,拨号后自动检测是否能使用ipv6,若否则重拨,将以下脚本加入到/etc/hotplug.d/iface,需要将其中的wan0wan0_6改成你实际使用的接口,若对脚本没有足够的了解,切勿使用该脚本。

#!/bin/sh


[ "$INTERFACE" = wan0_6 ] && [ "$ACTION" = ifup ] || exit 0
sleep 20s

ipv6Addr=$(ubus call network.interface.wan0_6 status | jsonfilter -e '@["ipv6-address"][0].address')
if [ "$ipv6Addr" == "" ]; then
logger -p notice -t check_ipv6 "no ipv6, now reboot interface"
ifup wan0
else
logger -p info -t check_ipv6 "obtained ipv6 address successfully"
fi

该脚本将在拨号后20秒检测是否有IPV6,若无则重拨,在无法获取IPV6的环境下会导致一直重启wan0口。
参考链接:
https://openwrt.org/docs/guide-user/network/ipv6/ipv6.nat6
在 OpenWRT 19.07 上实现 NPTv6 (NAT66)
https://www.oomake.com/
https://blog.csdn.net/Cx2008Lxl/article/details/123115782

评论加载中