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関連の公式ドキュメントで確認できます。




