10.3. DHCP 中继代理程序

DHCP 中继代理程序(dhcrelay)可让没有 DHCP 服务器的子网向其他子网中的一个或多个 DHCP 服务器发出 DHCPBOOTP 请求。
DHCP 客户端请求信息时,DHCP 中继代理程序会将该请求转发到启动 DHCP 中继代理时指定的 DHCP 服务器列表。DHCP 服务器返回回复后,会向最初发送请求的网络广播或单播这个回复。
除非在 /etc/sysconfig/dhcrelay 文件中使用 INTERFACES 指令指定接口,IPv4 的 DHCP 中继代理 dhcrelay 侦听所有接口的 DHCPv4BOOTP 请求。详情请查看 第 10.3.1 节 “将 dhcrelay 配置为 DHCPv4 and BOOTP 中继代理程序”IPv6 的 DHCP 中继代理 dhcrelay6 没有这个默认行为,同时必须指定侦听 DHCPv6 请求的接口。详情请查看 第 10.3.2 节 “将 dhcrelay 配置为 DHCPv6 中继代理程序”
dhcrelay 可作为 DHCPv4BOOTP(默认)中继代理运行,或添加 -6 参数作为 DHCPv6 中继代理运行。要查看用法信息,请运行命令 dhcrelay -h

10.3.1. 将 dhcrelay 配置为 DHCPv4 and BOOTP 中继代理程序

要在 DHCPv4BOOTP 模式服务器中运行 dhcrelay,指定向其转发请求的服务器,请作为 root 用户复制并编辑 dhcrelay.service 文件:
~]# cp /lib/systemd/system/dhcrelay.service /etc/systemd/system/
~]# vi /etc/systemd/system/dhcrelay.service
编辑 [Service] 部分的 ExecStart 选项,在该行的结尾处添加一个或多个服务器 IPv4 地址,例如:
ExecStart=/usr/sbin/dhcrelay -d --no-pid 192.168.1.1
如果要指定 DHCP 中继代理侦听 DHCP 请求的接口,请使用 -i 参数将其添加到 ExecStart 选项(否则会侦听所有接口),例如:
ExecStart=/usr/sbin/dhcrelay -d --no-pid 192.168.1.1 -i em1
。其他选项请查看 dhcrelay(8) man page。
请作为 root 用户重启该服务以便更改生效:
~]# systemctl --system daemon-reload
~]# systemctl restart dhcrelay

10.3.2. 将 dhcrelay 配置为 DHCPv6 中继代理程序

要在 DHCPv6 模式中运行 dhcrelay,请添加 -6 参数,并指定 lower interface(可使用该接口接收客户端或其他中继代理的查询)和 upper interface(转发来自客户端和其他中继代理的查询)。作为 root 用户将 dhcrelay.service 复制到 dhcrelay6.service,并进行编辑:
~]# cp /lib/systemd/system/dhcrelay.service /etc/systemd/system/dhcrelay6.service
~]# vi /etc/systemd/system/dhcrelay6.service
编辑 [Service] 部分的 ExecStart 选项,添加 -6 参数,并添加 lower interfaceupper interface 接口,例如:
ExecStart=/usr/sbin/dhcrelay -d --no-pid -6 -l em1 -u em2
。其他选项的详情请查看 dhcrelay(8) man page。
请作为 root 用户重启该服务以便更改生效:
~]# systemctl --system daemon-reload
~]# systemctl restart dhcrelay6