RK3288 DHCP 失败问题

分拣中控掉线问题

Posted by LXG on September 5, 2025

分拣中控台掉线问题


#  DHCP 服务器 MAC 24:5a:5f:be:45:98 的 DHCPACK
#  租约获取正常, 说明路由器分配了 7200 秒(2 小时)的租约
09-05 09:37:59.521   529   900 D DhcpClient: Received packet: 24:5a:5f:be:45:98 ACK: your new IP /192.168.1.64, netmask /255.255.255.0, gateways [/192.168.1.1] DNS servers: /192.168.1.1 , lease time 7200

# 5 分钟后,客户端向网关 192.168.1.1(端口 67)发送 DHCPREQUEST,请求的 ciaddr 是 192.168.1.14,而不是之前的 192.168.1.64
# serverid=null 表示客户端没有指定特定 DHCP 服务器,而是直接发给网关
# 这说明客户端主动尝试切换到另一个 IP(192.168.1.14)
09-05 09:42:17.031   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67

# 这次是 另一个 DHCP 服务器 (MAC 4e:04:f0:56:4d:99) 回复的 DHCPACK
# 分配了新的 IP 192.168.1.14,租约同样是 7200 秒 (2 小时)
09-05 09:42:17.078   529   900 D DhcpClient: Received packet: 4e:04:f0:56:4d:99 ACK: your new IP /192.168.1.14, netmask /255.255.255.0, gateways [/192.168.1.1] DNS servers: /192.168.1.1 , lease time 7200

# 客户端最终确认使用 192.168.1.14
# 默认网关和 DNS 依然是 192.168.1.1
# 租约周期 7200 秒
09-05 09:42:17.079   529   897 D DhcpClient: Renewed lease: IP address 192.168.1.14/24 Gateway 192.168.1.1  DNS servers: [ 192.168.1.1 ] Domains  DHCP server /192.168.1.1 Vendor info null lease 7200 seconds

# 续租流程
# 1. 租约的一半(T1 ≈ 3600s)时尝试 续租(Renew)。
# 2. 租约 7/8(T2 ≈ 6300s)时尝试 重绑定(Rebind)。
# 3. 到 7200s 没成功就 Lease Expired。
09-05 09:42:17.092   529   897 D DhcpClient: Scheduling renewal in 3599s
09-05 09:42:17.092   529   897 D DhcpClient: Scheduling rebind in 6299s
09-05 09:42:17.092   529   897 D DhcpClient: Scheduling expiry in 7199s

# 服务器 40:b0:76:5c:d3:1b 先 OFFER 60 秒 → ACK 改成 7200 秒。
09-05 10:01:34.998   529   900 D DhcpClient: Received packet: 40:b0:76:5c:d3:1b OFFER, ip /192.168.1.12, mask /255.255.255.0, DNS servers: /192.168.1.1 , gateways [/192.168.1.1] lease time 60, domain null
09-05 10:01:35.077   529   900 D DhcpClient: Received packet: 40:b0:76:5c:d3:1b ACK: your new IP /192.168.1.12, netmask /255.255.255.0, gateways [/192.168.1.1] DNS servers: /192.168.1.1 , lease time 7200

# 服务器 24:5a:5f:be:45:98 直接 OFFER 7200 秒
09-05 10:31:44.119   529   900 D DhcpClient: Received packet: 24:5a:5f:be:45:98 OFFER, ip /192.168.1.64, mask /255.255.255.0, DNS servers: /192.168.1.1 , gateways [/192.168.1.1] lease time 7200, domain null
09-05 10:31:44.120   529   900 D DhcpClient: Received packet: 24:5a:5f:be:45:98 OFFER, ip /192.168.1.64, mask /255.255.255.0, DNS servers: /192.168.1.1 , gateways [/192.168.1.1] lease time 7200, domain null


# 时间过半,开始续租
09-05 10:42:17.097   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 10:42:22.107   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 10:42:27.116   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 10:42:35.586   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 10:42:52.883   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 10:43:21.755   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 10:44:20.572   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 10:46:34.788   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 10:48:45.522   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 10:51:02.339   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 10:53:08.362   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 10:55:21.963   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 10:57:37.514   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 10:59:39.446   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 11:01:42.816   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 11:03:49.674   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 11:06:00.573   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 11:08:01.306   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 11:10:01.990   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 11:12:01.040   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 11:13:58.688   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 11:15:57.222   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 11:18:05.852   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 11:20:08.971   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 11:22:14.656   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 11:24:33.799   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 11:26:30.609   529   897 D DhcpClient: Unicasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null to /192.168.1.1:67
09-05 11:27:17.080   529   897 D DhcpClient: Broadcasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null
09-05 11:27:22.080   529   897 D DhcpClient: Broadcasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null
09-05 11:27:27.084   529   897 D DhcpClient: Broadcasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null
09-05 11:27:34.316   529   897 D DhcpClient: Broadcasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null
09-05 11:27:51.645   529   897 D DhcpClient: Broadcasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null
09-05 11:28:26.386   529   897 D DhcpClient: Broadcasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null
09-05 11:29:25.701   529   897 D DhcpClient: Broadcasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null
09-05 11:31:46.092   529   897 D DhcpClient: Broadcasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null
09-05 11:33:47.989   529   897 D DhcpClient: Broadcasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null
09-05 11:36:04.933   529   897 D DhcpClient: Broadcasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null
09-05 11:38:19.620   529   897 D DhcpClient: Broadcasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null
09-05 11:40:16.324   529   897 D DhcpClient: Broadcasting DHCPREQUEST ciaddr=192.168.1.14 request=0.0.0.0 serverid=null

