/etc/nsswitch.confのhosts database設定に従い、filesやdns等を通してapp.example.testを解決する。
DNSだけへ直接queryするのではない。
適切なコマンドはどれか。
getent hosts KEYはNSSのhosts databaseを検索するため、nsswitch.confのservice順を含むapplication側の名前解決経路を確認できる。
詳細解説
getent hosts app.example.testNSSのhosts databaseから指定keyを検索する。
正しい。getentはhosts databaseに対してnsswitch.confで設定されたfiles、dns等のserviceを利用する。
dig app.example.test ADNS queryを行いNSSのfiles順等を通さない。
誤り。digはDNS serverへ直接queryするため、NSSのfiles serviceによる/etc/hosts lookup等を再現しない。
grep app.example.test /etc/resolv.confresolver設定file内を検索するだけで名前解決しない。
誤り。resolv.conf内に対象nameが書かれているとは限らず、grepはresolver lookupを実行しない。
hostname app.example.testhostnameの表示・変更toolでNSS database検索ではない。
誤り。hostnameへnameを渡す操作はhost名変更になり得て、NSS lookupではない。
実際に確かめる
一時的な検証環境で実行できる例です。
printf '%s
' 'getent hosts NAME -> NSS hosts database lookup'期待される結果
getent hosts NAME -> NSS hosts database lookup理解のポイント
- getentはNSSを使用
- hosts database
- digとの経路差
確認時の注意
- 確認環境: getent動作対応表(名前解決なし)
基礎のおさらい
NSS
Name Service Switchはdatabaseごとにfiles、dns、systemd等の情報源と評価順を選ぶ。
application再現
applicationの名前解決問題を調べるときは、DNS toolだけでなくgetentでNSS経路も確認する。