在 Debian 上,如果你用的是 ISC DHCP Server(isc-dhcp-server),可以通过 MAC 地址(hardware address) 来限制或控制客户端获取 IP。
下面按常见需求说明。
sudo nano /etc/dhcp/dhcpd.conf
host 使用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;
}
host allowed-pc1 {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.1.101;
}
host allowed-pc2 {
hardware ethernet aa:bb:cc:dd:ee:ff;
fixed-address 192.168.1.102;
}
✅ 只有配置的 MAC 能拿到固定 IP
❌ 其他 MAC 不会从 range 拿到地址(如果没开匿名租约)
ISC DHCP 不支持直接 deny mac,但可以用“分类 + 拒绝”实现。
class "blocked" {
match if (binary-to-ascii(16,8,"-",substring(hardware,1,6)) = "00-11-22-33-44-55");
}
pool {
range 192.168.1.100 192.168.1.200;
deny members of "blocked";
}
⚠️ MAC 格式必须是 小写 + 横杠
subnet 192.168.1.0 netmask 255.255.255.0 {
deny unknown-clients;
}
host pc1 {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.1.101;
}
✅ 未在 host 中定义的 MAC 一律不给 IP
sudo systemctl restart isc-dhcp-server
查看日志:
journalctl -u isc-dhcp-server
Debian 上也常用 dnsmasq:
dhcp-host=00:11:22:33:44:55,192.168.1.101
dhcp-host=aa:bb:cc:dd:ee:ff,192.168.1.102
dhcp-ignore=tag:!known
| 需求 | 方法 |
|---|---|
| 只允许指定 MAC | host + fixed-address |
| 禁止某 MAC | class + deny |
| 完全白名单 | deny unknown-clients |
| 轻量方案 | dnsmasq |
如果你告诉我 Debian 版本 + 用的 DHCP 软件,我可以给你更精确的配置。