公众号旧文

用 TailScale 测速和公网 IP 的结果不一样

作者:胖子阅读 —

我开了一台日本 AWS 的 EC2,那自然要测一下速度。

下面是用 Tailscale 的 IP 去做的测速:

iperf3 -c <IP> -p <PORT> -t 3 -P 1

图片

其中很明显,4 和 5,还有 20,都是日本的机器

4 的带宽有 5000M

结果却只能测出来 493M

我还以为是商家偷偷的调成了 500M

于是拿 4 和 5 去对着测:

图片

结果也是500M左右

4 和 5 是同一家的机器,5 的带宽是 2500M

我明明记得,之前是测出来过 2500M 的

于是改用公网 IP 再测:

图片

果然测出来了,还是熟悉的 2500M

于是再用日本的 AWS 机器去测各服务器公网 IP 的结果:

图片

去掉了 3,因为那是北京阿里云ECS,带宽上限就是3M

去掉了 103,因为那是纯 IPv6 的机器,没有公网 IPv4

剩下还有几个失败的,比如 15 和 102 是 NAT 机器

而 17 / 18 / 19 没有在安全组里放行端口

最后的 9,商家没有安全组,研究了一下,发现是 ufw 没放行 50001

图片

但其实,我想说的是,亚马逊的 EC2 真的强!

20 就是之前运营商的 QoS 是单向的还是双向的?文中提到的 JP Plus

带宽上限就是 500M

意味着 EC2 能把同城各个机器的带宽都跑满

连通性显然最佳

下面回到文章标题,为什么 TailScale 测速和公网 IP 的结果不一样?

使用 Tailscale 时,客户端和服务器会优先建立点对点连接。

如果能够成功打洞,数据会直接在两台设备之间传输;如果无法建立直连,则会通过 DERP 中继服务器转发。

因此,Tailscale 实际走的是另一条网络路径,延迟、带宽和稳定性都可能与公网完全不同。

其次,Tailscale 还增加了一层加密。

所有经过 Tailscale 的流量都会使用 WireGuard 进行端到端加密。

这意味着数据在发送和接收时需要进行加密、解密处理,会占用一定的 CPU 资源。

对于高带宽场景(例如 2.5Gbps、5Gbps),CPU 性能可能成为瓶颈,因此测速结果可能低于公网直连。

另外,测速目标也会影响结果。

如果使用公网 IP 测速,测试的是服务器公网出口的性能;而使用 Tailscale 测速,测试的是整个 Tailscale 网络,包括 NAT 穿透、WireGuard 加密以及可能存在的 DERP 中继。

因此,两者衡量的对象并不完全相同。

还有一个容易被忽略的因素,就是运营商策略。

有些运营商会针对公网线路进行限速或拥塞控制,而 Tailscale 建立的连接可能恰好绕开了部分拥堵路径,因此反而可能比公网更快;也有可能因为走了 DERP 中继,导致速度明显下降。