4.2. 使用外部 DHCP 配置 Capsule 服务器

要使用外部 DHCP 配置 Capsule 服务器,您必须完成以下步骤:

4.2.1. 配置外部 DHCP 服务器以用于 Capsule 服务器

要配置运行 Red Hat Enterprise Linux 的外部 DHCP 服务器以用于 Capsule 服务器,您必须安装 ISC DHCP 服务和 Berkeley Internet Name Domain (BIND)软件包。您还必须与 Capsule 服务器共享 DHCP 配置和租期文件。此流程中的示例使用分布式网络文件系统(NFS)协议来共享 DHCP 配置和租期文件。

注意

如果您使用 dnsmasq 作为外部 DHCP 服务器,请启用 dhcp-no-override 设置。这是必要的,因为 Satellite 在 grub2/ 子目录下在 TFTP 服务器上创建配置文件。如果禁用了 dhcp-no-override 设置,客户端会从根目录中获取引导装载程序及其配置,这可能会导致错误。

流程

  1. 在 Red Hat Enterprise Linux 主机上,安装 ISC DHCP 服务和 Berkeley Internet Name Domain (BIND)软件包:

    # yum install dhcp bind
  2. 生成安全令牌:

    # dnssec-keygen -a HMAC-MD5 -b 512 -n HOST omapi_key

    因此,当前目录中会创建一个由两个文件组成的密钥对。

  3. 从密钥复制 secret 哈希:

    # cat Komapi_key.+*.private |grep ^Key|cut -d ' ' -f2
  4. 编辑所有子网的 dhcpd 配置文件并添加密钥。以下是一个示例:

    # cat /etc/dhcp/dhcpd.conf
    default-lease-time 604800;
    max-lease-time 2592000;
    log-facility local7;
    
    subnet 192.168.38.0 netmask 255.255.255.0 {
    	range 192.168.38.10 192.168.38.100;
    	option routers 192.168.38.1;
    	option subnet-mask 255.255.255.0;
    	option domain-search "virtual.lan";
    	option domain-name "virtual.lan";
    	option domain-name-servers 8.8.8.8;
    }
    
    omapi-port 7911;
    key omapi_key {
    	algorithm HMAC-MD5;
    	secret "jNSE5YI3H1A8Oj/tkV4...A2ZOHb6zv315CkNAY7DMYYCj48Umw==";
    };
    omapi-key omapi_key;

    请注意,options router 值是您要与外部 DHCP 服务一起使用的 Satellite 或 Capsule IP 地址。

  5. 从在其中创建的目录中删除两个密钥文件。
  6. 在 Satellite 服务器上,定义每个子网。不要为定义的子网设置 DHCP Capsule。

    要防止冲突,请单独设置租期和保留范围。例如,如果租期范围为 192.168.38.10 到 192.168.38.100,在 Satellite Web UI 中将保留范围定义为 192.168.38.101 到 192.168.38.250。

  7. 配置防火墙以从外部访问 DHCP 服务器:

    # firewall-cmd --add-service dhcp \
    && firewall-cmd --runtime-to-permanent
  8. 在 Satellite 服务器上,确定 foreman 用户的 UID 和 GID:

    # id -u foreman
    993
    # id -g foreman
    990
  9. 在 DHCP 服务器上,使用与上一步中确定相同的 ID 创建 foreman 用户和组:

    # groupadd -g 990 foreman
    # useradd -u 993 -g 990 -s /sbin/nologin foreman
  10. 要确保配置文件可以访问,请恢复 read 和 execute 标记:

    # chmod o+rx /etc/dhcp/
    # chmod o+r /etc/dhcp/dhcpd.conf
    # chattr +i /etc/dhcp/ /etc/dhcp/dhcpd.conf
  11. 启动 DHCP 服务:

    # systemctl start dhcpd
  12. 使用 NFS 导出 DHCP 配置和租期文件:

    # yum install nfs-utils
    # systemctl enable rpcbind nfs-server
    # systemctl start rpcbind nfs-server nfs-lock nfs-idmapd
  13. 为您要使用 NFS 导出的 DHCP 配置和租期文件创建目录:

    # mkdir -p /exports/var/lib/dhcpd /exports/etc/dhcp
  14. 要为创建的目录创建挂载点,请在 /etc/fstab 文件中添加以下行:

    /var/lib/dhcpd /exports/var/lib/dhcpd none bind,auto 0 0
    /etc/dhcp /exports/etc/dhcp none bind,auto 0 0
  15. /etc/fstab 中挂载文件系统:

    # mount -a
  16. 确保 /etc/exports 中存在以下行:

    /exports 192.168.38.1(rw,async,no_root_squash,fsid=0,no_subtree_check)
    
    /exports/etc/dhcp 192.168.38.1(ro,async,no_root_squash,no_subtree_check,nohide)
    
    /exports/var/lib/dhcpd 192.168.38.1(ro,async,no_root_squash,no_subtree_check,nohide)

    请注意,您输入的 IP 地址是要用于外部 DHCP 服务的 Satellite 或 Capsule IP 地址。

  17. 重新载入 NFS 服务器:

    # exportfs -rva
  18. 为 DHCP omapi 端口 7911 配置防火墙:

    # firewall-cmd --add-port="7911/tcp" \
    && firewall-cmd --runtime-to-permanent
  19. 可选:配置防火墙以从外部访问 NFS。客户端使用 NFSv3 配置。

    # firewall-cmd --zone public --add-service mountd \
    && firewall-cmd --zone public --add-service rpc-bind \
    && firewall-cmd --zone public --add-service nfs \
    && firewall-cmd --runtime-to-permanent

