3.9. 为没有直接连接到 DHCP 服务器的子网设置 DHCP 服务
如果 DHCP 服务器没有直接连接到该服务器应响应 DHCP 请求的子网,请使用以下步骤。如果 DHCP 中继代理将请求转发给 DHCP 服务器,则属于这种情况,因为 DHCP 服务器的接口没有一个直接连接到服务器应服务的子网。
根据您要为 IPv4、IPv6 或两个协议提供 DHCP 的信息,请查看以下操作过程:
先决条件
-
已以
root
用户身份登录。 -
dhcp-server
软件包已安装。
步骤
对于 IPv4 网络:
编辑
/etc/dhcp/dhcpd.conf
文件:可选:如果没有其他指令包含这些设置,请添加
dhcpd
作为默认设置的全局参数:option domain-name "example.com"; default-lease-time 86400;
option domain-name "example.com"; default-lease-time 86400;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 本例将连接 example.com 的默认域名设为
example.com
,默认的租期时间设为86400
秒(1 天)。在新行中添加
authoritative
语句:authoritative;
authoritative;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要没有
authoritative
语句,如果客户端询问池外部的地址,则dhcpd
服务不会回答带有DHCPNAK
的DHCPREQUEST
消息。为没有直接连接到服务器接口的 IPv4 子网添加
shared-network
声明,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个示例添加了一个共享网络声明,其中包含对 192.0.2.0/24 和 198.51.100.0/24 的
subnet
声明。使用这个配置,DHCP 服务器会为发送来自这些子网之一 DHCP 请求的客户端分配下列设置:-
两个子网的客户端的 DNS 服务器的 IP 是:
192.0.2.1
。 -
range
参数中定义范围内空闲的 IPv4 地址,具体取决于客户端从哪个子网发送请求。 -
默认网关是
192.0.2.1
或198.51.100.1
,具体取决于客户端从哪个子网发送请求。
-
两个子网的客户端的 DNS 服务器的 IP 是:
为服务器直接连接的子网添加
subnet
声明,用于访问上面shared-network
中指定的远程子网:subnet 203.0.113.0 netmask 255.255.255.0 { }
subnet 203.0.113.0 netmask 255.255.255.0 { }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果服务器没有向这个子网提供 DHCP 服务,则
subnet
声明必须为空,如示例中所示。没有对直接连接的子网的声明,dhcpd
不会启动。
可选:在系统引导时配置
dhcpd
自动启动:systemctl enable dhcpd
# systemctl enable dhcpd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动
dhcpd
服务:systemctl start dhcpd
# systemctl start dhcpd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
对于 IPv6 网络:
编辑
/etc/dhcp/dhcpd6.conf
文件:可选:如果没有其他指令包含这些设置,请添加
dhcpd
作为默认设置的全局参数:option dhcp6.domain-search "example.com"; default-lease-time 86400;
option dhcp6.domain-search "example.com"; default-lease-time 86400;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 本例将连接 example.com 的默认域名设为
example.com
,默认的租期时间设为86400
秒(1 天)。在新行中添加
authoritative
语句:authoritative;
authoritative;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要没有
authoritative
语句,如果客户端询问池外部的地址,则dhcpd
服务不会回答带有DHCPNAK
的DHCPREQUEST
消息。为没有直接连接到服务器接口的 IPv6 子网添加
shared-network
声明,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 本例添加了一个共享网络声明,其中包含对 2001:db8:0:1::1:0/120 和 2001:db8:0:1::2:0/120 的
subnet6
声明。使用这个配置,DHCP 服务器会为发送来自这些子网之一 DHCP 请求的客户端分配下列设置:-
两个子网的客户端的 DNS 服务器的 IP 是
2001:db8:0:1::1:1
。 range6
参数中定义的空闲的 IPv6 地址,具体取决于客户端从哪个子网发送请求。请注意: IPv6 需要使用路由器广告信息来识别默认网关。
-
两个子网的客户端的 DNS 服务器的 IP 是
为服务器直接连接的子网添加
subnet6
声明,用于访问上面shared-network
中指定的远程子网:subnet6 2001:db8:0:1::50:0/120 { }
subnet6 2001:db8:0:1::50:0/120 { }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果服务器没有向这个子网提供 DHCP 服务,则
subnet6
声明必须为空,如示例中所示。没有对直接连接的子网的声明,dhcpd
不会启动。
可选:在系统引导时配置
dhcpd6
:systemctl enable dhcpd6
# systemctl enable dhcpd6
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动
dhcpd6
服务:systemctl start dhcpd6
# systemctl start dhcpd6
Copy to Clipboard Copied! Toggle word wrap Toggle overflow