13.2.18. ドメインオプション: DNS サービス検出の使用
RFC 2782 で定義された DNS サービス検出により、アプリケーションが特定タイプの特定サービスに対して指定のドメインの SRV レコードを確認でき、そのタイプで検出されたサーバーが返されます。
SSSD では、ID プロバイダーおよび認証プロバイダーは(IP アドレスまたはホスト名で)明示的に定義するか、サービス検出を使用して動的に検出できます。プロバイダーサーバーが一覧にない場合は(たとえば、id_provider = ldap に対応する ldap_uri パラメーターなしで設定されている場合)、検出は自動的に使用されます。
DNS 検出クエリーの形式は以下のとおりです。
_service._protocol.domain
たとえば、example.com ドメインで TCP を使用して LDAP サーバーのスキャンは以下のようになります。
_ldap._tcp.example.com
注記
サービス検出を使用するすべてのサービスについて、特別な DNS レコードを DNS サーバーに追加します。
_service._protocol._domain TTL priority weight port hostname
SSSD の場合、サービス種別はデフォルトで LDAP であり、ほぼすべてのサービスは TCP を使用します(ただし、UDP で開始する Kerberos を除く)。サービス検出を有効にするには、ドメイン名のみが必要になります。デフォルトではマシンホスト名のドメイン部分を使用しますが、別のドメインを指定することもできます( dns_discovery_domain パラメーターを使用)。
そのため、デフォルトでは 1 つの例外を除き、サービス検出に追加の設定を行う必要はありません。パスワード変更プロバイダーはデフォルトでサーバー検出が無効になり、サービスタイプを設定して明示的に有効にする必要があります。
[domain/EXAMPLE] ... chpass_provider = ldap ldap_chpass_dns_service_name = ldap
設定は必要ありませんが、別の DNS ドメイン(dns_discovery_domain)を使用するか、スキャンする別のサービスタイプを設定してサーバー検出をカスタマイズすることができます。以下に例を示します。
[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
最後に、サービス検出はバックアップサーバーでは使用されません。これは、プロバイダーのプライマリーサーバーにのみ使用されます。つまり、検出を使用して最初にサーバーを特定でき、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
オプションで設定されます。