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;
本例将连接 example.com 的默认域名设为
example.com
,默认的租期时间设为86400
秒(1 天)。在新行中添加
authoritative
语句:authoritative;
重要没有
authoritative
语句,如果客户端询问池外部的地址,则dhcpd
服务不会回答带有DHCPNAK
的DHCPREQUEST
消息。为没有直接连接到服务器接口的 IPv4 子网添加
shared-network
声明,如下所示:shared-network example { option domain-name-servers 192.0.2.1; ... subnet 192.0.2.0 netmask 255.255.255.0 { range 192.0.2.20 192.0.2.100; option routers 192.0.2.1; } subnet 198.51.100.0 netmask 255.255.255.0 { range 198.51.100.20 198.51.100.100; option routers 198.51.100.1; } ... }
这个示例添加了一个共享网络声明,其中包含对 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 { }
注意如果服务器没有向这个子网提供 DHCP 服务,则
subnet
声明必须为空,如示例中所示。没有对直接连接的子网的声明,dhcpd
不会启动。
另外,配置在系统引导时自动启动
dhcpd
:# systemctl enable dhcpd
启动
dhcpd
服务:# systemctl start dhcpd
对于 IPv6 网络:
编辑
/etc/dhcp/dhcpd6.conf
文件:另外,如果没有其他指令包含这些设置,则添加
dhcpd
用作默认值的全局参数:option dhcp6.domain-search "example.com"; default-lease-time 86400;
本例将连接 example.com 的默认域名设为
example.com
,默认的租期时间设为86400
秒(1 天)。在新行中添加
authoritative
语句:authoritative;
重要没有
authoritative
语句,如果客户端询问池外部的地址,则dhcpd
服务不会回答带有DHCPNAK
的DHCPREQUEST
消息。为没有直接连接到服务器接口的 IPv6 子网添加
shared-network
声明,如下所示:shared-network example { option domain-name-servers 2001:db8:0:1::1:1 ... subnet6 2001:db8:0:1::1:0/120 { range6 2001:db8:0:1::1:20 2001:db8:0:1::1:100 } subnet6 2001:db8:0:1::2:0/120 { range6 2001:db8:0:1::2:20 2001:db8:0:1::2:100 } ... }
本例添加了一个共享网络声明,其中包含对 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 { }
注意如果服务器没有向这个子网提供 DHCP 服务,则
subnet6
声明必须为空,如示例中所示。没有对直接连接的子网的声明,dhcpd
不会启动。
另外,配置在系统引导时自动启动
dhcpd6
:# systemctl enable dhcpd6
启动
dhcpd6
服务:# systemctl start dhcpd6
其他资源
-
dhcp-options(5)
手册页 -
dhcpd.conf (5)
手册页 -
/usr/share/doc/dhcp-server/dhcpd.conf.example
file -
/usr/share/doc/dhcp-server/dhcpd6.conf.example
file - 设置 DHCP 转发代理