小明的学习笔记

01 — 路由与地址本质

4 分钟阅读

01 — 路由与地址本质

这是围绕 CGNAT 问题的旧专题,已按新体系纠错。系统主线请先读 路由器、接口与默认网关。

家用路由器 ≠ 路由器

你家里那个长着几根天线的方盒子,在工业界并不叫"路由器",而是网关综合体——集成了调制解调器、路由器、交换机、无线 AP、DHCP 服务器和 NAT 网关的缝合怪。

要理解纯粹的网络原理,必须把这些功能拆解开来看。


CGNAT (100.64.0.0/10) 与私网 (192.168.x.x) 有本质区别吗?

结论:它们都不是普通全球单播地址,但标准规定的用途和管理域不同。 RFC 1918 用于组织私网,RFC 6598 的 100.64.0.0/10 是运营商与用户设备之间的 Shared Address Space。NAT 数据面可以采用相似技术,但不能因此说地址语义完全相同。

IPv4 地址枯竭的妥协

世界上只有 43 亿个 IPv4 地址,远远不够分。RFC 1918 划定了几块私有地址:

网段 用途
10.0.0.0/8 大型企业
172.16.0.0/12 中型企业
192.168.0.0/16 家用路由器默认

这些地址就像内部工号,不能在公网上路由。

CGNAT 的诞生

运营商手里的公网 IP 也不够发了。他们的思路:既然你家里能搞 NAT(把家里几台电脑藏在一个光猫 IP 后面),那我在省级骨干网层面,能不能也搞一个超级大的 NAT,把你整个小区都藏在我运营商的几个公网 IP 后面?

为什么必须用 100.64.x.x?

如果运营商使用与用户 LAN 重叠的 RFC 1918 前缀,可能发生地址重叠

例如 WAN 和 LAN 都落在 192.168.1.0/24,直连路由、ARP 与管理地址可能冲突,导致路由器无法按预期选择 WAN 下一跳。它通常表现为错误出接口或不可达,不应笼统称为“死循环”。

为此,IETF 在 RFC 6598 中专门划出 100.64.0.0/10,命名为 CGNAT 保留地址

大局观结论: 100.64.0.0/10 不应作为普通全球单播地址传播,主要供服务提供商部署 CGN 使用。它避免占用客户常见 RFC 1918 空间,但不能保证所有网络设计都“完美不冲突”。


真正的路由器长什么样?(端口与 IP 的关系)

忘掉家用路由器,想象一台企业级核心路由器(如思科机架式设备)。

交换机 vs 路由器

交换机 (Switch) 路由器 (Router)
工作层 数据链路层(L2) 网络层(L3)
端口标识 按 VLAN/MAC 转发,管理或 SVI 可有 IP 执行三层终结的逻辑接口通常有 IP,也可 unnumbered
功能 同一局域网内互联 连接不同子网
端口命名 端口 (Port) 接口 (Interface)

关键认知: 常规三层接口连接一个 IP 子网并配置该链路可用地址;但二层成员口、聚合成员、unnumbered 口不必配置 IP。物理口、逻辑接口与地址不是严格一一对应。

经典拓扑

接口 0/0 (eth0): 192.168.1.1/24  →  研发部(所有电脑网关填这个)
接口 0/1 (eth1): 192.168.2.1/24  →  销售部
接口 0/2 (wan0): 203.0.113.5/30  →  电信光纤,通向互联网

路由表到底记录什么?(打破幻觉)

很多初学者以为路由表记录的是:目标 IP → 具体设备 MAC这是绝对错误的! 那是 ARP 表干的活。

路由表记录的仅仅是"指路牌":去往哪个网段 → 从哪个物理接口扔出去 → 下一跳是谁。

真实路由表示例:

目标网络 子网掩码 接口 下一跳
192.168.1.0 255.255.255.0 eth0 0.0.0.0(直连)
192.168.2.0 255.255.255.0 eth1 0.0.0.0(直连)
0.0.0.0(默认) 0.0.0.0 wan0 203.0.113.6(电信网关)

路由决策过程: 销售部电脑发包到 8.8.8.8。路由器查表,前两条不匹配,命中第三条默认路由。路由器不关心 8.8.8.8 在哪,它只做一件事:把包从 wan0 接口扔给下一跳 203.0.113.6。任务完成。

路由器的冰冷本质:只是一个无情的网络岔路口指路人。