温馨提示×

如何配置Ubuntu的DHCP中继代理

小樊
50
2026-01-02 22:19:40
栏目: 智能运维

Ubuntu 配置 DHCP 中继代理

一 方案总览与准备

  • 典型拓扑:在多个 VLAN/子网 中放置一台 Ubuntu 中继主机,将客户端的 DHCP Discover/Request 转发到上游 DHCP 服务器(可跨网段)。中继主机需至少两块网卡或子接口,分别连接客户端网段与服务器所在网段。
  • 工具选择:常用有 isc-dhcp-relay(ISC DHCP Relay Agent)dnsmasq(同时可做 DNS/DHCP)。
  • 协议要点:DHCP 使用 UDP 67(服务器)UDP 68(客户端);中继需能转发广播并回送报文到客户端。
  • 规划信息:记录各客户端网段(如 192.168.10.0/24、192.168.20.0/24)、中继主机接口名(如 eth0、eth1)、上游 DHCP 服务器 IP(如 192.168.1.100)。

二 使用 isc-dhcp-relay 的标准做法(推荐)

  • 安装组件
    • 执行:sudo apt update && sudo apt install isc-dhcp-relay
  • 编辑配置文件
    • 文件路径:/etc/default/isc-dhcp-relay
    • 关键参数示例(按需增改):
      • INTERFACESv4="eth0 eth1"(填写连接客户端网段的接口)
      • RELAY_ADDRESS="192.168.1.100"(上游 DHCP 服务器 IP)
      • RELAY_PORT=67(服务器端口,默认 67)
      • 可选:RELAY_OPTIONS="option 6,192.168.1.1;option 12,8.8.8.8,8.8.4.4"(为客户端下发默认网关与 DNS)
  • 启动与开机自启
    • 执行:sudo systemctl start isc-dhcp-relay && sudo systemctl enable isc-dhcp-relay
  • 防火墙放行
    • UFW:sudo ufw allow 67/udpsudo ufw allow 68/udp
    • firewalld:sudo firewall-cmd --permanent --add-service=dhcp && sudo firewall-cmd --reload
  • 验证
    • 服务状态:sudo systemctl status isc-dhcp-relay
    • 日志排查:sudo tail -f /var/log/syslog | grep isc-dhcp-relay
    • 抓包确认:sudo tcpdump -i eth0 port 67 or port 68

三 使用 dnsmasq 的做法(轻量一体化)

  • 适用场景:需要同时提供 DNS 缓存/转发DHCP 中继 的小型网络。
  • 安装组件
    • 执行:sudo apt update && sudo apt install dnsmasq
  • 编辑配置文件
    • 文件路径:/etc/dnsmasq.conf(建议先备份)
    • 关键配置示例:
      • interface=eth0(仅在中继接口监听 DHCP)
      • dhcp-range=192.168.10.100,192.168.10.200,12h(仅为该网段下发地址;若服务器在该接口网段,可保留此行;跨网段中继时以服务器为准)
      • relay=192.168.1.100#67(上游 DHCP 服务器 IP 与端口)
  • 重启服务
    • 执行:sudo systemctl restart dnsmasq
  • 验证
    • 服务状态:sudo systemctl status dnsmasq
    • 抓包确认:sudo tcpdump -i eth0 port 67 or port 68

四 常见问题与排查要点

  • 接口与路由:确保中继主机到 DHCP 服务器 有可达路由;中继接口需配置正确的 IP 与子网掩码,并能转发广播。
  • 防火墙/ACL:放行 UDP 67/68;云环境需放行 安全组/NACL 对应端口与方向。
  • 服务器配置:上游 DHCP 服务器 需为各客户端网段配置 作用域/子网,否则会 NAK
  • 日志与抓包:优先查看 /var/log/syslog 中 isc-dhcp-relay/dnsmasq 输出;用 tcpdump 验证 Discover/Offer/Request/ACK 四步是否跨网段往返。
  • 多服务器与高可用:可在 RELAY_ADDRESSrelay= 中指定 多个 DHCP 服务器 IP,提升可靠性。

0