| Works
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には以下のような記載がありました。
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"が引けるようになっているはずです。
172.16.11.254 gw
# ping gw
PING gw (172.16.11.254) 56(84) bytes of data.
(以下省略)
以上です。
LDAPで名前解決するくらいならDNS使えと思うのですが、なかなかそうもいかないユーザーさんもいたりするので。