IPv6 地址自动配置的客户端口
546 是 DHCPv6 客户端使用的端口,服务器侧对应 547,规范是 RFC 8415。客户端把请求发往链路上的组播地址与服务器的 547 端口,服务器再把地址、域名服务器、前缀委派等配置信息回给客户端的 546。它和 IPv4 时代的自动分配思路相似但机制独立:IPv6 还允许无状态地址配置,是否有状态分配取决于网络侧的设计。
基本信息
| 服务 | dhcpv6-client |
|---|---|
| 协议 | UDP 546(服务器为 547) |
| 规范 | RFC 8415 |
| 用途 | IPv6 地址与选项自动配置 |
| 相关机制 | 无状态地址配置(SLAAC)与有状态分配可并存 |
典型使用场景
- IPv6 上线:为终端分配地址并下发解析与时间服务器地址
- 前缀委派:向用户侧设备下发可再分配的地址前缀
- 排障:终端只有链路本地地址时判断是否拿到了配置
- 策略核对:确认放行规则允许客户端与服务器之间的组播交互
- 双栈运维:确认 IPv6 与 IPv4 的地址获取方式是否一致
端口与地址对照
| 角色 | 端口 | 目标地址 |
|---|---|---|
| 客户端 | UDP 546 | 接收服务器应答 |
| 服务器 | UDP 547 | 链路上的组播地址 |
| 中继 | UDP 547 | 在跨网段场景转发请求 |
状态核对
状态核对
# 查看 IPv6 地址获取情况与有效期
ip -6 addr show dev eth0 | grep -E 'inet6|valid_lft'
# 查看是否配置了有状态分配(是否请求地址取决于该标志)
# 路由器通告中会携带管理标志与其它配置标志
# 查看 IPv6 默认路由是否已下发
ip -6 route show default
# 查看客户端进程与监听端口
ss -lunp | grep 546链路本地地址不代表配置失败:IPv6 终端在未获得任何配置时也会自动生成链路本地地址。判断是否真正获得地址,要看是否拿到了全局地址与默认路由,而不是只看接口上有没有地址。
组播交互容易被安全设备当作异常流量拦截:策略里只放行单播地址时,客户端请求发得出去、应答回不来,表现为地址一直获取不到。放行规则需按协议实际使用的地址与端口来写。
排查顺序
- 确认接口是否拿到全局地址与默认路由
- 确认链路上是否收到路由器通告
- 确认安全设备是否拦截了组播交互
- 确认服务器侧地址池与策略是否包含该网段