第 29 章 使用 Ansible 来管理 IdM 中的 DNS 位置

作为身份管理(IdM)管理员,您可以使用 ansible-freeipa 软件包中提供的 location 模块来管理 IdM DNS 位置。

29.1. 基于 DNS 的服务发现

基于 DNS 的服务发现是一个进程,客户端在其中使用 DNS 协议来在提供特定服务(如 LDAPKerberos)的网络中查找服务器。一种典型的操作是允许客户端在最接近的网络基础架构内查找身份验证服务器,因为它们提供更高的吞吐量和较低的网络延迟,从而降低了总体成本。

服务发现的主要优点是:

  • 无需使用附近服务器的名称明确配置客户端。
  • DNS 服务器用作策略的中心提供者。使用同一 DNS 服务器的客户端有权访问关于服务提供者的同一策略,及其首选顺序。

在身份管理(IdM)域中,存在 LDAPKerberos 及其他服务的 DNS 服务记录(SRV 记录)。例如,以下命令查询在 IdM DNS 域中提供基于 TCP 的 Kerberos 服务的主机的 DNS 服务器:

例 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 具有更高的优先级,因此仅在首选主机不可用的情况下用作备份。