温馨提示×

linux dhcp如何做中继

小樊
32
2026-09-15 22:01:34
栏目: 智能运维

在 Linux 上做 DHCP 中继(DHCP Relay / DHCP Helper),通常使用 isc-dhcp-relay(或 systemd 环境下的 dhcrelay)。下面按常见场景说明。


一、原理简述

DHCP 中继的作用是:

  • 客户端在 子网 A(无 DHCP 服务器)
  • DHCP 服务器在 子网 B
  • Linux 中继设备同时连接两个子网,把 DHCP 广播转发给 DHCP 服务器

中继设备需要:

  • 开启 IP 转发
  • 运行 dhcrelay
  • 指定:
    • 客户端接口
    • DHCP 服务器地址

二、安装 DHCP 中继软件

Debian / Ubuntu

sudo apt update
sudo apt install isc-dhcp-relay

RHEL / CentOS / Rocky / Alma

sudo yum install dhcp-relay
# 或
sudo dnf install dhcp-relay

三、基本配置示例

假设:

  • 客户端接口:eth0(192.168.10.0/24)
  • 服务器接口:eth1(10.0.0.0/24)
  • DHCP 服务器 IP:10.0.0.100

1️⃣ 开启 IP 转发

echo 1 > /proc/sys/net/ipv4/ip_forward

永久生效:

cat >> /etc/sysctl.conf <<EOF
net.ipv4.ip_forward=1
EOF
sysctl -p

2️⃣ 运行 dhcrelay(命令行方式)

dhcrelay -i eth0 10.0.0.100

说明:

  • -i eth0:监听客户端请求的接口
  • 10.0.0.100:DHCP 服务器地址

如果有多个接口:

dhcrelay -i eth0 -i eth2 10.0.0.100

四、使用 systemd 配置(推荐)

Debian / Ubuntu

编辑:

sudo nano /etc/default/isc-dhcp-relay

示例:

SERVERS="10.0.0.100"
INTERFACES="eth0"
OPTIONS=""

启动:

sudo systemctl restart isc-dhcp-relay
sudo systemctl enable isc-dhcp-relay

RHEL / CentOS

编辑:

sudo nano /etc/sysconfig/dhcrelay

示例:

DHCRELAYARGS=""
INTERFACES="eth0"
DHCPSERVERS="10.0.0.100"

启动:

systemctl restart dhcrelay
systemctl enable dhcrelay

五、防火墙注意点

需要放行的流量

  • UDP 67(服务器)
  • UDP 68(客户端)
firewall-cmd --add-service=dhcp --permanent
firewall-cmd --reload

或 iptables:

iptables -A INPUT -p udp --dport 67 -j ACCEPT
iptables -A INPUT -p udp --dport 68 -j ACCEPT

六、验证方法

在中继上抓包:

tcpdump -i eth0 udp port 67 or udp port 68

客户端应能看到:

  • DHCP Discover
  • DHCP Offer(来自服务器)

七、常见问题

✅ 客户端收不到地址?

  • 中继接口写错
  • DHCP 服务器未配置对应子网
  • 防火墙拦截
  • 未开启 ip_forward

✅ DHCP 服务器日志无请求?

  • 中继没收到广播
  • 服务器子网未授权

如果你告诉我:

  • Linux 发行版
  • 网络拓扑(接口 / 网段)
  • 是否用 systemd

我可以给你一份 完全可直接用的配置

0