systemd-resolvedとresolv.confの確認方法|resolvectl・127.0.0.53・DNS設定
LinuxのDNS設定を確認するときに、/etc/resolv.conf・systemd-resolved・resolvectlの関係を整理します。127.0.0.53を見て誤設定と決めつけたり、管理元を確認せずresolv.confを直接編集したりしないための確認手順です。
先に確認すること
ls -l /etc/resolv.confでsymlink先を確認し、systemctl is-active systemd-resolvedとresolvectl statusで実効DNSを確認します。
127.0.0.53は即異常ではない
systemd-resolvedのstub resolver構成では、/etc/resolv.confが127.0.0.53を指すことがあります。実際の上流DNSサーバーはresolvectl statusなどで確認します。
最短の確認手順
まず「ファイルの中身」だけでなく、誰がDNS設定を管理しているかを確認します。DHCP、NetworkManager、systemd-networkd、VPNソフトウェアなどからリンク単位のDNS情報が渡される環境があります。
/etc/resolv.confで見る項目
| 項目 | 意味 |
|---|---|
nameserver | 問い合わせ先resolver |
search | 短い名前へ付加される検索ドメイン候補 |
options | ndotsなどresolver動作のオプション |
/etc/resolv.confは自動生成される場合があります。直接編集して一時的に直っても、再接続・DHCP更新・再起動で戻ることがあります。systemd-resolvedを使っているか確認する
systemd-resolvedは、グローバル設定だけでなくリンク単位のDNSサーバー・検索/ルーティングドメインを扱えます。VPNや複数NICでは、問い合わせる名前によって利用リンクが変わる場合があります。
resolvectlで実効DNSを確認する
statusではリンクごとのDNS設定、queryではsystemd-resolved経由の実際の名前解決を確認できます。利用できるサブコマンドはsystemdのバージョンにより差があるため、必要に応じてresolvectl --helpも確認します。
127.0.0.53とresolv.confの管理方式
systemd-resolvedではstub resolverを利用する構成があり、その場合/etc/resolv.confのnameserverが127.0.0.53になることがあります。これはローカルstubへの問い合わせ先であり、上流DNSそのものではありません。
symlink先が/run/systemd/resolve/配下か、他のサービスが生成したファイルかを確認します。環境によってはsystemd-resolvedを使わず、別のネットワーク管理サービスがresolv.confを管理します。
NetworkManager・DHCP・VPNとの関係
DNSサーバーの設定元はOSや構成によって異なります。NetworkManager、systemd-networkd、DHCPクライアント、VPNクライアントなどがDNS情報を設定する場合があります。
DNS設定を変更する前のチェック
/etc/resolv.confが通常ファイルかsymlinkか- systemd-resolvedがactiveか
- DNSがグローバル設定かリンク単位か
- DHCPやVPNからDNSが配布されていないか
- 変更後に自動生成で上書きされないか
- 変更前の
resolvectl statusを保存したか
名前解決できないときの次の確認
| 確認結果 | 次に進む場所 |
|---|---|
resolvectl query成功・getent失敗 | NSS・nsswitch.confを確認 |
resolvectl query失敗 | リンクDNS、ルーティングドメイン、上流DNSを確認 |
dig @DNS成功・通常問い合わせ失敗 | 現在選ばれるresolver・DNSルートを確認 |
| DNS応答がNXDOMAIN/SERVFAIL | dig statusの切り分け |
resolv.confの中身だけを見るのではなく、DNS設定の管理元・systemd-resolvedのリンク情報・実際の問い合わせ結果をセットで確認します。