Linux / コマンド / resolvectl - systemdのDNS設定と名前解決の状態確認

resolvectlは、名前解決を担当するsystemd-resolvedサービスのDNS(Domain Name System)設定と照会結果を確認するツールです。システムがsystemd-resolvedを使う環境で、問い合わせ先や名前解決の問題を調べられます。

ネットワークのリンク(インターフェース)ごとにDNSサーバーやドメインを設定できます。VPN(仮想プライベートネットワーク)などでは、ドメインに応じて問い合わせ先を分ける分割DNSを使う場合があります。statusは現在有効な設定、queryはsystemd-resolvedを通した名前解決結果を表示します。

基本的な文法

resolvectl [コマンド] [名前またはリンク]

インストールされている実装とオプションは、配布版によって異なる場合があります。man resolvectlで現在のシステムの説明を確認してください。

使用例

DNS設定確認

全体とインターフェースごとのDNSサーバー・ドメイン情報を読み取ります。

resolvectl status

名前解決テスト

example.comを調べたい名前に置き換えます。結果にはアドレスのほか、解決に使ったプロトコルやリンクなどが表示されます。キャッシュやローカルの情報で解決する場合もあるため、必ず外部DNSサーバーへ新しい問い合わせを送るわけではありません。特定サーバーへ直接問い合わせる方法は、digによるDNSレコードの確認で説明しています。

resolvectl query example.com

照会統計確認

キャッシュと処理関連の統計を確認します。

resolvectl statistics

システムDNSとインターフェースDNSを区別する

resolvectl statusは systemd-resolved が管理するDNSサーバー、ドメイン、インターフェースごとの設定を表示します。

resolvectl status

例の出力の一部(サーバーアドレスは説明用の値):

Global
    Current DNS Server: 192.0.2.53
Link 2 (eth0)
    DNS Servers: 192.0.2.53

グローバル設定とリンクごとの設定が同時にある場合、クエリで実際に使用されるサーバーはドメインルーティングルールによって異なる可能性があります。resolvectl query example.comで検索結果を確認してください。systemd-resolvedを使用していないディストリビューションでは、コマンドがないか、現在のDNS構成と一致しない場合があります。

主なオプションと形式

オプション・形式 説明
status 全体およびリンクごとのDNS設定を表示します。
query 名前 ホスト名またはアドレスを解決します。
statistics DNS検索統計を表示します。
dns [リンク] サーバー引数なしならDNSサーバーを表示し、サーバーを追加指定するとそのリンクの設定を変更します。
domain [リンク] 検索・ルーティングドメインを確認または設定します。
flush-caches systemd-resolvedが保持するローカルのDNSキャッシュを消去します。ブラウザや上流DNSのキャッシュを消す操作ではありません。

使用する際の注意点

resolvectl dns インターフェース サーバーのように設定を変更するとDNSクエリの経路が変わる可能性があるため、参照と変更を区別してください。実行時の設定はNetworkManagerなどが再適用したり、リンクが消えた際に失われたりする場合があります。変更前に現在の値を記録し、永続化は利用しているネットワーク管理サービスの設定で行います。/etc/resolv.confの内容だけで実際の分割DNSポリシー全体を判断しないでください。

よくある質問

resolvectlコマンドがない場合や動作しない場合は?

systemd-resolvedを使わない構成か、サービスが動作していない場合があります。systemctl status systemd-resolvedなどでサービスの状態を確認する方法は、systemctlによるサービス状態の確認を参照してください。現在のDNS管理方法と/etc/resolv.confの参照先も確認します。

公式ドキュメント

オプションの正確な動作や実装ごとの差はresolvectl関連の公式ドキュメントで確認できます。