URAMIRAIKAN

1020のなれの果て (since 2005.6.19)

LDAPでhostsでの名前解決

 ちょっと間が空いてしまいましたが、以前の389-dsからの流れでメモです。

 LDAPに"/etc/hosts"に相当する情報を格納して名前解決する方法のRHEL9版で、サーバ側というよりクライアント側の話ですね。
 RHEL8までは"nslcd"を使ってやることが多かったのですが、RHEL9では廃止されているのでsssdでやりましょうということです。

 環境は以前の389-dsを踏襲です。

 まずサーバ側ですが、こちらは特に何ということはなく、以下のようなLDIFを投入するだけです("ldapadd"は省略)。

dn: ou=Hosts,dc=example,dc=com objectClass: top objectClass: organizationalUnit ou: Hosts dn: cn=gw,ou=Hosts,dc=example,dc=com objectClass: ipHost objectClass: device objectClass: top cn: gw ipHostNumber: 172.16.11.254

 前段はhosts格納用のOUを作っているだけで、メインは後段ですが、こちらもIPアドレス"172.16.11.254"に対応するホスト名"gw"を定義しているだけですね。

 クライアント側は"sssd.conf"に"resolver_provider"を設定するのが本来のやり方だと思うのですが、Man Pageには以下のような記載がありました。

resolver_provider (string)
    The provider which should handle hosts and networks lookups. Supported resolver providers are:

    “proxy” to forward lookups to another NSS library. See “proxy_resolver_lib_name”

    “ldap” to fetch hosts and networks stored in LDAP. See sssd-ldap(5) for more information on configuring LDAP.

    “ad” to fetch hosts and networks stored in AD. See sssd-ad(5) for more information on configuring the AD provider.

    “none” disallows fetching hosts and networks explicitly.

    Default: The value of “id_provider” is used if it is set.

 つまりデフォルトだと"id_provider"の値を用いるということですね。
 以前のクライアント設定で"id_provider = ldap"が既に設定してあるので、ここは特に変更不要ということになりました。

 もう一つの設定は"/etc/nsswitch.conf"で、こちらは"hosts"行に"sss"を追加してやります。

hosts: files dns myhostname sss

 これで設定が完了したので、次の例のように"hosts"が引けるようになっているはずです。

# getent hosts gw
172.16.11.254 gw
# ping gw
PING gw (172.16.11.254) 56(84) bytes of data.

(以下省略)

 以上です。
 LDAPで名前解決するくらいならDNS使えと思うのですが、なかなかそうもいかないユーザーさんもいたりするので。