Phase 2 到这,LAN 那一侧你全懂了——发地址(2.3)、防火墙(2.4)、WiFi(2.5)。但路由器还有另一面:朝 ISP 的 WAN。你家能上网,前提是路由器先从运营商那里"拿到上网能力"——一个自己的地址、一条默认路由、一个网关。这章讲这一面:两种主流接入方式(DHCP 动态获取 vs PPPoE 拨号)、它们对应 2.2 的哪个 proto,以及那条让全家能出网的默认路由到底从哪来。顺带解释 0.6 / 加餐章里"公网 IP"和"CGNAT"是怎么落到你头上的。
WAN 接入 = 路由器在朝 ISP 的接口上"上线":通过 DHCP 客户端或 PPPoE 拨号,从运营商拿到自己的 IP、网关和默认路由,从此内网流量有了出口。
1WAN:朝 ISP 的那一面
一台路由器至少有两副面孔,而且角色相反:
- DHCP 服务器,给设备发 IP(2.3)
- 当网关
- 防火墙 lan 区域(2.4)
路由器
- 向 ISP 要 IP(DHCP 客户端 / PPPoE)
- 拿网关 + 默认路由
- 可能撞上 CGNAT
这个视角转换很重要:2.3 里路由器是 DHCP 服务器(给 LAN 发地址);而在 WAN 侧,路由器可能是 DHCP 客户端(向 ISP 要地址)。同一台设备,两侧角色相反。WAN 侧要拿到三样,内网才能出网:一个自己的地址、一个网关(下一跳)、由此得到的默认路由(0.3:"其他都走这个网关")。
LAN 侧路由器是"发牌的庄家"(DHCP 服务器 + 网关),WAN 侧它是"来拿牌的玩家"(DHCP 客户端 / 拨号方)。它把从 WAN 拿到的"出网能力",通过 NAT(0.6)分享给 LAN 一堆设备。理解路由器,就是理解它怎么在这两侧之间当二传手。
2方式一:DHCP 客户端
最简单的 WAN 接入:路由器在 WAN 口当 DHCP 客户端,像你设备连网那样,自动从 ISP 拿到 IP / 网关 / DNS。2.2 讲过 netifd 的 proto 决定接口怎么拿地址——WAN 口设成 dhcp,netifd 就在这口跑一个 DHCP 客户端,发 Discover、收 Offer(0.5 的 DORA,只是这次路由器是客户端),拿到:一个 IP、网关 + 默认路由(自动装上,0.3/1.2)、上游 DNS(给 dnsmasq 当上游,2.3)。
config interface 'wan'
option device 'eth0' # WAN 物理口
option proto 'dhcp' # 当 DHCP 客户端
谁用它:很多光纤入户(桥接模式)、有线电视宽带(cable)、以及运营商用 DHCP 下发地址的场景。插上就通,不用账号密码。
这就是 2.3 的镜像:LAN 侧 dnsmasq 是 DHCP 服务器,WAN 侧 netifd 是 DHCP 客户端。同一套 0.5 的 DORA 协议,路由器在两侧分别演服务端和客户端——你把 2.3 和这节对照,DHCP 的两端就全见过了。
3方式二:PPPoE 拨号
很多宽带(尤其国内、DSL / 部分光纤)要用账号密码拨号。运营商想对每个用户认证、计费、管理,于是不直接发地址,而要你"拨号上线"。PPPoE(PPP over Ethernet)就是干这个:在 WAN 口先和运营商接入设备建一条 PPP 会话,过程中用你的宽带账号 + 密码认证(0.5 那种身份验证),认证通过后运营商通过这条会话给你分配 IP、网关。
config interface 'wan'
option device 'eth0'
option proto 'pppoe' # 拨号(netifd 触发 pppd)
option username '你的宽带账号'
option password '你的宽带密码'
proto 设 pppoe,netifd 的 pppoe 协议处理器会触发 pppd(2.1 名单里那个)去拨号;成功后创建一个 pppoe 虚拟接口(如 pppoe-wan),IP 和默认路由挂在它上面。
PPPoE 的封装会占用 8 字节,所以 PPPoE 链路的 MTU 通常是 1492(而不是 0.2 那个标准 1500)。MTU 没配对会导致"能上小网页、大文件 / 某些网站却卡住"的诡异问题——这是 0.2 的 MTU 概念在 WAN 接入里最常见的实战陷阱。
DHCP 插上就发号(无需认证);PPPoE 先用账号密码验明正身、再放你进来并发号——它把 0.5 的认证思想搬到了链路接入层。而它多出的封装开销,又逼你回到 0.2 去关心 MTU:一个协议,连带牵动了两章的知识。
4默认路由、公网 IP 与 CGNAT
无论 DHCP 还是 PPPoE,WAN 上线后都给你同样的三件套:一个 IP、一个网关、一条默认路由。
默认路由的来历(终于讲清):Phase 0/1 反复出现的那条 default via <网关>(0.3/1.2),就是 WAN 接入时装上的。DHCP 从 Offer 带来网关、PPPoE 从拨号协商拿到网关,netifd 据此加一条默认路由——从此"目的地不在直连网段的包,全走 WAN 出去"(0.3 的 LPM)。你内网能上网的最后一环,就是这条路由。
公网 IP vs CGNAT(回扣 0.6 / 加餐章):你从 WAN 拿到的地址有两种命运:
- 真公网 IP:外部可直接到达你——端口转发(2.4)有效、能自建对外服务、WireGuard(1.6)能被主动连。
- CGNAT 地址:运营商给你的其实是它内部的私网地址(你在运营商那层 NAT 后面)。此时你的"公网 IP"是假的——端口转发失效(2.4 早提过)、外部主动连不进来。加餐章说的 CGNAT,就发生在这一步。
- 怎么判断:看 WAN 口 IP 是否落在
100.64.0.0/10(运营商级 NAT 专用段)或私网段,或和"外面看到的你的 IP"是否一致。
IPv6 侧:WAN 接入时除了 IPv4,通常还通过 DHCPv6-PD(前缀委派)向 ISP 要一段 IPv6 前缀(2.3 的 odhcpd 干的),再下放给 LAN——这就是加餐章"每台设备拿全局地址"的源头,前缀从这条 WAN 链路进来。
到这里,几条从 Phase 0 埋下的线全接上了:0.3 的默认路由(WAN 装的)、0.6 的公网 IP 和 masquerade(WAN 拿的地址 + wan 区域 masq)、加餐章的 CGNAT(WAN 拿到的是运营商私网)和 IPv6 前缀(WAN 的 DHCPv6-PD)。WAN 接入是"你家网络和外部世界的接缝"——上线拿到的这三件套,是内网一切出网流量的起点。
本章小结
- WAN 是路由器朝 ISP、当客户端的一面(与 LAN 侧当服务端相反);它要拿到 IP、网关、默认路由,内网才有出口。
- 方式一 DHCP 客户端(proto 'dhcp'):像设备连网那样自动拿地址;是 2.3 的镜像(WAN 客户端 vs LAN 服务器)。
- 方式二 PPPoE(proto 'pppoe'):账号密码拨号(netifd 触发 pppd),认证后拿 IP;注意 MTU=1492(0.2 的实战坑)。
- 拿到的三件套里,默认路由就是 Phase 0/1 那条
default via 网关(0.3/1.2)的来历;WAN 的 IP 是真公网还是 CGNAT(100.64/10),决定端口转发 / 主动入连是否可行(0.6/加餐章)。 - IPv6 靠 WAN 的 DHCPv6-PD 拿前缀下放 LAN(2.3);WAN 接入是内网出网的起点,接上了 Phase 0 埋的默认路由 / 公网 IP / CGNAT / IPv6 几条线。
动手练习
- 若有 OpenWRT:
cat /etc/config/network看 wan 的 proto(dhcp 还是 pppoe);ip addr show <wan口>看拿到的地址,ip route找那条 default——确认它指向 ISP 网关。 - 判断你是否在 CGNAT 后面:看 WAN 口 IP,若落在
100.64.0.0/10或和"外部查到的你的 IP"不一致,你就在 CGNAT 后。想想这对自建服务 / WireGuard 意味着什么(1.6/2.4)。 - 思考题:DHCP 接入和 PPPoE 接入,最大区别是什么?为什么 PPPoE 要配账号密码而 DHCP 不用?(认证 / 计费;PPPoE 把 0.5 的认证搬到接入层。)
- 进阶:把"内网设备到打开网页"整条路补全——DHCP 从 dnsmasq 拿内网 IP + 网关(2.3)→ 包经防火墙 FORWARD + masq(2.4)→ 走 WAN 那条默认路由(本章)→ 从 WAN 的公网 IP 出门(本章)。指出每步依赖前面哪一章。