インフラ作業支援ラボInfra Support Lab← ガイド一覧← 戻る

systemd-resolvedとresolv.confの確認方法|resolvectl・127.0.0.53・DNS設定

LinuxのDNS設定を確認するときに、/etc/resolv.confsystemd-resolvedresolvectlの関係を整理します。127.0.0.53を見て誤設定と決めつけたり、管理元を確認せずresolv.confを直接編集したりしないための確認手順です。

先に確認すること

ls -l /etc/resolv.confでsymlink先を確認し、systemctl is-active systemd-resolvedresolvectl statusで実効DNSを確認します。

127.0.0.53は即異常ではない

systemd-resolvedのstub resolver構成では、/etc/resolv.conf127.0.0.53を指すことがあります。実際の上流DNSサーバーはresolvectl statusなどで確認します。

最短の確認手順

ls -l /etc/resolv.conf cat /etc/resolv.conf systemctl is-active systemd-resolved resolvectl status

まず「ファイルの中身」だけでなく、誰がDNS設定を管理しているかを確認します。DHCP、NetworkManager、systemd-networkd、VPNソフトウェアなどからリンク単位のDNS情報が渡される環境があります。

/etc/resolv.confで見る項目

cat /etc/resolv.conf
項目意味
nameserver問い合わせ先resolver
search短い名前へ付加される検索ドメイン候補
optionsndotsなどresolver動作のオプション
直接編集する前に:/etc/resolv.confは自動生成される場合があります。直接編集して一時的に直っても、再接続・DHCP更新・再起動で戻ることがあります。

systemd-resolvedを使っているか確認する

systemctl status systemd-resolved resolvectl status

systemd-resolvedは、グローバル設定だけでなくリンク単位のDNSサーバー・検索/ルーティングドメインを扱えます。VPNや複数NICでは、問い合わせる名前によって利用リンクが変わる場合があります。

resolvectlで実効DNSを確認する

resolvectl status resolvectl query example.com resolvectl dns resolvectl domain

statusではリンクごとのDNS設定、queryではsystemd-resolved経由の実際の名前解決を確認できます。利用できるサブコマンドはsystemdのバージョンにより差があるため、必要に応じてresolvectl --helpも確認します。

127.0.0.53とresolv.confの管理方式

systemd-resolvedではstub resolverを利用する構成があり、その場合/etc/resolv.confnameserver127.0.0.53になることがあります。これはローカルstubへの問い合わせ先であり、上流DNSそのものではありません。

ls -l /etc/resolv.conf readlink -f /etc/resolv.conf resolvectl status

symlink先が/run/systemd/resolve/配下か、他のサービスが生成したファイルかを確認します。環境によってはsystemd-resolvedを使わず、別のネットワーク管理サービスがresolv.confを管理します。

NetworkManager・DHCP・VPNとの関係

DNSサーバーの設定元はOSや構成によって異なります。NetworkManager、systemd-networkd、DHCPクライアント、VPNクライアントなどがDNS情報を設定する場合があります。

# NetworkManager利用環境の例 nmcli connection show nmcli device show | grep -E 'IP4.DNS|IP6.DNS|DOMAIN'
固定化しない:NetworkManagerを使わない環境もあります。コマンドが存在しないから異常という意味ではありません。現在使っているネットワーク管理方式を先に確認します。

DNS設定を変更する前のチェック

名前解決できないときの次の確認

確認結果次に進む場所
resolvectl query成功・getent失敗NSS・nsswitch.confを確認
resolvectl query失敗リンクDNS、ルーティングドメイン、上流DNSを確認
dig @DNS成功・通常問い合わせ失敗現在選ばれるresolver・DNSルートを確認
DNS応答がNXDOMAIN/SERVFAILdig statusの切り分け
ゴール:resolv.confの中身だけを見るのではなく、DNS設定の管理元・systemd-resolvedのリンク情報・実際の問い合わせ結果をセットで確認します。

参考資料

DNS名前解決の全体切り分けへ戻る

どの確認から始めるか迷う場合は、getent・resolver・DNSサーバー・通信経路を順番に確認します。

DNSトラブル全体を見る