You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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分配逻辑。

解决办法

  1. 调整子网范围:将子网声明修改为覆盖整个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;
    }
    
  2. 修正子网掩码一致性:如果保留原192.168.1.128/25子网,需将option subnet-mask改为255.255.255.128,同时为静态IP所在的192.168.1.0/25网段添加对应的子网声明,并将host条目放入该子网块内。
  3. 重启DHCP服务:修改配置后执行systemctl restart isc-dhcp-server生效,同时建议清除客户端的旧租约(或重启客户端)。

内容的提问来源于stack exchange,提问作者Ben

火山引擎 最新活动