ESXi软路由OpenWRT使用MWAN3配合网管交换机使用VLAN实现3路宽带负载均衡

ESXi 部署 OpenWRT

在ESXi上部署OpenWRT需要注意的地方在于
选用X86/X86-64版本OpenWRT(据测试x86版本比64版本性能更好,原因暂未知
ESXi中虚拟网卡选用 E1000 / E1000e / AMD PCNet32 / Intel VNet 时,记得在OpenWRT内安装对应版本的内核模块以提高网络性能
内核模块名称以kmod-*开头,通常直接搜索网卡型号关键字即可

ESXi 部署 端口组 Vlan 设置

在ESXi上的端口组可以配置Vlan ID,其中1~4094为普通VLan编号,4095设置此端口为Trunk模式,0禁用此端口的Vlan
此处设置默认为0,如需使用Vlan时需要修改此VLan ID为对应的正确配置,否则ESXi会直接抛弃不匹配的数据包(像一个标准的交换机那样

https://kb.vmware.com/s/article/1004074

水星 网管交换机 上的VLan配置

由于使用一个水星网管交换机作为核心交换机,在此次网络架构设计中,其需要在承载普通交换机流量的同时,
使用VLan隔离出一个独立的子交换部分,此部分网络架构形如三叉戟般,使用三个不同端口对应三个不同VLan分别连接三个宽带的光猫,同时汇聚到一个端口去连接ESXi中的OpenWRT

网络结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
-----------------------------------------------------------------------------------------------------------------------
PPPoE MWAN Part
*******************

Vlan 10 [Untaged 10, PVID 10]
A ISP Moden ---------------+
| [software vlan 10]
Vlan 11 v [Taged 10+11+12, PVID 1 (no one care it)] +-----> eth0.10 <== PPPoE A ISP ------+
B ISP Moden ------------>Switch-------Trun------+ | |
[Untaged 11] ^ Vlan 10+11+12 | (Trunk Mode) | [software vlan 11] v
[PVID 11] | +--> ESXi -------------> OpenWRT ---->eth0---> eth0.11 <== PPPoE B ISP --> MWAN3 LoadBalance
| Vlan4095 | ^ |
C ISP Moden ---------------+ | [software vlan 12] | v
Vlan 12 [Untaged 12, PVID 12] +-----> eth0.12 <== PPPoE C ISP ------+ | [LAN Area]
|
----------------------------------------------------------------------------------------------------------------------- ESXi
Normal Part |
******************* [Link Aggregation] v
All Port as [VLan 1, PVID 1, Untaged 1] Phisical Switch <=========================================================== vSwitch ---> Other ESXi VM
| | | | (Multi RJ45 Cable)
v | | |
(WiFi AP*) v | v
/ | \ DeviceD | DeviceF
/ | \ v
v | v DeviceE
DeviceA | DeviceC
v
DeviceB

* WiFi AP is a old router run on lan only mode, its DHCP function are disabled.
-----------------------------------------------------------------------------------------------------------------------

802.1Q VLan 资料

https://zh.wikipedia.org/wiki/IEEE_802.1Q
https://blog.csdn.net/xiaohaijiejie/article/details/70208549

OpenWRT 上的 MWAN3 设置

在OpenWRT上实现负载均衡需使用 MWan3 这个模块
【TODO】

可用的参考资料
https://www.sgtfz.cn/2018/02/229.html
https://www.sgtfz.cn/2019/08/1855.html

OpenWRT 上的 IPv6 设置

默认情况下,如果ISP提供IPv6,使用OpenWRT的默认拨号配置即可获得IPv6网段并正确分发子IP到内网设备上。(只要拨号的接口勾选了使用内置的IPv6管理选项,正常情况即可正确工作
可以在接口页面上查看是否具有一个设备名与拨号接口一致且接口名自带*_6后缀的接口来确定ISP是否随PPPoE自动分发了IPv6

如有需要针对特定ISP进行配置,可在LANDHCP服务器页面中的IPv6子页面下配置详细的IPv6分发/中继模式
如需要在两次重启之间继承IPv6,或需要获得最好的兼容性,可直接选择三个都为混合模式,且选择无状态+有状态

注意:在开启了MWAN后,很多人都以为IPv6也需要进行负载均衡。
但是真实情况是,最新的IPv6都不再是NAT模式工作,而是每个设备分配到一个全球IP。
这也就意味着在这种情况下的IPv6无法在路由上使用MWAN进行负载均衡,
其原因在于,不同的ISP分配的IPv6自然属于不同的IPv6块,而不同IPv6分块下的IPv6 IP对应的网络出口也就自然需要一一对应,
这也就决定了想要在配置了MWAN后让IPv6仍然有效,需要在MWAN的策略页面中将所有策略的备用成员(也就是fail back)设置为默认(使用主路由表)
这样IPv6数据包在MWAN进行判断时遇到选路失败后才会正确被导向到对应的IPv6块,去往正确的ISP。
同样这样也就意味着如果想要使用原生IPv6(也就是内网的每台机器都获得全球唯一的公网IPv6 IP),就无法让IPv6流量在多个ISP之间自动负载均衡(除非在流量发出之时就已经针对不同运营商选择了不同的IPv6源地址
如果想要让IPv6流量在多个ISP之间自动负载均衡,唯一的方法就是使用IPv6 NAT,那这样的话使用IPv6不久没有什么意义了不是吗?IPv6存在的意义不就是在IPv4地址不足不得不使用NAT时仍然可以获得一个公网IP么。

https://koolshare.cn/thread-146539-1-1.html
https://www.51zot.com/blog/201903vmwareesxizlljhlacpck/
https://kb.vmware.com/s/article/1001938?lang=zh_CN