11.2.17. ドメインオプション: DNS Service Discovery の使用

RFC 2782 で定義されている DNS service discovery は、アプリケーションが特定の種類の特定のサービスについてあるドメイン内の SRV 記録をチェックできるようにします。そして、この種類のサービスが発見されたサーバーを返します。
SSSD では、ID プロバイダーと認証プロバイダーは (IP アドレスかホスト名で) 明示的に定義されるか、service discovery を使って動的に発見することができます。id_provider = ldap が対応する ldap_uri パラメーターなしに設定されるなど、プロバイダーサーバーが一覧表示されない場合は、discovery が自動的に使われます。
DNS discovery クエリは、以下の形式になります。
_service._protocol.domain
例えば、example.com ドメインで TCP を使って LDAP サーバーをスキャンするには、以下のようになります。
_ldap._tcp.example.com

注記

service discovery を使用するサービスには、特別の DNS レコードを DNS サーバーに追加します:
_service._protocol._domain TTL priority weight port hostname
SSSD では、サービスの種類はデフォルトで LDAP で、ほとんどすべてのサービスが TCP を使用します (UDP で開始する Kerberos を除く)。service discovery を有効にするには、ドメイン名のみが必要です。デフォルトでは、マシンのホスト名のドメイン部分を使用しますが、別のドメインを指定することもできます(dns_discovery_domain パラメーターを使用)。
このため、1 つの例外を除いては、デフォルトでは service discovery に新たな設定を加える必要はありません。パスワード変更プロバイダーはデフォルトで server discovery が無効になっており、サービスの種類を設定して明示的に有効にする必要があります。
[domain/EXAMPLE]
...
chpass_provider = ldap
ldap_chpass_dns_service_name = ldap
設定は不要ですが、異なる DNS ドメイン (dns_discovery_domain) を使ったり、スキャンに異なるサービスの種類を設定したりすることで、server discovery はカスタマイズが可能です。例えば、以下のようになります。
[domain/EXAMPLE]
id _provider = ldap

dns_discovery_domain = corp.example.com
ldap_dns_service_name = ldap

chpass_provider = krb5
ldap_chpass_dns_service_name = kerberos
最後に、service discovery はバックアップサーバーと使われることは決してありません。これは、プロバイダーのためにプライマリーサーバーと使われるものです。つまり、ディスカバリはまずサーバーの位置を確認するために使われ、その後に SSSD がバックアップサーバーの使用に戻ります。ディスカバリをプライマリーサーバーに使用するには、_srv_ をプライマリーサーバーの値として使用し、その後にバックアップサーバーを一覧表示します。以下に例を挙げます。
[domain/EXAMPLE]
id _provider = ldap
ldap_uri = _srv_
ldap_backup_uri = ldap://ldap2.example.com

auth_provider = krb5
krb5_server = _srv_
krb5_backup_server = kdc2.example.com

chpass_provider = krb5
ldap_chpass_dns_service_name = kerberos
ldap_chpass_uri = _srv_
ldap_chpass_backup_uri = kdc2.example.com

注記

サービスディスカバリは、バックアップサーバーでは使用できません。プライマリーサーバーのみとなります。
DNS ルックアップがホスト名の IPv4 アドレスを返すことに失敗した場合、SSSD は失敗を返す前に IPv6 アドレスのルックアップを試みます。これにより確実に非同期のリゾルバーが正しいアドレスを識別するようになります。
ホスト名解決動作は、sssd.conf 設定ファイルの lookup family order オプションで設定します。