一、安装ISC DHCP Relay Agent
在Ubuntu上配置DHCP中继代理,首先需要安装isc-dhcp-relay软件包(ISC组织提供的开源DHCP中继工具)。通过以下命令更新系统软件包列表并安装:
sudo apt update
sudo apt install isc-dhcp-relay
二、配置DHCP中继代理
安装完成后,需修改isc-dhcp-relay的主配置文件/etc/default/isc-dhcp-relay,设置核心参数以定义转发行为:
eth0、ens33,可通过ip a命令查看)。若需监听多个接口,用空格分隔(例如INTERFACES="eth0 eth1")。192.168.1.100),中继代理会将接收到的DHCP请求转发至此地址。RELAY_PORT:指定DHCP服务器的端口(默认为67,无需修改除非服务器端口变更);LOCAL_ADDRESS:指定中继代理自身的IP地址(若主机有多个IP,需明确指定用于转发请求的IP);RELAY_OPTION:需传递给DHCP服务器的额外选项(如路由、域名服务器等,用逗号分隔,例如RELAY_OPTION="6,15"表示传递选项6(路由)和选项15(域名服务器))。示例配置(监听eth0接口,转发至192.168.1.100的DHCP服务器):
INTERFACES="eth0"
RELAY_ADDRESS="192.168.1.100"
RELAY_PORT=67
三、启动并启用DHCP中继服务
配置完成后,通过以下命令启动isc-dhcp-relay服务,并设置为开机自动启动:
sudo systemctl start isc-dhcp-relay
sudo systemctl enable isc-dhcp-relay
四、验证配置有效性
active (running)即为正常):sudo systemctl status isc-dhcp-relay
sudo tail -f /var/log/syslog | grep isc-dhcp-relay
tcpdump命令监控指定接口的DHCP流量(端口67/68),确认请求是否被转发至DHCP服务器:sudo tcpdump -i eth0 port 67 or port 68
五、配置防火墙允许DHCP流量
若系统启用了防火墙(如ufw),需放行DHCP流量(UDP端口67/68),否则中继代理无法正常工作:
sudo ufw allow in on eth0 to any port 67 proto udp # 允许进入eth0接口的DHCP请求
sudo ufw allow in on eth0 to any port 68 proto udp # 允许进入eth0接口的DHCP响应
六、可选:使用dnsmasq作为DHCP中继(替代方案)
若系统中已安装dnsmasq(轻量级DNS/DHCP服务器),也可通过其实现DHCP中继功能。编辑/etc/dnsmasq.conf文件,添加以下配置:
interface=eth0 # 监听的接口
dhcp-range=192.168.2.50,192.168.2.150,255.255.255.0,12h # 本子网的DHCP范围(可选,若需中继代理也分配IP)
relay=192.168.1.100#67 # 指定DHCP服务器的IP和端口
保存后重启dnsmasq服务使配置生效:
sudo systemctl restart dnsmasq