首页/网络/IP 与子网速查/DHCPv6:有状态、无状态与端口 546/547
IPv6 与下一代网络42 条

DHCPv6:有状态、无状态与端口 546/547

DHCPv6 用 UDP 546(客户端)/547(服务器):有状态分配地址(IA_NA)、无状态只发 DNS 等其他配置、PD 委派前缀(IA_PD)。它不提供默认路由——网关永远来自 RA。

IP 与子网速查网络更新于 2026-10-13

DHCPv6 是什么

DHCPv6 用 UDP 546 作为客户端端口、547 作为服务器端口,提供三类能力:有状态模式直接分配地址,无状态模式只下发 DNS 等其他配置,前缀委派模式把整段前缀交给下游路由器。它与 IPv4 的 DHCP 有一个关键差异:DHCPv6 不提供默认网关,网关永远来自路由器通告。理解这一点能省下大量排障时间。

基本信息

客户端端口UDP 546
服务器端口UDP 547
有状态模式分配地址,报文使用 IA_NA 选项,由 RA 中 M=1 触发
无状态模式只提供其他配置,由 RA 中 O=1 触发
前缀委派使用 IA_PD 选项,向上级申请整段前缀供下游使用
默认路由不提供,必须依赖 RA

三种模式对比

模式提供内容触发方式
有状态地址与其他配置RA 中 M=1
无状态仅其他配置如 DNSRA 中 O=1
前缀委派整段前缀给下游路由器客户端主动发起 IA_PD 请求
组合使用地址由 DHCPv6 给,默认路由由 RA 给M=1 且 RA 正常发送

排错命令

排错命令
systemctl status isc-dhcp-client        # 客户端服务状态
dhclient -6 -d eth0                     # 前台运行观察交互,验证租约获取
journalctl -u NetworkManager | grep -i dhcp6
tcpdump -ni eth0 'udp port 546 or udp port 547'   # 抓包看四步交互
cat /var/lib/dhcp/dhclient6.leases      # 查看已获取的租约

典型使用场景

  • 企业内网需要集中管理地址与审计:用有状态模式,终端地址由服务器统一记录
  • 家宽与企业分支获取前缀:上游用前缀委派把一段前缀交给下级路由器继续分配
  • 只想统一下发 DNS 而不想管地址:用无状态模式,地址仍由终端自动生成
  • 与 RA 配合使用:RA 给默认路由,DHCPv6 给地址与配置,两者缺一不可
  • 排查终端拿不到地址:先确认 RA 是否发出、M 位是否置位,再看 DHCPv6 交互
端口号容易记反:546 是客户端、547 是服务器。抓包过滤写反会导致看不到任何报文,误以为协议没启用。
无状态模式的价值在于“地址自己生成、配置集中下发”:终端仍用 SLAAC 生成地址,但 DNS 与域名搜索列表由服务器统一管理,改动时无需逐台设备调整。

易错点

  • 以为 DHCPv6 负责下发默认网关:网关只能来自 RA,配置完 DHCPv6 仍可能上不了外网
  • 把 546 与 547 记反:抓包看不到报文,排查方向被误导
  • 只开 DHCPv6 不开 RA:终端可能拿到地址但没有默认路由,表现为内网通、外网不通
  • 有状态与无状态混用未统一:部分终端拿 DHCPv6 地址、部分走 SLAAC,地址管理难以审计

数据来源与参考

  • RFC 8415(DHCPv6)
  • RFC 4862(地址自动配置)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