使用 wireguard ,分别在 A 与 B 作为 Peer 相互通信,并将 A 机器的 default_route 设置为 wg 网口,拓扑如下,其中 A 、B 均为 Openwrt
| Internet(v6) |
[ A: gateway ] | | [ B: Server ]
| |
(wg0) <-----> (ens1_100M) < - - - - > (ens1_1G) <----> (wg0)
在不考虑 Internet 带宽下(假设 Internet 速率为 1G ,B 的接口速率亦为 1G ),由于 A 的接口速率只有 100m ,这种方案可以实现 100m 的数据传输。 目前方案存在的问题: Gateway 提供了有 4 个 100M 的网口(有着不一样的四个公网 iPv6 地址),按照以上方案只能利用一个网口进行对外通信,也就是仅能提供 100M 的带宽,剩下 3 个 100M 的网口无法充分发挥作用。如何在一台配置不高(成本、物理空间有限)的设备上实现充分利用剩下 3 个 100M 的网口达到 400M 的上网冲浪速率? 感觉应该不需要考虑应用粘滞、各种应用会在两个宽带上面来回跳的问题,因为最终出到互联网全部都是以 B 的 ip 作为出口 ip ,所以不会出现说一个 app 发出通信对端服务器收到两个 incoming ip 的问题。
在 A 机器上部署多个 wg 网口,每个网口的 peer 都指向 B 机器,拓扑如下图 目前存在的问题是wg 似乎会从默认网口进行出口,这就导致了所有 wg client 全都只会从一个网口出站,搜寻一下互联网发现这篇文章 How do I configure a Wireguard Interface to connect to a remote peer through a specific network interface? ,采用的是 IP 路由表分流的方案,这篇文章可以解决 B 机器有多 IP 的分流。但是在本情景下,由于 B 机器只有一个 IP ,无法采用这种方案
| Internet |
[ A: gateway ] | | [ B: Server ]
| |
(wg0) <-----> (ens1_100M) < - - - - > (ens1_1G) <----> (wg0)
| / / |
| / / |
(wg1) <-----> (ens2_100M) < - / |
· | / |
· (省略若干 wg)| | |
· | / |
(wg3) <-----> (ens3_100M) < - |
虚拟机方案,将 4 个网口分别虚拟 4 个 openwrt 分别架设 wg client ,再虚拟一个路由系统做负载均衡,缺点是性能开销大而且可能有性能损失
来问问大佬们有没有什么低成本方法可以解决这个问题 谢谢大家喵
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.