一、安裝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