内网DHCP服务器搭建,机房设备自动分配IP
机房里的服务器、交换机管理口、KVM、存储设备如果都靠手工配IP,设备一多就容易写错、冲突、漏配。
内网DHCP服务器搭建的核心目标,就是让这些设备接入网络后自动拿到可用的IP地址、网关和DNS,减少人工维护成本。
本文用Ubuntu系统配合isc-dhcp-server,从零开始完成一台内网DHCP服务器的部署与验证,适合没有DHCP配置经验的运维新手照着操作。
搭建前先理清网络边界
DHCP服务器不能随便接在已有DHCP的网络里,否则会出现两个DHCP同时发地址,导致终端拿到错误网关。
动手前先确认三件事:
- 这台服务器要固定一个静态IP,例如
192.168.10.2/24,不要用DHCP获取。 - 规划好地址池,避开网关、服务器静态IP和保留地址。例如网段
192.168.10.0/24,网关192.168.10.1,地址池用192.168.10.100到192.168.10.200。 - 确认机房接入交换机没有开启DHCP Snooping限制,或者已把服务器端口设为信任口。
查看本机网卡名称和当前地址:
ip addr show
ip route show
假设用于内网分配的网卡是 ens192,后续配置都基于这个接口。
安装isc-dhcp-server并配置地址池
在Ubuntu上安装DHCP服务:
sudo apt update
sudo apt install isc-dhcp-server -y
编辑主配置文件 /etc/dhcp/dhcpd.conf,加入以下内容:
default-lease-time 600;
max-lease-time 7200;
authoritative;
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 subnet-mask 255.255.255.0;
option domain-name-servers 223.5.5.5, 119.29.29.29;
}
authoritative 表示这是内网唯一权威DHCP,
客户端请求会被正常应答。range 是自动分配范围,option routers 是网关,option domain-name-servers 是DNS。
指定DHCP服务监听的网卡,编辑 /etc/default/isc-dhcp-server:
INTERFACESv4="ens192"
如果服务器有多张网卡,只写内网那张,不要写成 INTERFACESv4="*",否则可能在外网口也发地址。
启动服务并检查监听状态
配置完成后先做语法检查:
sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf
没有报错再启动并设为开机自启:
sudo systemctl restart isc-dhcp-server
sudo systemctl enable isc-dhcp-server
sudo systemctl status isc-dhcp-server
状态显示 active (running) 说明服务已运行。
查看是否在67端口监听:
sudo ss -ulnp | grep :67
能看到 dhcpd 进程即可。
如果启动失败,优先看日志:
sudo journalctl -u isc-dhcp-server -n 50 --no-pager
用机房设备验证自动获取结果
找一台测试设备接入同一内网,把网卡设为DHCP自动获取。
Linux下可以执行:
sudo dhclient -r ens192
sudo dhclient ens192
ip addr show ens192
如果地址落在 192.168.10.100 到 192.168.10.200 之间,说明分配成功。
也可以在DHCP服务器上查看租约文件:
cat /var/lib/dhcp/dhcpd.leases
租约文件会记录客户端MAC、分配IP、租约开始和结束时间。
机房设备较多时,建议给交换机管理口、KVM等关键设备做静态绑定,在 dhcpd.conf 中追加:
host switch-mgmt {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.10.50;
}
这样设备每次上线都会拿到固定IP,比完全动态分配更好管理。
最容易踩的几个坑
地址池和静态IP重叠:如果服务器自己的IP落在地址池范围内,可能被其他设备占用,导致服务异常。
规划时把服务器、网关、打印机等固定设备排除在地址池外。
网卡写错或漏写:INTERFACESv4 填错会导致服务启动但不在正确网卡监听。
改完配置后必须重启服务。
内网存在第二个DHCP:家用路由器、光猫如果也开着DHCP,会抢答。
接入前关闭其他DHCP,或者用交换机端口隔离。
防火墙拦截UDP 67/68:如果服务器开了ufw,需要放行:
sudo ufw allow 67/udp
sudo ufw allow 68/udp
常见疑问
机房设备获取不到IP,先查什么? 先在客户端执行 dhclient -v 看请求是否发出,再在服务器上 tcpdump -i ens192 port 67 or port 68 抓包。
如果服务器收不到请求,多半是VLAN或交换机端口配置问题。
DHCP分配的IP多久回收? 由 default-lease-time 和 max-lease-time 控制,默认租约到期前客户端会续租。
机房设备建议把租约设长一点,例如86400秒,减少续租流量。
能不能同时给多个网段分配? 可以,在 dhcpd.conf 中写多个 subnet 段,并确保服务器有对应网段的接口或中继。
跨网段需要配置DHCP中继(dhcrelay),不是单机直接广播能覆盖的。
内网DHCP服务器搭建完成后,机房设备自动分配IP只是第一步。
后续建议把关键设备做MAC绑定、定期清理租约文件、保留一份配置备份。
如果设备数量超过地址池,及时扩大范围或拆分网段,避免新设备上线拿不到地址。