温馨提示×

如何在Linux上使用DHCP中继代理

小樊
41
2025-12-14 02:37:14
栏目: 智能运维

在 Linux 上配置 DHCP 中继代理

一、准备与原理

  • 作用:在不同子网/广播域之间转发 DHCP 报文(客户端 UDP 68 → 服务器 UDP 67),让 DHCP 服务器为远端网段分配地址。
  • 拓扑要求:中继主机至少有两个接口,分别连接客户端网段服务器网段;服务器需能路由回中继主机。
  • 路由要点:确保服务器到各客户端网段的回程路由可达(静态路由或动态路由均可)。
  • 转发能力:Linux 主机需开启IP 转发,否则跨网段转发不生效。

二、方案一 ISC DHCP Relay(isc-dhcp-relay)

  • 安装
    • Debian/Ubuntu:sudo apt-get update && sudo apt-get install isc-dhcp-relay
    • RHEL/CentOS:sudo yum install dhcp-relay
    • Fedora:sudo dnf install dhcp-relay
  • 配置(常见路径与示例)
    • 编辑配置文件(发行版不同,常见为:/etc/default/isc-dhcp-relay/etc/sysconfig/dhcp-relay
    • 示例(/etc/default/isc-dhcp-relay):
      • INTERFACESv4=“eth0 eth1” # 监听客户端侧接口
      • SERVERS=“192.0.2.10 192.0.2.11” # DHCP 服务器地址(可多台)
      • 可选:RELAY_PORT=67(默认)
  • 启动与开机自启
    • sudo systemctl start isc-dhcp-relay
    • sudo systemctl enable isc-dhcp-relay
  • 说明
    • 多数发行版该服务仅做DHCP 转发,不会在本机充当 DHCP 服务器。
    • 若需为服务器侧接口指定地址,可在 SERVERS 前设置 RELAY_ADDRESS(部分发行版支持)。

三、方案二 dnsmasq(轻量方案,兼 DNS/DHCP)

  • 适用:希望同时提供 DNSDHCP 中继 的场景。
  • 安装
    • sudo apt-get install dnsmasq 或 sudo yum/dnf install dnsmasq
  • 配置(/etc/dnsmasq.conf)
    • 仅中继(不提供本机 DHCP 地址分配):
      • interface=eth0 # 客户端侧接口
      • dhcp-relay=192.0.2.10 # 上游 DHCP 服务器
      • dhcp-relay-port=67
    • 如需本机在该接口也分配地址(与中继并存),可补充:
      • dhcp-range=192.168.10.100,192.168.10.200,12h
  • 启动与开机自启
    • sudo systemctl start dnsmasq
    • sudo systemctl enable dnsmasq
  • 提示
    • 同时启用“本机 DHCP 分配”和“中继”时,注意地址池不要重叠,避免冲突。

四、网络与安全配置

  • 开启 IP 转发
    • 临时:echo 1 > /proc/sys/net/ipv4/ip_forward
    • 永久:在 /etc/sysctl.conf 设置 net.ipv4.ip_forward=1 并执行 sysctl -p
  • 防火墙放行 DHCP 端口
    • firewalld:sudo firewall-cmd --permanent --add-service=dhcp && sudo firewall-cmd --reload
    • ufw:sudo ufw allow 67/udp;sudo ufw allow 68/udp
  • 路由与连通性
    • 确保 DHCP 服务器到各客户端网段有可达路由(网关/静态路由),中继主机到服务器网段同样可达。

五、验证与排错

  • 服务状态
    • systemctl status isc-dhcp-relay 或 systemctl status dnsmasq
  • 抓包验证 DHCP 转发
    • sudo tcpdump -i eth0 port 67 or port 68 -nn -vv
    • 正常可见客户端 DISCOVER/OFFER/REQUEST/ACK 经过中继转发
  • 日志排查
    • Debian/Ubuntu:tail -f /var/log/syslog | grep -i dhcp
    • RHEL/CentOS:tail -f /var/log/messages | grep -i dhcp
  • 常见故障
    • 收不到 Offer:检查服务器到客户端网段回程路由、服务器是否配置了对应子网与地址池、防火墙是否放行 67/68/UDP
    • 中继不生效:确认 INTERFACES 包含客户端侧接口、服务器地址正确、已开启 IP 转发

0