工作原理 · 8 分钟
你家那条线是什么类型:CGNAT、IPv6 双栈与 PPPoE 对连接的影响
台湾 HiNet、香港网上行、新加坡与马来西亚的家用宽带,交到用户手上的地址形态各不相同。本文说明如何分清内网、WAN 与出口三个地址,判断自己是否被放在运营商级 NAT(CGNAT)后面,理解 IPv6 双栈造成的出口不一致,以及 PPPoE 线路上路径 MTU 该怎么测、怎么设,把线路结构问题和客户端问题彻底分开。
更新于: 2026-08-29
台湾的 HiNet 光世代、香港的网上行与香港宽频、新加坡的 Singtel 与 StarHub、马来西亚的 Unifi 与 Maxis Fiber,名字上都是光纤宽带,交到用户手上的地址形态却不一样:有的给公网 IPv4,有的把你放在运营商级 NAT(CGNAT)后面,有的默认 IPv4/IPv6 双栈,有的要另外申请才开通 IPv6。同一套客户端设定在这几类线路上表现差别很大,多数时候是线路结构决定的,跟服务器无关。
下面三件事都能在自己家里当场验证:你拿到的是哪一类地址、CGNAT 与双栈各自会产生什么症状、PPPoE 的封装开销为什么会让隧道在大流量时卡死。看完之后,遇到问题至少能判断它落在哪一段,而不是从换服务器开始试。
先分清三个地址,别把它们混为一谈
家里上网时,同一台设备背后至少有三层地址:路由器分给内网设备的私有地址、运营商交给路由器 WAN 口的地址、外部网站真正看到的出口地址。多数人只看第三个,于是把线路结构的问题误判成客户端故障。这三个地址的关系,决定了你能不能做端口映射、会不会莫名其妙掉线、出口 IP 是不是和陌生人共用。
- 1查本机地址:Windows 执行
ipconfig,macOS 与 Linux 执行ifconfig或ip addr。这一层通常是 192.168.x.x 或 10.x.x.x,由你自己的路由器分配。 - 2登录路由器管理页面,找到 WAN 口或外部网络状态,记下上面显示的 IPv4 地址。这是运营商实际交给你的地址。
- 3打开任意能显示出口 IP 的页面,记下公网看到的地址。
- 4比对第二步与第三步:两者相同,说明你拿到的是公网 IP;两者不同,而第二步的地址落在 100.64.0.0 至 100.127.255.255(即 100.64.0.0/10),就是标准的运营商级 NAT。WAN 口显示 10.0.0.0/8 或 172.16.0.0/12 这类私有段,同样说明你在运营商的内网里,只是没有用 100.64.0.0/10 这一段。
运营商级 NAT:移动网络的常态,家用宽带要看方案
移动网络最普遍:四地的 4G/5G 数据通常跑在共享地址上,一个公网 IPv4 后面可能挂着成百上千个用户。家用宽带则要看业者与方案——马来西亚 TM 的 Unifi 与 Maxis Fiber 有相当一部分家庭方案把用户放在共享地址后面(业者文件里常写作 LSN,即大规模 NAT),两家都另有申请公网 IP 的途径;台湾、香港、新加坡的家用光纤介于两者之间,取决于方案本身以及是否使用业者提供的路由器。与其猜,不如用上面四步当场比对。
- 出站连接一切正常,入站端口映射彻底失效:远程访问 NAS、家用摄像头、自建服务都连不进来。
- 空闲一段时间后静默断线。运营商的地址转换表有老化时间,UDP 表项通常比 TCP 短得多;客户端若没开保活,映射会在你没注意时被回收。
- 出口地址与陌生人共用,验证码、二次验证与风控提示明显变多。
traceroute(Windows 为tracert)的前几跳出现 100.64.x.x 这类地址。
对策不复杂:在客户端里开启保活(keepalive),间隔设到明显小于运营商的映射老化时间;需要入站访问就改用由内向外建立的反向连接,而不是指望端口映射;把这类掉线和真正的服务端故障分开看——前者的特征非常固定,空闲才断,一动就好。
IPv6 双栈:台湾最普及,香港与新加坡要看线路
台湾的 IPv6 普及率长期居于亚洲前列,Google 与 APNIC 的公开统计随时可以查到当前数值。中华电信在 HiNet 光世代与移动网络上提供 IPv4/IPv6 双栈,同一条线上两种协议并行、互不干扰;不过不少用户的线路仍要自行申请开通,而且路由器必须支持才能取得委派前缀(IA_PD)。香港与新加坡各家做法不一,有的家庭用户能拿到原生前缀,有的线路至今只有 IPv4。判断自己有没有 IPv6,最快的方式是看本机网卡上有没有 2000::/3 段的全球单播地址(以 2 或 3 开头):fe80: 开头的是链路本地地址,fd 开头的是私有地址,两者都不算。
双栈带来一个很具体的副作用:如果隧道只承载 IPv4,系统在访问带有 AAAA 记录的站点时仍会优先走 IPv6 直连,出口地址就变成本地运营商的 IPv6。表现是同一时间查到两个不同地区的地址,而且只有部分网站受影响,很容易被当成随机故障。验证方法很直接:先在 泄漏检测页面 看 IPv4 与 IPv6 的结果是否指向同一处;不一致就让隧道同时接管 IPv6,或者在系统层完整关闭 IPv6,两者选一个,别停在半开半关的状态。
PPPoE、封装开销与 MTU
台湾光世代与马来西亚 Unifi 传统上用 PPPoE 拨号取得地址,部分方案已改成 IPoE/DHCP,以路由器 WAN 口的设定为准。PPPoE 头部占 8 字节,标准以太网的 1500 减去之后是 1492;隧道还要再套一层封装,能装有效数据的空间更小。如果路径上某台设备既丢弃过大的包、又过滤掉用来通告的 ICMP 报文,就会出现典型症状:连接建立正常、小请求秒开、一打开大网页或开始下载就整条卡死。这类问题和带宽无关,换节点也没用,只能把包的尺寸降下来。
- 1macOS 执行
ping -D -s 1472 1.1.1.1,Linux 执行ping -M do -s 1472 1.1.1.1,Windows 执行ping -f -l 1472 1.1.1.1。参数的含义是禁止分片、负载 1472 字节。 - 2若提示需要分片,把 1472 逐步下调(1452、1420、1400……),直到能收到回应。
- 3记下能通过的最大负载 N,路径 MTU 就是 N + 28(20 字节 IP 头加 8 字节 ICMP 头)。
- 4在客户端里把隧道 MTU 设成比路径 MTU 再低几十字节,给隧道自身的封装留出余量,具体差多少取决于所用协议。PPPoE 线路从 1400 附近往下试,通常最省事。
十分钟自查清单
- 记下三个地址(内网、WAN、出口),确认自己是不是在 CGNAT 后面。
- 检查 IPv4 与 IPv6 的出口是否指向同一处。
- 确认线路是 PPPoE 还是 IPoE/DHCP,据此设定 MTU。
- 打开客户端的保活选项,移动网络与共享地址的家用宽带尤其需要。
- 换一种网络(家里 Wi-Fi 与手机热点互换)复测同一个问题,用来区分线路问题与其他问题。如果问题只在出国时出现,参考 跨境漫游时的分层排查。
- 在外面用公共热点时,按 公共 Wi-Fi 与强制入口页 里的顺序操作,认证与隧道的先后不能搞反。
常见问题
怎么确认我在不在运营商级 NAT 后面?
比对路由器 WAN 口地址与外部网站看到的出口 IP。两者一致就是公网 IP;不一致、且 WAN 口地址落在 100.64.0.0/10,就是典型的 CGNAT。WAN 口显示 10.x.x.x 或 172.16 至 172.31 这类私有段,同样说明地址来自运营商内网。
运营商级 NAT 会让连接变慢吗?
一般不会直接影响吞吐,它影响的是入站连接与地址映射的寿命。最常见的可见症状是空闲后断线和验证码变多,而不是速度下降。速度问题更多来自 MTU 设定与无线信号质量。
台湾的 HiNet 需要自己申请 IPv6 吗?
中华电信提供 IPv4/IPv6 双栈,但不少用户的线路仍要自行申请开通,而且路由器必须支持才能取得委派前缀。开通之后建议立刻检查隧道有没有同时接管 IPv6,否则出口会出现两个不同地区的地址。
直接把 IPv6 关掉是不是最省事?
在需要快速排除变量时可以这么做,但这等于放弃双栈的好处,只有 IPv6 可达的服务也会受影响。更好的做法是让隧道同时承载 IPv4 与 IPv6,关闭只作为临时手段。
这篇有用吗?
回答不产生任何后果,只有我们看得到。