请教组网大佬一个疑难杂症.
我在城市 A 工作,购买了一台 NAS,上边下载了一些影视剧.为了让在城市 B 的父母也能看这些资源,选择用 Wireguard 进行组网,同时我还有个部署在腾讯云上的博客,利用这台机器的公网 IP 作为救援狗洞,将这台机器也纳入了整个 Wireguard 组网中.拓扑图如下:
网关 A,网关 B,腾讯云 CVM 拥有三个不同的内网网段,已经实现拓扑图中任意两点之间的互访(路由表等)
大概从 2~3 天前开始,我发现我从手机 A 走隧道②过网关 A 访问家里的 NAS 下行速率(NAS→手机)只剩 0.1Mbps 了,但上行速度还算正常(手机→NAS),还能有 10Mbps.平时这条链路只有我查看 Grafana 监控的流量,一般我也不怎么看 NAS 上的视频,因此不存在非常大的流量.
因为用的都是移动网络,对移动关于大流量封禁和 UDP QoS 有所耳闻,初步分析认为是因为隧道①中父母看视频产生了过多的流量(但实际上也就每周末有稍微集中一些的上传),导致自己遭遇了相同的限速问题,于是第一时间尝试验证各个链路的可用性.
在网关 A 上部署 iperf3 服务器,网关 B 直接测试速率,得到以下结果:
root@OpenWrt:~# iperf3 -c <网关 A 地址>
Connecting to host <网关 A 地址>, port 5201
[ 5] local <网关 B 地址> port 44024 connected to <网关 A 地址> port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
...
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 2.50 MBytes 2.10 Mbits/sec 0 sender
[ 5] 0.00-10.03 sec 2.38 MBytes 1.99 Mbits/sec receiver
iperf Done.
root@OpenWrt:~# iperf3 -c <网关 A 地址> -R
Connecting to host <网关 A 地址>, port 5201
Reverse mode, remote host <网关 A 地址> is sending
[ 5] local <网关 B 地址> port 51104 connected to <网关 A 地址> port 5201
[ ID] Interval Transfer Bitrate
...
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.03 sec 49.9 MBytes 41.7 Mbits/sec 1182 sender
[ 5] 0.00-10.00 sec 47.2 MBytes 39.6 Mbits/sec receiver
iperf Done.
结论: 城市 B 网关->城市 A 网关 上行 2Mbps 左右 下行 40Mbps 左右(符合城市 B/城市 A 上行带宽).也就是说,实际上城市 A 网关的上行并没有被限制。
验证完 1 的链路后,还是不放心,又验证了隧道③的速率:
root@CVM:~# iperf3 -c <网关 A 地址>
Connecting to host <网关 A 地址>, port 5201
[ 5] local <CVM 地址> port 37276 connected to <网关 A 地址> port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
...
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 21.7 MBytes 18.2 Mbits/sec 670 sender
[ 5] 0.00-10.00 sec 21.1 MBytes 17.7 Mbits/sec receiver
iperf Done.
root@CVM:~# iperf3 -c <网关 A 地址> -R
Connecting to host <网关 A 地址>, port 5201
Reverse mode, remote host <网关 A 地址> is sending
[ 5] local <CVM 地址> port 37304 connected to <网关 A 地址> port 5201
[ ID] Interval Transfer Bitrate
...
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 57.8 MBytes 48.4 Mbits/sec 1934 sender
[ 5] 0.00-10.00 sec 55.3 MBytes 46.4 Mbits/sec receiver
iperf Done.
结论: 腾讯云 CVM->城市 A 网关 上行 20Mbps 左右 下行 40Mbps,也是符合我云服务器和城市 A 的上行带宽.到这里基本可以确定城市 A 网关应该是没有什么限速的问题存在.
本人的手机 A 是一台 Android 手机,安装了 Termux,可以执行一些 Linux 命令,遂尝试开 Wireguard 的情况下使用 iperf3 对的网关 A 进行测速.
~ $ iperf3 -c <网关 A 地址>
Connecting to host <网关 A 地址>, port 5201
[ 5] local <手机内网地址> port 39652 connected to <网关 A 地址> port 5201
...
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 4.00 MBytes 3.36 Mbits/sec 2 sender
[ 5] 0.00-10.60 sec 2.62 MBytes 2.08 Mbits/sec receiver
iperf Done.
~ $ iperf3 -c <网关 A 地址> -R
Connecting to host <网关 A 地址>, port 5201
Reverse mode, remote host <网关 A 地址> is sending
[ 5] local <手机内网地址> port 39726 connected to <网关 A 地址> port 5201
...
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.04 sec 0.00 Bytes 0.00 bits/sec 70 sender
[ 5] 0.00-10.00 sec 0.00 Bytes 0.00 bits/sec receiver
iperf Done.
结论: 这里手机->城市 A 网关的速度已经不正常了,上行还能有 2Mbps,下行就风狂重试几乎测不出速度了.至此怀疑是手机流量的问题,计划再测试一下手机->CVM 云服务器的速度.
在腾讯云 CVM 上开 iperf 服务器,使用手机连接,测试得到如下结果:
v~ $ iperf3 -c <CVM 内网地址>
Connecting to host <CVM 内网地址>, port 5201
[ 5] local <手机内网地址> port 41036 connected to <CVM 内网地址> port 5201
...
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 5.50 MBytes 4.61 Mbits/sec 0 sender
[ 5] 0.00-21.37 sec 1.84 MBytes 724 Kbits/sec receiver
iperf Done.
~ $ iperf3 -c <CVM 内网地址> -R
Connecting to host <CVM 内网地址>, port 5201
Reverse mode, remote host <CVM 内网地址> is sending
[ 5] local <手机内网地址> port 41156 connected to <CVM 内网地址> port 5201
...
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.07 sec 69.6 KBytes 56.6 Kbits/sec 72 sender
[ 5] 0.00-10.00 sec 0.00 Bytes 0.00 bits/sec receiver
iperf Done.
结论: 手机->CVM 云服务器速率也是不正常的,上行只有 4Mbps 不到,时常丢包丢到不到 1Mbps.目前基本怀疑是流量网络的问题.
测试到这里基本觉得就是移动蜂窝网络搞了什么新策略,把我 wireguard 的 UDP 包给 QOS 了.但是还不死心,又尝试了下面这个拓扑:
C:\Downloads\iperf-3.19-win64>iperf3 -c <网关 A 地址>
Connecting to host <网关 A 地址>, port 5201
[ 5] local <手机内网地址> port 6224 connected to <网关 A 地址> port 5201
...
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.01 sec 1.50 MBytes 1.26 Mbits/sec sender
[ 5] 0.00-10.33 sec 1.38 MBytes 1.12 Mbits/sec receiver
iperf Done.
C:\Downloads\iperf-3.19-win64>iperf3 -c <网关 A 地址> -R
Connecting to host <网关 A 地址>, port 5201
Reverse mode, remote host <网关 A 地址> is sending
[ 5] local <手机内网地址> port 6231 connected to <网关 A 地址> port 5201
...
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.03 sec 23.6 MBytes 19.8 Mbits/sec 50 sender
[ 5] 0.00-10.01 sec 23.1 MBytes 19.4 Mbits/sec receiver
iperf Done.
这里其实已经发现了奇怪的问题,测速竟然又是好的了,虽然没有跑满网关 A 的上行,但基本也够我回城看个 Grafana 监控了.
经过这些测试,彻底想不通为啥手机上 Wireguard APP 下只有 0.1Mbps 的下行了,既然用分享的热点电脑能正常速率通信,那么手机的流量应该是没问题的.
Wireguard 的 APP 我也试了几个老版本的,发现问题并不能得到缓解,仍然速率非常的慢.另外我还试了下 iperf 直接对网关进行测试,发现不论是 TCP 还是 UDP,通信速率都是正常的.
我还试了一下在腾讯云买了一台带 IPv6,和已有服务器不同 VPC 的主机,试了一下 IPv6 直连网关 A 的速度,也是正常的.
写了也比较多了,希望能有大佬可以帮忙分析下问题所在.
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.