温馨提示×

debian dhcp怎么限制MAC

小樊
46
2026-10-19 12:21:40
栏目: 智能运维

在 Debian 上,如果你用的是 ISC DHCP Server(isc-dhcp-server),可以通过 MAC 地址(hardware address) 来限制或控制客户端获取 IP。

下面按常见需求说明。


一、只允许指定 MAC 获取 IP(白名单)

1. 编辑 DHCP 配置文件

sudo nano /etc/dhcp/dhcpd.conf

2. 定义一个子网,并配合 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 拿到地址(如果没开匿名租约)


二、禁止某些 MAC 获取 IP(黑名单)

ISC DHCP 不支持直接 deny mac,但可以用“分类 + 拒绝”实现。

示例:拒绝特定 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 格式必须是 小写 + 横杠


三、完全只允许已知 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


四、重启 DHCP 服务

sudo systemctl restart isc-dhcp-server

查看日志:

journalctl -u isc-dhcp-server

五、如果你用的是 dnsmasq(轻量级)

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 软件,我可以给你更精确的配置。

0 踩