ISC-DHCP忽略静态主机配置,分配动态IP问题求助
ISC DHCP服务器静态IP配置失效问题分析
环境信息
- 操作系统:Debian 11
- DHCP服务器版本:isc-dhcpd-4.4.3-P1
问题现象
局域网内多台设备未获取dhcp.conf中配置的静态IP,而是从DHCP地址池分配动态IP。已确认配置文件中的MAC地址与服务器日志、租约文件完全一致,尝试使用U6Pro设备的UID配置静态IP也无效。
配置文件内容
subnet 192.168.1.128 netmask 255.255.255.128 { option routers 192.168.1.1; option domain-name-servers 192.168.1.1; option subnet-mask 255.255.255.0; range 192.168.1.150 192.168.1.220; } # D-Link AP host DLINK_AP { hardware ethernet 18:0F:76:3C:91:38; fixed-address 192.168.1.102; } host HP_Printer { hardware ethernet 40:B8:9A:0C:56:49; fixed-address 192.168.1.103; } host U6PRO_AP { hardware ethernet 0C:EA:14:6E:55:E9; fixed-address 192.168.1.105; }
U6Pro设备DHCP日志示例
May 20 22:39:48 server dhcpd[3950]: DHCPDISCOVER from 0c:ea:14:6e:55:e9 via enp1s0 May 20 22:39:49 server dhcpd[3950]: DHCPOFFER on 192.168.1.167 to 0c:ea:14:6e:55:e9 (U6Pro) via enp1s0 May 20 22:39:49 server dhcpd[3950]: DHCPREQUEST for 192.168.1.167 (192.168.54.141) from 0c:ea:14:6e:55:e9 (U6Pro) via enp1s0 May 20 22:39:49 server dhcpd[3950]: DHCPACK on 192.168.1.167 to 0c:ea:14:6e:55:e9 (U6Pro) via enp1s0
失效原因
核心问题是静态IP不在DHCP服务器定义的子网范围内:
- 配置中声明的子网是
192.168.1.128/25(掩码255.255.255.128),对应的IP范围是192.168.1.128 ~ 192.168.1.255。 - 而所有静态IP(192.168.1.102、103、105)属于
192.168.1.0/24的前半段(192.168.1.0 ~ 192.168.1.127),不在当前子网的服务范围内。 - ISC DHCP服务器会忽略
fixed-address不在任何已声明子网中的host条目,直接从地址池分配动态IP。
另外配置中存在子网掩码不一致的问题:子网定义是/25,但option subnet-mask设置为/24,这会导致客户端获取的掩码与服务器子网定义冲突,也可能影响IP分配逻辑。
解决办法
- 调整子网范围:将子网声明修改为覆盖整个
192.168.1.0/24网段,确保静态IP包含在内:subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.1; option domain-name-servers 192.168.1.1; option subnet-mask 255.255.255.0; range 192.168.1.150 192.168.1.220; } - 修正子网掩码一致性:如果保留原
192.168.1.128/25子网,需将option subnet-mask改为255.255.255.128,同时为静态IP所在的192.168.1.0/25网段添加对应的子网声明,并将host条目放入该子网块内。 - 重启DHCP服务:修改配置后执行
systemctl restart isc-dhcp-server生效,同时建议清除客户端的旧租约(或重启客户端)。
内容的提问来源于stack exchange,提问作者Ben




