IPv6 组网踩坑笔记

发布于

草稿说明:本文先搭好骨架与关键结论,方便以后按坑补截图、配置片段和命令输出。文中标了 TODO 的地方,都是准备回头填实的。

写这篇的原因

最近为了一台只有 IPv6(AAAA、无 A 记录)的机器做 SSH,踩了不少坑:手机蜂窝 / 同一 Wi‑Fi 都能连,本机却一直超时。排查过程中,不只是「把网络弄通」,还顺手在路由器上搭了虚拟网桥、理清了区域防火墙,并把 DHCPv6-PD、RA 通告里的标志位、邻居发现失败、隐私地址这些概念串了起来。

这篇按「现象 → 概念 → 配置要点 → 排查命令」来写,方便以后自己查,也方便有类似场景的人对照。

适用读者

故事线(总览)

%%{init: {'theme':'dark'}}%%
flowchart TD
  A["现象: 手机能 SSH<br/>本机超时"] --> B["域名只有 AAAA"]
  B --> C["本机多段 IPv6 前缀"]
  C --> D["默认源地址落在废前缀"]
  D --> E["开关 Wi-Fi / 绑源地址后恢复"]
  E --> F["顺带整理路由器侧"]
  F --> G["DHCPv6-PD + 子网 ID"]
  F --> H["RA: A/M/O + PIO"]
  F --> I["虚拟网桥"]
  F --> J["防火墙区域规则"]
  F --> K["网线导致 ND FAILED"]
  F --> L["隐私扩展: 稳定/临时地址"]

1. 现象:同一 Wi‑Fi,手机通、电脑不通

1.1 表面线索

1.2 真正原因(本机侧)

本机网卡上同时挂着多段全局前缀(例如旧的 …:87b0: / …:4a50: 和新的 …:6900:)。出站时系统按地址选择规则挑了仍挂在网卡上、但实际上已经路由不通的源地址,于是 SYN 一直发不出去;绑到仍可达的前缀后,TCP 立刻通。

开关一次 Wi‑Fi 后,旧前缀被清掉,只剩当前 RA 下发的前缀,问题消失。

TODO:补上当时 ifconfig / ndp -p / 绑源地址前后的对照输出(可打码)。

1.3 和「Mac 坏了」的关系

不完全是系统 bug。IPv6 主机按 RA 的 valid lifetime 保留前缀地址;网关若把 vltime 设成几天(例如 259200 秒 ≈ 3 天),旧前缀会残留到过期或链路重置。
RA 的 lifetime ≠ 运营商换 PD 的周期——前者是局域网通告给终端的「还能用多久」,后者是上行前缀租约/重拨策略。


2. 路由器上为什么要虚拟网桥

TODO:画一张你实际的拓扑(WAN / 桥 / LAN / Wi‑Fi / 管理口),并写清当时要解决的具体目标(例如:把某几个口合成一个 L2 域、隔离访客、给下游再划 PD 子网等)。

2.1 桥在解决什么问题

虚拟网桥(bridge)把多个二层口绑成同一个广播域:同一网段、同一套 RA/ND,主机之间可以靠邻居发现直达。没有桥、却期望「插在不同物理口上的设备像在同一 LAN」,往往会出现:

2.2 配置时容易忽略的点

TODO:贴路由器(或 OpenWrt / RouterOS / 某发行版)上创建 bridge 的具体步骤与截图。


3. 坑一:DHCPv6-PD 与子网划分标识

3.1 PD 在做什么

运营商(或上游)通过 DHCPv6 Prefix Delegation 分给你一段前缀(常见 /56、/60 等)。路由器再把这段前缀切成多个 /64,分给不同 LAN / VLAN / 下游接口。

上游 PD 例如: 240e:xxxx:yyyy:zz00::/56
                 ├─ ::00/64  → LAN1
                 ├─ ::01/64  → LAN2
                 └─ ::02/64  → 访客 / IoT ...

3.2 「划分子网时的标识」指什么

不同面板叫法不一,常见相关概念:

概念 含义
PD 前缀 上游分下来的整段
Subnet ID / 子网索引 从 PD 里取出哪一个 /64(前缀中可变的那几位)
接口 ID /64 之后主机自己的 64 bit(SLAAC 或手工)
IA_PD / IAID DHCPv6 里标识「我要哪一条 PD 租约」

配错 Subnet ID 的典型症状:接口上有地址,但和上游路由对不上;或两个接口撞了同一个 /64。

TODO:写清你用的路由器菜单路径、当时 PD 长度、各 LAN 的 Subnet ID 取值,以及一次配错时的现象。

3.3 和 RA lifetime 的关系(再强调一次)

PD 租约续约、光猫重拨,都可能导致新前缀出现;若路由器仍用较长的 RA vltime 通告、或终端未重建链路,局域网主机会短暂(甚至数天)保留旧 /64 上的地址——这就是本机「多前缀残留」的网络侧背景。


4. RA 通告:A / M / O 与 PIO

