怎么知道自己家有没有公网 IP:跳数法、IPv6 双栈、以及 VPN 对测速的隐藏污染

想在家里跑点自托管服务、做远程访问、或者配动态域名,第一步都得先搞清楚一件事:你家宽带到底有没有独立的公网 IP。很多人以为”能上网就有公网 IP”,其实未必。下面三招,都是我在自己机器上反复验证过的。

第一招:跳数法判公网 IP

先查到你当前的公网地址(关掉代理后用 curl icanhazip.com 之类即可,下面会说为什么必须关代理),然后对这个地址做一次路由追踪:

# macOS / Linux
traceroute -n -m 6 你查到的公网IP

# Windows
tracert 你查到的公网IP

判断逻辑非常简单:

  • 如果第一跳就是你的家庭网关(形如 192.168.x.1),第二跳直接连到运营商——说明你家到公网之间几乎没有 NAT,这是真公网 IP
  • 如果中间出现很多跳,尤其蹦出来 100.64.x.x 这一段地址——那是运营商的大内网(CGNAT)地址段,说明你被运营商”共享”在一个大内网里,没有独立公网 IP,做端口映射会失效。

我自己的情况:追踪结果第一跳就是网关,只有一跳就直连运营商,结论很干净——真公网。

第二招:小心 VPN 污染你的判断

这是最容易踩的坑。如果你的电脑挂着代理或 VPN,再去查公网 IP,返回的是** VPN 的出口地址**,不是你家的真实地址。

举例:你以为自家地址是 203.0.113.50,结果因为 VPN 开着,查出来是 198.51.100.20 这种海外节点地址——你会误以为自己 IP 变了、或者判断错网络状态。

所以,查公网 IP、跑路由追踪之前,先把 VPN 和代理彻底关掉。这一步不做,后面全错。

第三招:顺手看一眼 IPv6 双栈

即便 IPv4 在 CGNAT 里,很多运营商其实已经给了你原生的 IPv6。在终端里看一眼网络接口:

  • 如果出现 2408: 或 2409: 这类公网前缀(联通、电信常见),而且拿到的是 /64 前缀——说明你有原生 IPv6,且是双栈
  • 这意味着动态域名可以同时挂 A 记录和 AAAA 记录,IPv6 直连还能绕开 IPv4 的 NAT 和端口映射麻烦。

我自己的光猫和路由器是支持双栈的,确认下来确实有独立的 IPv6 前缀,将来做远程访问会省不少事。

附:测速为什么也会被骗

speedtest-cli 这类工具,如果 VPN 还开着,测速流量会先绕进 VPN 的海外隧道,出来的下载上传数字会假得离谱(比如显示几兆,实际家门带宽几十兆)。

要测真实带宽,有两个办法:要么断掉 VPN 再测,要么看清它连的是哪个节点——连的是国内节点才作数。我实测断开代理后,国内节点的下载能跑到四十几兆每秒,和带宽套餐对得上;开着 VPN 时同一个工具只会给你一个被拐走的假低速。

小结

判断自家网络能不能做自托管,按顺序来:关 VPN、用跳数法确认公网 IP、顺手确认 IPv6 双栈、最后断代理测一次真实带宽。每一步都别在代理开着的时候做,否则结论全是歪的。