33.10. 使用外部 DNS 时系统性更新 DNS 记录
在使用外部 DNS 时,身份管理不会在拓扑更改后自动更新 DNS 记录。以下流程解释了如何系统地更新由外部 DNS 服务管理的 DNS 记录,从而减少了手动 DNS 更新的需求。
有关基本概述请查看 第 33.10.1 节 “在身份管理中更新外部 DNS”。
有关流程和示例,请参阅:
- 第 33.10.2 节 “GUI:更新外部 DNS 记录” 如果您使用 GUI 管理外部 DNS 记录
- 第 33.10.3 节 “命令行:使用
nsupdate
更新外部 DNS 记录” 如果您使用nsupdate
工具管理外部 DNS 记录
33.10.1. 在身份管理中更新外部 DNS
更新 DNS 记录会删除旧的或无效的 DNS 记录并添加新记录。
您必须在拓扑更改后更新 DNS 记录,例如:
- 安装或卸载副本后
- 在身份管理服务器中安装 CA、DNS、KRA 或 Active Directory 信任后
33.10.2. GUI:更新外部 DNS 记录
- 显示您必须更新的记录。使用 ipa dns-update-system-records --dry-run 命令。
$ ipa dns-update-system-records --dry-run IPA DNS records: _kerberos-master._tcp.example.com. 86400 IN SRV 0 100 88 ipa.example.com. _kerberos-master._udp.example.com. 86400 IN SRV 0 100 88 ipa.example.com. [... output truncated ...]
- 使用外部 DNS GUI 更新记录。
33.10.3. 命令行:使用 nsupdate
更新外部 DNS 记录
这部分论述了如何使用
nsupdate
工具手动更新外部 DNS 记录。您也可以使用脚本中本节中的命令来自动化此过程。
使用 nsupdate
的 DNS 记录生成文件
- 使用带有
--out
选项的 ipa dns-update-system-records --dry-run 命令。选项指定要生成的文件路径:$ ipa dns-update-system-records --dry-run --out dns_records_file.nsupdate IPA DNS records: _kerberos-master._tcp.example.com. 86400 IN SRV 0 100 88 ipa.example.com. _kerberos-master._udp.example.com. 86400 IN SRV 0 100 88 ipa.example.com. [... output truncated ...]
生成的文件包含nsupdate
工具接受的格式所需的 DNS 记录。 - 生成的记录依赖于:
- 自动检测要更新记录的区域
- 自动检测区域的权威服务器
如果您使用 atypical DNS 设置,或者缺少区域委派,nsupdate
可能无法找到正确的区域和服务器。在这种情况下,在生成的文件开头添加以下选项:server
指定nsupdate
将记录发送到的权威 DNS 服务器的服务器名称或端口zone
指定nsupdate
放置记录的区域名称
Example:$ cat dns_records_file.nsupdate zone example.com. server 192.0.2.1 ; IPA DNS records update delete _kerberos-master._tcp.example.com. SRV update add _kerberos-master._tcp.example.com. 86400 IN SRV 0 100 88 ipa.example.com. [... output truncated ...]
将动态 DNS 更新请求提交到名称服务器
使用
nsupdate
发送请求时,请确保正确保护它。您可以使用以下机制保护请求:
- 事务签名(TSIG)协议
- TSIG 可让您将
nsupdate
与共享密钥搭配使用。请参阅 过程 33.1, “使用 TSIG 发送nsupdate
请求安全”。 - TSIG 的 GSS 算法(GSS-TSIG)
- GSS-TSIG 使用 GSS-API 接口来获取 secret TSIG 密钥。GSS-TSIG 是 TSIG 协议的扩展。请查看 过程 33.2, “使用 GSS-TSIG 发送
nsupdate
请求安全”
过程 33.1. 使用 TSIG 发送 nsupdate
请求安全
- 请确定您满足以下先决条件:
- 运行
nsupdate
,并使用以下选项之一提供共享 secret:-k
提供 TSIG 身份验证密钥:$ nsupdate -k tsig_key.file dns_records_file.nsupdate
-Y
从密钥名称和 Base64 编码的共享 secret 中生成签名:$ nsupdate -y algorithm:keyname:secret dns_records_file.nsupdate
过程 33.2. 使用 GSS-TSIG 发送 nsupdate
请求安全
- 请确定您满足以下先决条件:注意此流程假定 Kerberos V5 协议用作 GSS-API 的技术。
- 要提交 DNS 更新请求,请使用允许更新记录的主体进行身份验证,并使用
-g
选项运行nsupdate
来启用 GSS-TSIG 模式:$ kinit principal_allowed_to_update_records@REALM $ nsupdate -g dns_records_file.nsupdate