温馨提示×

linux dhcp如何限制范围

小樊
40
2026-10-27 06:21:19
栏目: 智能运维

在 Linux 上,DHCP 服务通常是用 isc-dhcp-server(dhcpd)或 dnsmasq 来实现的。下面分别说明如何限制 DHCP 分配地址范围(地址池),以及常见的“限制”方式。


一、使用 isc-dhcp-server(最常见)

1️⃣ 限制 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.200
  • 超出这个范围不会分配

2️⃣ 限制只给指定 MAC 地址分配 IP(白名单)

host 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;
}

✅ 效果:

  • 不在 host 配置里的设备 拿不到 IP

3️⃣ 排除某些 IP 不被分配

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 即可)


二、使用 dnsmasq(轻量 DHCP)

1️⃣ 限制地址范围

编辑 /etc/dnsmasq.conf:

dhcp-range=192.168.1.100,192.168.1.200,12h

✅ 只分配 100~200


2️⃣ 只允许指定 MAC

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

三、按网卡 / VLAN 限制(进阶)

  • 多子网绑定不同网卡
  • 不同 VLAN 使用不同 subnet
  • 防火墙(iptables / nftables)限制 DHCP 包来源

示例(只允许 eth1 收 DHCP):

iptables -A INPUT -i eth0 -p udp --dport 67 -j DROP

四、常见限制方式总结

需求 方法
限制 IP 范围 range
排除 IP 不写进 range
限制 MAC host / deny unknown-clients
限制网段 subnet
限制接口 防火墙 / 多实例

如果你能告诉我:

  • 用的是 dhcpd 还是 dnsmasq
  • 想限制的是 IP 范围 / MAC / 接口 / VLAN

我可以给你一份可直接用的配置文件。

0 踩