34.6. 为信任配置 DNS 和域设置
在您连接信任中的身份管理(IdM)和 Active Directory(AD)之前,您需要确保服务器可以互相看到,并能够正确解析域名。将 DNS 配置为允许在以下服务器之间使用域名:
- 使用集成 DNS 服务器和认证认证机构的主 IdM 服务器。
- 一个 AD Domain Controller。
DNS 设置需要:
- 在 IdM 服务器中配置 DNS 区域
- 在 AD 中配置有条件 DNS 转发
- 验证 DNS 配置的正确性
34.6.1. 唯一的主 DNS 域
在 Windows 中,每个域都是一个 Kerberos 域(realm)和一个 DNS 域(domain)。每个由域控制器管理的域都需要拥有自己的专用 DNS 区。当身份管理(IdM)被 Active Directory(AD)信任为林时也是如此。AD 期望 IdM 有自己的 DNS 域。要使信任设置正常工作,DNS 域需要专用于 Linux 环境。
每个系统都必须配置自己的唯一的主 DNS 域。例如:
-
ad.example.com
用于 AD,Idm.example.com
用于 IdM。 -
example.com
用于 AD,idm.example.com
用于 IdM -
AD的
ad.example.com
和 IdM 的example.com
最方便的管理解决方案是,每个 DNS 域都由集成的 DNS 服务器管理,但也可以使用任何其他符合标准的 DNS 服务器。
- Kerberos realm 名称作为主 DNS 域名的大写版本
-
Kerberos realm 名称必须与主 DNS 域名相同,且所有字母都为大写。例如,如果 AD 的域名是
ad.example.com
,而 IdM的域名是idm.example.com
,则 Kerberos 领域名称必须是AD.EXAMPLE.COM
和IDM.EXAMPLE.COM
。 - DNS 记录可从信任中的所有 DNS 域解析
- 所有机器都必须能够从所有涉及信任关系的 DNS 域解析 DNS 记录。
- IdM 和 AD DNS 域
- 加入 IdM 的系统可以通过多个 DNS 域进行发布。红帽建议您在与 Active Directory 拥有的 DNS 区域中部署 IdM 客户端。主 IdM DNS 域必须具有正确的 SRV 记录来支持 AD 信任。
在 IdM 和 Active Directory 之间具有信任的某些环境中,您可以在作为 Active Directory DNS 域一部分的主机上安装 IdM 客户端。然后,主机可以从基于 Linux 的 IdM 功能中获益。这不是推荐的配置,存在一些限制。如需了解更多详细信息,请参阅在 Active Directory DNS 域中配置 IdM 客户端。
您可以运行以下命令来获取特定于您的系统设置所需的 SRV 记录列表:
$ ipa dns-update-system-records --dry-run
生成的列表可以类似如下:
IPA DNS records: _kerberos-master._tcp.idm.example.com. 86400 IN SRV 0 100 88 server.idm.example.com. _kerberos-master._udp.idm.example.com. 86400 IN SRV 0 100 88 server.idm.example.com. _kerberos._tcp.idm.example.com. 86400 IN SRV 0 100 88 server.idm.example.com. _kerberos._tcp.idm.example.com. 86400 IN SRV 0 100 88 server.idm.example.com. _kerberos.idm.example.com. 86400 IN TXT "IDM.EXAMPLE.COM" _kpasswd._tcp.idm.example.com. 86400 IN SRV 0 100 464 server.idm.example.com. _kpasswd._udp.idm.example.com. 86400 IN SRV 0 100 464 server.idm.example.com. _ldap._tcp.idm.example.com. 86400 IN SRV 0 100 389 server.idm.example.com. _ipa-ca.idm.example.com. 86400 IN A 192.168.122.2
对于同一 IdM 领域一部分的其他 DNS 域,在配置了对 AD 的信任时不需要配置 SRV 记录。原因在于 AD 域控制器不使用 SRV 记录来发现 KDC,而是基于对信任的名称后缀路由信息的 KDC 发现。
34.6.2. 在 IdM Web UI 中配置 DNS 转发区域
按照以下流程,使用 IdM Web UI 将 DNS 转发区域添加到身份管理(IdM)服务器中。
使用 DNS 转发区域,您可以将对特定区域的 DNS 查询转发到不同的 DNS 服务器。例如,您可以将活动目录(AD)域的 DNS 查询转发到 AD DNS 服务器。
先决条件
- 使用具有管理员权限的用户帐户访问 IdM Web UI。
- 正确配置了 DNS 服务器。
流程
- 使用管理员权限登录到 IdM Web UI。详情请参阅 在 Web 浏览器中访问 IdM Web UI。
- 点 Network Services 标签页。
- 点 DNS 标签页。
在下拉菜单中点击 DNS Forward Zones 项。
- 点击 Add 按钮。
- 在 Add DNS forward zone 对话框中,添加一个区名称。
- 在Zone forwarders 项中,点击 Add 按钮。
- 在 Zone forwarders 字段中,添加您要为其创建转发区域的服务器的 IP 地址。
点击 Add 按钮。
正向区已添加到 DNS 设置中,您可以在 DNS Forward Zones 设置中进行验证。Web UI 会用以下弹出消息告诉您是否成功:DNS Forward Zone successfully added.
在向配置中添加转发区域后,Web UI 可能会显示有关 DNSSEC 验证失败的警告。
DNSSEC(域名系统安全扩展)使用数字签名来保护 DNS 数据,使 DNS 免受攻击。在IdM 服务器中默认启用该服务。出现警告的原因是远程 DNS 服务器没有使用 DNSSEC。红帽建议您在远程 DNS 服务器上启用 DNSSEC。
如果您无法在远程服务器上启用 DNSSEC 验证,您可以在 IdM 服务器中禁用 DNSSEC :
选择要编辑的合适的配置文件:
-
如果您的 IdM 服务器使用 RHEL 8.0 或 RHEL 8.1,请打开
/etc/named.conf
文件。 -
如果您的 IdM 服务器使用 RHEL 8.2 或更高版本,请打开
/etc/named/ipa-options-ext.conf
文件。
-
如果您的 IdM 服务器使用 RHEL 8.0 或 RHEL 8.1,请打开
添加以下 DNSSEC 参数:
dnssec-enable no; dnssec-validation no;
- 保存并关闭配置文件。
重启 DNS 服务:
# systemctl restart named-pkcs11
验证
将
nslookup
命令与远程 DNS 服务器名称一起使用:$ nslookup ad.example.com Server: 192.168.122.2 Address: 192.168.122.2#53 No-authoritative answer: Name: ad.example.com Address: 192.168.122.3
如果您正确配置了域转发,则会显示远程 DNS 服务器的 IP 地址。
34.6.3. 在 CLI 中配置 DNS 转发区域
按照以下流程,使用命令行界面(CLI)将新的 DNS 转发区域添加到身份管理(IdM)服务器中。
使用 DNS 转发区域,您可以将对特定区域的 DNS 查询转发到不同的 DNS 服务器。例如,您可以将活动目录(AD)域的 DNS 查询转发到 AD DNS 服务器。
先决条件
- 使用具有管理员权限的用户帐户访问 CLI。
- 正确配置了 DNS 服务器。
流程
为 AD 域创建 DNS 转发区域,并使用
--forwarder
选项指定远程 DNS 服务器的 IP 地址:# ipa dnsforwardzone-add ad.example.com --forwarder=192.168.122.3 --forward-policy=first
在向配置添加新的转发区域后,您可能会在 /var/log/messages
系统日志中看到有关 DNSSEC 验证失败的警告:
named-pkcs11[2572]: no valid DS resolving 'host.ad.example.com/A/IN': 192.168.100.25#53
DNSSEC(域名系统安全扩展)使用数字签名来保护 DNS 数据,使 DNS 免受攻击。在IdM 服务器中默认启用该服务。出现警告的原因是远程 DNS 服务器没有使用 DNSSEC。红帽建议您在远程 DNS 服务器上启用 DNSSEC。
如果您无法在远程服务器上启用 DNSSEC 验证,您可以在 IdM 服务器中禁用 DNSSEC :
选择要编辑的合适的配置文件:
-
如果您的 IdM 服务器使用 RHEL 8.0 或 RHEL 8.1,请打开
/etc/named.conf
文件。 -
如果您的 IdM 服务器使用 RHEL 8.2 或更高版本,请打开
/etc/named/ipa-options-ext.conf
文件。
-
如果您的 IdM 服务器使用 RHEL 8.0 或 RHEL 8.1,请打开
添加以下 DNSSEC 参数:
dnssec-enable no; dnssec-validation no;
- 保存并关闭配置文件。
重启 DNS 服务:
# systemctl restart named-pkcs11
验证
将
nslookup
命令与远程 DNS 服务器名称一起使用:$ nslookup ad.example.com Server: 192.168.122.2 Address: 192.168.122.2#53 No-authoritative answer: Name: ad.example.com Address: 192.168.122.3
如果正确配置了域转发,
nslookup
请求会显示远程 DNS 服务器的 IP 地址。
34.6.4. 在 AD 中配置 DNS 转发
按照以下流程,在活动目录(AD)中为身份管理(IdM)服务器设置 DNS 转发。
先决条件
- 已安装 AD 的 Windows Server。
- 在两个服务器中打开 DNS 端口。
流程
- 登录到 Windows 服务器。
- 打开 Server Manager。
- 打开 DNS Manager。
在 Conditional Forwarders 中,使用以下内容添加新的条件正向解析器:
- IdM 服务器 IP 地址
-
完全限定域名,例如
server.idm.example.com
- 保存设置。
34.6.5. 验证 DNS 配置
在配置信任前,请验证身份管理(IdM)和 Active Directory(AD)服务器是否可以相互解析。
先决条件
- 您需要以 sudo 权限登录。
流程
对通过 UDP 的 Kerberos 和通过 TCP 服务记录的 LDAP 运行 DNS 查询。
[admin@server ~]# dig +short -t SRV _kerberos._udp.idm.example.com. 0 100 88 server.idm.example.com. [admin@server ~]# dig +short -t SRV _ldap._tcp.idm.example.com. 0 100 389 server.idm.example.com.
这些命令应该列出所有 IdM 服务器。
使用 IdM Kerberos 域名称对 TXT 记录运行 DNS 查询。获得的值应该与您在安装 IdM 时指定的 Kerberos 域匹配。
[admin@server ~]# dig +short -t TXT _kerberos.idm.example.com. "IDM.EXAMPLE.COM"
如果前面的步骤没有返回所有预期的记录,请使用缺失的记录更新 DNS 配置:
如果您的 IdM 环境使用集成的 DNS 服务器,请输入不带任何选项的
ipa dns-update-system-records
命令,来更新您的系统记录:[admin@server ~]$ ipa dns-update-system-records
如果您的 IdM 环境没有使用集成的 DNS 服务器:
在 IdM 服务器中,将 IdM DNS 记录导出到文件中:
[admin@server ~]$ ipa dns-update-system-records --dry-run --out dns_records_file.nsupdate
该命令使用相关的 IdM DNS 记录创建一个名为 dns_records_file.nsupdate 的文件。
-
使用
nsupdate
工具和 dns_records_file.nsupdate 文件向 DNS 服务器提交 DNS 更新请求。如需更多信息,请参阅 RHEL 7 文档中的 使用 nsupdate 更新外部 DNS 记录。或者,请参阅 DNS 服务器文档来添加 DNS 记录。
验证 IdM 能够通过一个命令来解析 AD 的服务记录,该命令对 Kerberos 和通过 TCP 服务记录的 LDAP 运行 DNS 查询:
[admin@server ~]# dig +short -t SRV _kerberos._tcp.dc._msdcs.ad.example.com. 0 100 88 addc1.ad.example.com. [admin@server ~]# dig +short -t SRV _ldap._tcp.dc._msdcs.ad.example.com. 0 100 389 addc1.ad.example.com.