路由器周期性发 Router Advertisement(ICMPv6 type 134)。终端靠它学到:默认路由、前缀、要不要自己配地址、要不要去问 DHCPv6。

4.1 报文级标志(Router 头里)

标志 全称(常见叫法) 置位后终端倾向
M Managed 用 DHCPv6 拿地址(托管地址配置)
O Other Config 地址可 SLAAC,但「其他信息」(DNS 等)走 DHCPv6
A 见下(在 PIO 里) 是否允许对该前缀做 SLAAC

实务里常见组合:

TODO:贴你路由器 RA 页面截图,并写最终选定的 M/O/A 组合及原因。

4.2 PIO(Prefix Information Option)

PIO 是 RA 里描述「有哪些前缀」的选项,关键字段包括:

本机用 ndp -p 看到的 pltime / vltime,就是从 PIO 学来的。

4.3 本机怎么听 RA(备忘)

# 已学到的前缀(无需 root)
ndp -p
ndp -r

# 抓原始 RA(需要权限;ICMP6 type 134)
sudo tcpdump -i en0 -n -vv 'icmp6 && ip6[40] == 134'

TODO:补一段真实 tcpdump 输出,标出 M/O 与 PIO 的 A/L、lifetime。


5. 防火墙:区域之间谁可以到谁

软路由 / 防火墙发行版里,常见模型是:接口划入区域(zone),再写区域间转发策略。

5.1 为什么 IPv6 特别容易「配了地址却不通」

IPv6 大量依赖链路本地与 ICMPv6(RS/RA、NS/NA、PTB 等)。若区域策略只放行了「TCP 22」,却拦了:

就会出现「地址看起来有了,邻居建不成 / SSH 建不成」。

5.2 配置时建议先想清的矩阵

源区域 → 目的区域 是否允许 备注
LAN → WAN 是 / 否 出站上网
WAN → LAN 通常否(或仅端口转发) 入站
LAN → 管理 ? 是否允许访问路由器 UI
访客 → LAN 通常否 隔离
同桥成员 二层直达 可能不经三层防火墙

TODO:按你实际 zone 名称填表,并贴关键规则(firewalld / nft / 面板策略均可)。

5.3 和网桥的交叉点

桥接口属于哪个 zone,决定「整桥」的默认信任级别。物理口移入桥之后,旧的「按物理口划分的区域规则」可能失效或变成幽灵配置——这是改拓扑后必查的一项。


6. 坑二:网线与 IPv6 邻居状态 FAILED

6.1 现象

路由器上某邻居的 IPv6 Neighbor 状态为 FAILED:链路层不可达。表现可能是:

6.2 为什么会怪到网线

邻居发现(ND)依赖二层可达:组播要能到、单播 NS/NA 要有应答。线材/水晶头/口协商异常时,IPv4 有时靠广播/ARP「凑合」出一点连通假象,IPv6 的 ND 却更早暴露为 FAILED。

TODO:写清当时换线前后的对比(速率协商、错误计数、ip -6 neigh / 路由器邻居表)。

6.3 排查备忘

# Linux 示例
ip -6 neigh show
# macOS 示例
ndp -an

关注:FAILED / INCOMPLETE 是否集中在某一物理口、某一 MAC。


7. IPv6 隐私扩展:为什么至少会看到两类地址

在启用隐私扩展(Privacy Extensions / Temporary Addresses)的系统上,同一 /64 里常见:

类型 作用 典型特征
稳定地址(secured / stable) 相对固定,适合作为入站、长期标识 不频繁变
临时地址(temporary) 默认用于对外发起连接,降低追踪 会轮换;过期后变 deprecated

设计动机:若 SLAAC 地址里长期带着固定的接口标识,对外访问容易被跨站关联。临时地址把「对外源地址」和「对内可拨入的稳定地址」拆开。

对排查的影响:

TODO:补 macOS / Linux 上如何区分 stable / temporary,以及如何临时关闭隐私扩展做对照实验(若你做过)。


8. 排查清单(以后可直接抄)

  1. 域名是否只有 AAAA?本机 IPv4 回退是否根本不存在?
  2. ndp -p / 路由通告:当前到底有几个 /64?vltime 多长?
  3. 本机全局地址是否混有旧前缀?绑源地址或重建链路后是否立刻恢复?
  4. 路由器 PD、Subnet ID、各接口 /64 是否一致且不重叠?
  5. RA 的 M/O 与 PIO 的 A/L 是否符合你想要的「SLAAC / DHCPv6」模型?
  6. 防火墙 zone:ICMPv6、转发、桥接口所属区域是否合理?
  7. 邻居表是否 FAILED?换线 / 换口后是否改善?
  8. 是否误伤于代理 / TUN(本机若开了 Clash 等,另案排查)?

9. 参考与延伸

TODO:补上你实际读过的文档链接(路由器手册、RFC 4861/4862/4941/8415、发行版 wiki 等)。

可先占位:


附录:留给自己的补充清单

评论

可对整篇留言,或划选正文中的句子后评论该段。

登录后即可发表评论。

  • 还没有公开评论。
↑