# 租约过期, 设备掉线了
09-05 11:42:17.077   529   897 D DhcpClient: Lease expired!
09-05 11:42:17.079   529   897 D DhcpClient: Broadcasting DHCPDISCOVER
09-05 11:42:17.101   529   895 D DhcpClient: doQuit
09-05 11:42:17.106   529   900 D DhcpClient: Receive thread stopped
09-05 11:42:17.128   529   897 D DhcpClient: onQuitting


根据日志猜测错误的 DHCP 环境拓扑图


                      互联网
                         │
                  [ 光猫/Modem ]
                         │
                    ┌────┴────┐
                    │ 路由器A │ ← 主路由/网关
                    │ LAN: 192.168.1.1
                    │ DHCP: 开启 192.168.1.x
                    │ MAC: 24:5a:5f:be:45:98
                    └────┬────┘
         ┌───────────────┼─────────────────┐
         │                               │
   (LAN ↔ LAN)                        (LAN ↔ LAN)
         │                               │
    ┌────┴────┐                     ┌────┴────┐
    │ 路由器B │                     │ 路由器C │
    │ LAN:192.168.1.2             │ LAN:192.168.1.3
    │ DHCP: 开启 192.168.1.x     │ DHCP: 开启 192.168.1.x
    │ MAC: 4e:04:f0:56:4d:99     │ MAC: 40:b0:76:5c:d3:1b
    └─────────┘                     └─────────┘
         │                               │
   Wi-Fi/有线设备                   Wi-Fi/有线设备
  (Android DHCP请求/续租混乱)    (Android DHCP请求/续租混乱)
  可能获得 IP: 192.168.1.14/64/12  可能获得 IP: 192.168.1.14/64/12

分析结论

  1. 环境里有三个 DHCP 服务端(A/B/C)。
  2. 设备一会儿收到 Server A 的 .64,过几分钟又收到 Server B 的 .14,最后又被 Server C 确认。
  3. 这就是 IP 地址来回切换的原因,哪怕租约时间设置成 7200 秒,还是会抖动。

多路由设备的正确配置方式

单个网段配置


                     互联网
                        │
                 [ 光猫/Modem ]
                        │
                   ┌────┴────┐
                   │  路由器A │  ← 主路由/网关
                   │  LAN: 192.168.1.1
                   │  DHCP: 192.168.1.100-199
                   └────┬────┘
        ┌───────────────┼────────────────┐
        │                               │
   (WAN↔LAN)                        (WAN↔LAN)
        │                               │
   ┌────┴────┐                     ┌────┴────┐
   │ 路由器B │                     │ 路由器C │
   │ LAN:192.168.2.1             │ LAN:192.168.3.1
   │ DHCP:192.168.2.x             │ DHCP:192.168.3.x
   │ WAN: 192.168.1.2             │ WAN: 192.168.1.3
   └─────────┘                     └─────────┘
   Wi-Fi/有线设备                   Wi-Fi/有线设备
  (IP: 192.168.2.x)                (IP: 192.168.3.x)


多个网段配置


                      互联网
                         │
                  [ 光猫/Modem ]
                         │
                    ┌────┴────┐
                    │ 路由器A │ ← 主路由/网关
                    │ LAN: 192.168.1.1
                    │ DHCP: 192.168.1.x
                    └────┬────┘
         ┌───────────────┼─────────────────┐
         │                               │
    WAN ↔ LAN                        WAN ↔ LAN
         │                               │
    ┌────┴────┐                     ┌────┴────┐
    │ 路由器B │                     │ 路由器C │
    │ LAN:192.168.2.1             │ LAN:192.168.3.1
    │ DHCP:192.168.2.x             │ DHCP:192.168.3.x
    │ WAN: 192.168.1.2             │ WAN: 192.168.1.3
    └─────────┘                     └─────────┘
   Wi-Fi/有线设备                   Wi-Fi/有线设备
   (IP: 192.168.2.x)               (IP: 192.168.3.x)

命令查看三个设备的制造商


$ curl -k https://api.macvendors.com/40:b0:76:5c:d3:1b
ASUSTek COMPUTER INC.

$ curl -k https://api.macvendors.com/4e:04:f0:56:4d:99
{"errors":{"detail":"Not Found"}}

$ curl -k https://api.macvendors.com/24:5a:5f:be:45:98
TP-LINK TECHNOLOGIES CO.,LTD.

查找网络内有多少个DHCP


$ sudo dhclient -v -r enp6s0
Killed old client process
Internet Systems Consortium DHCP Client 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/enp6s0/58:11:22:b7:90:07
Sending on   LPF/enp6s0/58:11:22:b7:90:07
Sending on   Socket/fallback
DHCPRELEASE of 192.168.1.11 on enp6s0 to 192.168.1.1 port 67 (xid=0x112dd846)

$ sudo dhclient -v -1 enp6s0
Internet Systems Consortium DHCP Client 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/enp6s0/58:11:22:b7:90:07
Sending on   LPF/enp6s0/58:11:22:b7:90:07
Sending on   Socket/fallback
DHCPDISCOVER on enp6s0 to 255.255.255.255 port 67 interval 3 (xid=0xf496ac72)
DHCPOFFER of 192.168.1.11 from 192.168.1.1
DHCPREQUEST for 192.168.1.11 on enp6s0 to 255.255.255.255 port 67 (xid=0x72ac96f4)
DHCPACK of 192.168.1.11 from 192.168.1.1 (xid=0xf496ac72)
bound to 192.168.1.11 -- renewal in 147723311 seconds.