我有一台专用服务器(Ubuntu Server 20.04),运行两个 WireGuard 接口:
wg0
用于连接最终用户,如笔记本电脑、移动设备等。wg1
是通向第三方 VPN 服务的隧道
wg1
在服务器本身上设置为默认路由:
~ ip route get 8.8.8.8
8.8.8.8 dev wg1 table 51820 src 10.13.128.233 uid 0
然后,设置 NAT,将来自wg0
隧道(最终用户)的流量伪装到wg1
隧道(第三方 VPN 服务):
iptables -t nat -A POSTROUTING -o wg1 -j MASQUERADE
因此简化的方案如下所示:
(end-users) ----> wg0 ----> (Hetzner server) ----> NAT ----> wg1 ----> (3rd-party VPN)
wg0
配置非常简洁,没有指定 MTU 选项。笔记本电脑客户端使用默认 MTU,下面的 iperf 测试是在笔记本电脑上进行的。
wg1
配置指定 1420 作为 MTU 值。
问题是,我在终端用户设备上的互联网浏览性能不佳。我相信问题出在服务器配置上,而不是网络,因为我进行了三项测试:
- 运行命令行测试在服务器上对于 Fast.com,使用 awesome快速命令行和 SpeedTest.net CLI 实用程序。两者均显示通过
wg1
从服务器到互联网的隧道实现 1 Gbps 的性能。 - 冉
iperf
从多个最终用户设备到服务器通过wg0
隧道。测试表明从最终用户到服务器的性能为 80-90 Mbps。 - 最后,我运行了 Fast.com 和 SpeedTest.net 测试在最终用户设备上
wg0
测试表明,当通过wg1
隧道和互联网转发来自最终用户的流量时,性能范围为 20 到 27 Mbps。
总结一下:WireGuard 服务器到互联网的性能在 1Gbps 时很好。最终用户到服务器的性能也很好,几乎达到 100 Mbps。但是,如上图所示,通过两个 WireGuard 隧道,最终用户到互联网的性能下降到 20-27 Mbps。
我的 IPv4 堆栈设置都是默认设置,除了通常的转发选项。
我不知道这是否正常,但 70-75% 的带宽损失似乎很多。非常感谢您就此事提供任何建议,因为我不太确定如何进一步排除故障!