4.2.2. 使用外部 DHCP 服务器配置 Satellite 服务器

您可以使用外部 DHCP 服务器配置 Capsule 服务器。

前提条件

流程

  1. 安装 nfs-utils 工具:

    # yum install nfs-utils
  2. 为 NFS 创建 DHCP 目录:

    # mkdir -p /mnt/nfs/etc/dhcp /mnt/nfs/var/lib/dhcpd
  3. 更改文件所有者:

    # chown -R foreman-proxy /mnt/nfs
  4. 验证与 NFS 服务器和远程过程调用(RPC)通信路径的通信:

    # showmount -e DHCP_Server_FQDN
    # rpcinfo -p DHCP_Server_FQDN
  5. /etc/fstab 文件中添加以下行:

    DHCP_Server_FQDN:/exports/etc/dhcp /mnt/nfs/etc/dhcp nfs
    ro,vers=3,auto,nosharecache,context="system_u:object_r:dhcp_etc_t:s0" 0 0
    
    DHCP_Server_FQDN:/exports/var/lib/dhcpd /mnt/nfs/var/lib/dhcpd nfs
    ro,vers=3,auto,nosharecache,context="system_u:object_r:dhcpd_state_t:s0" 0 0
  6. /etc/fstab 中挂载文件系统:

    # mount -a
  7. 要验证 foreman-proxy 用户可以访问通过网络共享的文件,请显示 DHCP 配置和租期文件:

    # su foreman-proxy -s /bin/bash
    bash-4.2$ cat /mnt/nfs/etc/dhcp/dhcpd.conf
    bash-4.2$ cat /mnt/nfs/var/lib/dhcpd/dhcpd.leases
    bash-4.2$ exit
  8. 输入 satellite-installer 命令,对 /etc/foreman-proxy/settings.d/dhcp.yml 文件进行以下更改:

    # satellite-installer --foreman-proxy-dhcp=true \
    --foreman-proxy-dhcp-provider=remote_isc \
    --foreman-proxy-plugin-dhcp-remote-isc-dhcp-config /mnt/nfs/etc/dhcp/dhcpd.conf \
    --foreman-proxy-plugin-dhcp-remote-isc-dhcp-leases /mnt/nfs/var/lib/dhcpd/dhcpd.leases \
    --foreman-proxy-plugin-dhcp-remote-isc-key-name=omapi_key \
    --foreman-proxy-plugin-dhcp-remote-isc-key-secret=jNSE5YI3H1A8Oj/tkV4...A2ZOHb6zv315CkNAY7DMYYCj48Umw== \
    --foreman-proxy-plugin-dhcp-remote-isc-omapi-port=7911 \
    --enable-foreman-proxy-plugin-dhcp-remote-isc \
    --foreman-proxy-dhcp-server=DHCP_Server_FQDN
  9. 重启 foreman-proxy 服务:

    # systemctl restart foreman-proxy
  10. 在 Satellite Web UI 中,导航到 Infrastructure > Capsules
  11. 找到 Capsule 服务器,然后从 Actions 列中的列表中选择 Refresh
  12. 将 DHCP 服务与适当的子网和域关联。