首先更新系统包列表,然后安装isc-dhcp-server软件包(Ubuntu默认仓库提供):
sudo apt update
sudo apt install isc-dhcp-server
编辑/etc/dhcp/dhcpd.conf(主配置文件),按需修改以下内容:
option domain-name "example.com"; # 域名
option domain-name-servers 8.8.8.8, 8.8.4.4; # DNS服务器(可填多个,用逗号分隔)
default-lease-time 600; # 默认租约时间(秒,如10分钟)
max-lease-time 7200; # 最大租约时间(秒,如2小时)
subnet 192.168.1.0 netmask 255.255.255.0 { # 子网地址及掩码(需与服务器网络一致)
range 192.168.1.10 192.168.1.100; # 可分配的IP地址池
option routers 192.168.1.1; # 默认网关(需与服务器网关一致)
option subnet-mask 255.255.255.0; # 子网掩码
option broadcast-address 192.168.1.255; # 广播地址(可选,部分客户端可自动计算)
}
host printer { # 主机名(自定义)
hardware ethernet 00:1A:2B:3C:4D:5E; # 设备MAC地址(需提前获取)
fixed-address 192.168.1.200; # 分配的固定IP
}
编辑/etc/default/isc-dhcp-server,设置DHCP服务器监听的网络接口(避免监听所有接口导致安全问题):
sudo nano /etc/default/isc-dhcp-server
找到INTERFACESv4行,修改为服务器的网络接口名称(如eth0、enp0s3,可通过ip a命令查看):
INTERFACESv4="eth0" # 仅监听eth0接口
DHCP服务器本身需要静态IP,避免因IP变化导致客户端无法获取配置。编辑Netplan配置文件(Ubuntu 20及以上版本默认使用Netplan):
sudo nano /etc/netplan/01-netcfg.yaml # 文件名可能因版本不同而变化(如00-installer-config.yaml)
修改为以下内容(以192.168.1.100为例,需与子网配置一致):
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no # 关闭DHCP
addresses: [192.168.1.100/24] # 静态IP及子网掩码(/24表示255.255.255.0)
gateway4: 192.168.1.1 # 默认网关
nameservers:
addresses: [8.8.8.8, 8.8.4.4] # DNS服务器
应用配置:
sudo netplan apply
启动DHCP服务并设置为开机自启:
sudo systemctl start isc-dhcp-server # 启动服务
sudo systemctl enable isc-dhcp-server # 开机自启
检查服务状态(确保显示“active (running)”):
sudo systemctl status isc-dhcp-server
若系统启用了ufw防火墙,需允许DHCP流量(UDP端口67/68):
sudo ufw allow 67/udp # DHCP服务器端口
sudo ufw allow 68/udp # DHCP客户端端口
sudo ufw reload # 重新加载防火墙规则
方法1:查看日志
通过系统日志确认DHCP服务是否正常运行:
sudo tail -f /var/log/syslog # 实时查看日志(Ubuntu默认日志路径)
若看到类似“DHCPOFFER on 192.168.1.10 to 00:1A:2B:3C:4D:5E via eth0”的记录,说明服务器已响应客户端请求。
方法2:客户端测试
将客户端设备(如电脑、手机)连接到同一网络,配置为“自动获取IP地址”(DHCP),然后检查是否获取到指定范围内的IP(如192.168.1.10-192.168.1.100),并能正常访问网络(如ping通网关或外网)。
通过以上步骤,即可完成Ubuntu DHCP服务器的搭建。根据实际网络环境,可调整子网范围、IP池大小、DNS服务器等参数以满足需求。