在 Linux 上,DHCP 服务通常是用 isc-dhcp-server(dhcpd)或 dnsmasq 来实现的。下面分别说明如何限制 DHCP 分配地址范围(地址池),以及常见的“限制”方式。
编辑配置文件(通常是 /etc/dhcp/dhcpd.conf):
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8;
}
✅ 含义:
192.168.1.100 ~ 192.168.1.200host pc1 {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.1.101;
}
或只允许某些 MAC 获取 IP(配合 deny unknown-clients):
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
deny unknown-clients;
}
✅ 效果:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
range 192.168.1.210 192.168.1.250;
}
中间 .201~.209 不会被分配(没写进 range 即可)
编辑 /etc/dnsmasq.conf:
dhcp-range=192.168.1.100,192.168.1.200,12h
✅ 只分配 100~200
dhcp-host=00:11:22:33:44:55,192.168.1.101
dhcp-ignore=tag:!known
或:
dhcp-mac=known,00:11:22:33:44:55
dhcp-ignore=tag:!known
subnet示例(只允许 eth1 收 DHCP):
iptables -A INPUT -i eth0 -p udp --dport 67 -j DROP
| 需求 | 方法 |
|---|---|
| 限制 IP 范围 | range |
| 排除 IP | 不写进 range |
| 限制 MAC | host / deny unknown-clients |
| 限制网段 | subnet |
| 限制接口 | 防火墙 / 多实例 |
如果你能告诉我:
我可以给你一份可直接用的配置文件。