第 29 章 使用 Ansible 管理 IdM 中的 DNS 位置
作为 Identity Management(IdM)管理员,您可以使用 ansible-freeipa
软件包中的 location
模块来管理 IdM DNS 位置。
29.1. 基于 DNS 的服务发现
基于 DNS 的服务发现过程是一个进程,客户端使用 DNS 协议在提供特定服务(如 LDAP
或 Kerberos
)的网络中查找服务器。一种典型的操作是允许客户端在最接近的网络基础架构内找到身份验证服务器,因为它们提供更高的吞吐量并降低网络延迟,从而降低整体成本。
服务发现的主要优点是:
- 不需要为客户端使用近似服务器名称显式配置。
- DNS 服务器用作策略的中央提供程序。使用相同 DNS 服务器的客户端可以访问与服务提供商及其首选顺序相同的策略。
在 Identity Management(IdM)域中,LDAP
、Kerberos
和其他服务都存在 DNS 服务记录(SRV 记录)。例如,以下命令查询 DNS 服务器以获取在 IdM DNS 域中提供基于 TCP 的 Kerberos
服务的主机:
例 29.1. DNS 位置独立结果
$ dig -t SRV +short _kerberos._tcp.idm.example.com
0 100 88 idmserver-01.idm.example.com.
0 100 88 idmserver-02.idm.example.com.
输出包含以下信息:
-
0
(优先级):目标主机的优先级。一个较低的值是首选的。 -
100
(权重).为具有相同优先级的条目指定一个相对权重。如需更多信息,请参阅 RFC 2782,第 3 节。 -
88
(端口号):服务的端口号。 - 提供该服务的主机的规范名称。
在示例中,返回的两个主机名具有相同的优先级和权重。在这种情况下,客户端使用结果列表中的随机条目。
当客户端改为时,配置为查询在 DNS 位置中配置的 DNS 服务器,输出会有所不同。对于分配给位置的 IdM 服务器,返回定制的值。在以下示例中,客户端配置为查询位置 germany
中的 DNS 服务器:
例 29.2. 基于 DNS 位置的结果
$ dig -t SRV +short _kerberos._tcp.idm.example.com
_kerberos._tcp.germany._locations.idm.example.com.
0 100 88 idmserver-01.idm.example.com.
50 100 88 idmserver-02.idm.example.com.
IdM DNS 服务器自动返回一个 DNS 别名(CNAME),指向首选本地服务器的 DNS 位置特定 SRV 记录。此 CNAME 记录显示在输出的第一行中。在示例中,主机 idmserver-01.idm.example.com 具有最低优先级值,因此首选。idmserver-02.idm.example.com 具有更高的优先级,因此仅在首选主机不可用时用作备份。