搜索

3.9. 为没有直接连接到 DHCP 服务器的子网设置 DHCP 服务

download PDF

如果 DHCP 服务器没有直接连接到该服务器应响应 DHCP 请求的子网,请使用以下步骤。如果 DHCP 中继代理将请求转发给 DHCP 服务器,则属于这种情况,因为 DHCP 服务器的接口没有一个直接连接到服务器应服务的子网。

根据您要为 IPv4、IPv6 或两个协议提供 DHCP 的信息,请查看以下操作过程:

先决条件

  • 已以 root 用户身份登录。
  • dhcp-server 软件包已安装。

步骤

  • 对于 IPv4 网络:

    1. 编辑 /etc/dhcp/dhcpd.conf 文件:

      1. 另外,如果没有其他指令包含这些设置,则添加 dhcpd 用作默认值的全局参数:

        option domain-name "example.com";
        default-lease-time 86400;

        本例将连接 example.com 的默认域名设为 example.com,默认的租期时间设为 86400 秒(1 天)。

      2. 在新行中添加 authoritative 语句:

        authoritative;
        重要

        没有 authoritative 语句,如果客户端询问池外部的地址,则 dhcpd 服务不会回答带有 DHCPNAKDHCPREQUEST 消息。

      3. 为没有直接连接到服务器接口的 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.1198.51.100.1,具体取决于客户端从哪个子网发送请求。
      4. 为服务器直接连接的子网添加 subnet 声明,用于访问上面 shared-network 中指定的远程子网:

        subnet 203.0.113.0 netmask 255.255.255.0 {
        }
        注意

        如果服务器没有向这个子网提供 DHCP 服务,则 subnet 声明必须为空,如示例中所示。没有对直接连接的子网的声明,dhcpd 不会启动。

    2. 另外,配置在系统引导时自动启动 dhcpd

      # systemctl enable dhcpd
    3. 启动 dhcpd 服务:

      # systemctl start dhcpd
  • 对于 IPv6 网络:

    1. 编辑 /etc/dhcp/dhcpd6.conf 文件:

      1. 另外,如果没有其他指令包含这些设置,则添加 dhcpd 用作默认值的全局参数:

        option dhcp6.domain-search "example.com";
        default-lease-time 86400;

        本例将连接 example.com 的默认域名设为 example.com,默认的租期时间设为 86400 秒(1 天)。

      2. 在新行中添加 authoritative 语句:

        authoritative;
        重要

        没有 authoritative 语句,如果客户端询问池外部的地址,则 dhcpd 服务不会回答带有 DHCPNAKDHCPREQUEST 消息。

      3. 为没有直接连接到服务器接口的 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 需要使用路由器广告信息来识别默认网关。

      4. 为服务器直接连接的子网添加 subnet6 声明,用于访问上面 shared-network 中指定的远程子网:

        subnet6 2001:db8:0:1::50:0/120 {
        }
        注意

        如果服务器没有向这个子网提供 DHCP 服务,则 subnet6 声明必须为空,如示例中所示。没有对直接连接的子网的声明,dhcpd 不会启动。

    2. 另外,配置在系统引导时自动启动 dhcpd6

      # systemctl enable dhcpd6
    3. 启动 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 转发代理
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.