温馨提示×

debian dhcp如何限制网段

小樊
48
2026-09-10 20:06:33
栏目: 智能运维

在 Debian 上限制 DHCP 只给特定网段(子网)分配地址,通常是通过配置 ISC DHCP Server(isc-dhcp-server) 的 /etc/dhcp/dhcpd.conf 来实现的。下面按常见场景说明。


一、基本思路

DHCP 本身是通过 subnet 声明 来限制网段的:

  • 只有在 subnet 中定义的网段
  • 并且服务器网卡在该网段内(或配置了中继)
  • 才会分配对应地址

所以“限制网段”本质是:只写你允许的 subnet,不写其他网段。


二、只给单个网段分配 DHCP

例如只允许 192.168.10.0/24:

subnet 192.168.10.0 netmask 255.255.255.0 {
    range 192.168.10.100 192.168.10.200;
    option routers 192.168.10.1;
    option domain-name-servers 8.8.8.8, 8.8.4.4;
    default-lease-time 600;
    max-lease-time 7200;
}

✅ 其他网段(如 192.168.20.0/24)不写就不分配


三、限制 DHCP 监听的网卡(很重要)

Debian 中 DHCP 默认可能监听所有网卡,容易“乱发地址”。

编辑:

sudo nano /etc/default/isc-dhcp-server

示例(只监听 eth0):

INTERFACESv4="eth0"

然后重启:

sudo systemctl restart isc-dhcp-server

四、多网段但只让其中一个自动分配

# 允许分配
subnet 192.168.10.0 netmask 255.255.255.0 {
    range 192.168.10.100 192.168.10.200;
    option routers 192.168.10.1;
}

# 存在但不分配地址(仅用于 OPTIONS)
subnet 192.168.20.0 netmask 255.255.255.0 {
    option routers 192.168.20.1;
}

⚠️ 没有 range 的 subnet 不会分配 IP


五、通过 MAC 或固定 IP 限制(进阶)

1️⃣ 只允许指定 MAC 获取地址

subnet 192.168.10.0 netmask 255.255.255.0 {
    range 192.168.10.100 192.168.10.200;
}

host pc1 {
    hardware ethernet 00:11:22:33:44:55;
    fixed-address 192.168.10.101;
}

2️⃣ 拒绝未知设备(需配合 class)

class "known" {
    match hardware;
}

subnet 192.168.10.0 netmask 255.255.255.0 {
    pool {
        range 192.168.10.100 192.168.10.200;
        deny unknown clients;
    }
}

六、防火墙层面限制(可选)

如果怕 DHCP 被其他网段请求:

sudo ufw deny in on eth1 to any port 67

或 iptables:

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

七、常见错误

❌ subnet 写了但网卡不在该网段
❌ 多个网卡都监听 DHCP
❌ 配置文件语法错误(dhcpd -t 检查)

sudo dhcpd -t

如果你能告诉我:

  • Debian 版本
  • 是否用 isc-dhcp-server
  • 是单网段 / 多网段 / VLAN

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

0 踩