Debian 上 DHCP 跨网段(跨 VLAN / 子网)工作,本质上不是 DHCP 服务器“跨网段”,而是 DHCP 请求如何被转发到 DHCP 服务器。常见做法有三种,最常用的是 DHCP Relay(中继)。
DHCP 使用 广播(255.255.255.255):
✅ 解决方式:DHCP Relay(中继)
客户端网段:192.168.10.0/24
DHCP 服务器:192.168.20.10
网关/三层交换机:192.168.10.1
客户端和 DHCP 服务器 不在同一子网
sudo apt update
sudo apt install isc-dhcp-server
编辑配置文件:
sudo nano /etc/dhcp/dhcpd.conf
示例:
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;
}
⚠️ DHCP 服务器不需要有 192.168.10.0 的接口
isc-dhcp-relay(Debian 常用)安装:
sudo apt install isc-dhcp-relay
配置:
sudo nano /etc/default/isc-dhcp-relay
示例:
SERVERS="192.168.20.10"
INTERFACES="eth0"
OPTIONS=""
说明:
SERVERS:DHCP 服务器 IPINTERFACES:接收 DHCP 请求的接口(客户端网段)启动:
sudo systemctl restart isc-dhcp-relay
ip helper-address 192.168.20.10
交换机负责中继,Debian 只跑 DHCP Server。
DHCP 服务器 直接连接多个子网
eth0 → 192.168.10.0/24
eth1 → 192.168.20.0/24
dhcpd.conf 中写多个 subnet:
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;
}
subnet 192.168.20.0 netmask 255.255.255.0 {
range 192.168.20.100 192.168.20.200;
option routers 192.168.20.1;
}
⚠️ 需要物理或虚拟多网卡,扩展性差
sudo apt install vlan
ip link add link eth0 name eth0.10 type vlan id 10
ip addr add 192.168.10.1/24 dev eth0.10
ip link set eth0.10 up
sudo nano /etc/default/isc-dhcp-server
INTERFACESv4="eth0.10 eth0.20"
sudo systemctl status isc-dhcp-server
journalctl -u isc-dhcp-server
| 场景 | 推荐方案 |
|---|---|
| 多子网、企业网络 | ✅ DHCP Relay |
| 简单实验 | 多网卡 |
| VLAN 环境 | DHCP + VLAN |
| 核心交换机 | 交换机做 Relay |
如果你愿意,可以告诉我:
我可以给你 精确到命令级别 的配置方案。