首页/网络/常用端口速查/847 dhcp-failover2 DHCP 故障转移 2
700-1023 系统端口92 条

847 dhcp-failover2 DHCP 故障转移 2

dhcp-failover2:DHCP 故障转移的第二通道(RFC 8156),用于主备服务器之间的次级状态与心跳消息。

常用端口速查网络更新于 2026-10-13

第二故障转移通道

DHCPv4 故障转移(RFC 8156)让两台 DHCP 服务器组成主备或负载分担关系:除了承载大部分消息的主通道 647,协议还要建立第二条 TCP 连接,IANA 登记为 847(dhcp-failover2)。两条通道都只用于服务器之间,客户端从不使用它们,客户端仍然只认 67 与 68。关键在于双方必须持续交换绑定更新与地址池状态,否则切换后可能把同一地址发给两台机器。

基本信息

服务dhcp-failover2
协议TCP 847(UDP 同号注册)
规范RFC 8156(DHCPv4 Failover)
配套647 为主故障转移通道
通信双方仅 DHCP 服务器之间
登记机构 / 注册人Bernard Volz

典型使用场景

  • 双机热备 DHCP:主服务器宕机后备用服务器接管地址分配
  • 负载分担模式:两台服务器各分走一段地址池并互相同步状态
  • 防火墙开通:上线新 DHCP 服务器前,需在两台服务器之间放行 647 与 847
  • 故障排查:备用服务器长期显示未通信时,检查 847 是否被安全策略拦截
  • 审计核对:内网出现 847 监听时确认是否为自建 DHCP 服务而非异常组件

通道分工

端口角色承载内容
647主故障转移通道绑定更新等大部分故障转移消息
847第二故障转移通道次级状态同步与独立心跳
67 / 68客户端通道客户端地址请求与服务器应答

核对与放行

核对与放行
# 服务器侧确认监听(以 ISC DHCP 类实现为例)
ss -lntp | grep -E ':647|:847'
# 两台服务器之间放行(firewalld 示例)
firewall-cmd --permanent --add-port=647/tcp --add-port=847/tcp
firewall-cmd --reload
# 抓包验证心跳真的有来有回
sudo tcpdump -i eth0 -n 'tcp port 847' -c 10
RFC 8156 定义的关系有两种:主备(primary/secondary)与负载分担(load balancing)。断链后服务器通常按配置继续服务以保可用性,代价是地址池状态可能分叉,所以监控重点是通道连通性告警,而不是只看两台服务器是否都活着。
故障转移状态机里有几个关键计时器:最大客户端提前时间(MCLT)决定服务器单方面接管地址池的时长,安全余量决定离线多久后自动进入通信中断状态。切换前先确认两侧这两个参数一致,否则备用服务器会在错误的时间点开始应答。

易错点

  • 只放行 647 没放行 847:两侧状态不同步,切换时容易把同一地址租给两台机器
  • 把 847 当成客户端相关端口:客户机根本不使用它,放行对象搞错等于白开策略
  • 两条通道跨广域网未评估时延:心跳超时会触发不必要的故障切换,主备来回倒
  • 看到 847 监听就判定异常:先确认是否为自建双机 DHCP,再看进程来源与业务归属
  • 两侧 MCLT 与安全余量参数不一致:地址租期与应答行为对不上,客户端出现间歇性拿不到地址

数据来源与参考

  • RFC 8156:DHCPv4 Failover 协议
  • IANA 端口注册表

相关工具

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