LinuxのフラッシュDNS:SystemD-Resolved、NetworkManager、およびNSCD

公開: 2025-09-26

LinuxシステムがWebサイトにアクセスしているときに奇妙に動作したり、誤ったドメインを解決したりすると、DNSキャッシュを洗い流す時が来るかもしれません。ブラウザのキャッシュと同様に、DNSキャッシュは、Webブラウジングの速度を改善し、遅延を減らすのに役立つ一時データを保存します。ただし、このキャッシュが時代遅れまたは破損すると、接続性の問題につながる可能性があります。これは、ドメイン名が頻繁に変更される開発またはネットワーキングシナリオで特に重要です。この記事では、SystemD-ResolvedNetworkManager、またはNSCD (Name Service Cache Daemon)を使用するLinuxシステムでDNSキャッシュをフラッシュする方法について説明します。

LinuxでのDNSキャッシュの理解

DNSキャッシュは、DNSルックアップをローカルに保存するメカニズムです。これにより、同じドメイン名の繰り返しのクエリがDNSサーバーにresすることを防ぎ、パフォーマンスを向上させることができます。ただし、Linuxは、使用中のシステムコンポーネントまたはサービスに応じて、DNS解像度の責任を異なる方法で分配します。

現代の分布では、次のリゾルバーシステムのいずれかに遭遇する可能性が最も高くなります。

  • SystemD-forSolved:Ubuntu 18.04+やFedoraなどの新しい分布で一般的です。
  • NetworkManager:多くの場合、SystemD-Resolvedまたは別のバックエンドで動作します。
  • NSCD(名前サービスキャッシュデーモン):従来のUNIXおよびエンタープライズLinuxシステムで見つかりました。

これらの各システムは、DNSキャッシングを異なる方法で処理します。つまり、キャッシュをフラッシュする方法もさまざまです。それぞれを詳細に歩きましょう。

Systemd-forSolvedのDNSキャッシュをフラッシングします

SystemD-Resolvedは、 DNSクエリとキャッシュを管理するためにSystemDが提供するサービスです。多くの主流のLinux分布で標準になりつつあります。システムが実行されてSystemD-forSolvedを使用するかどうかを確認できます。

 systemctl is-active systemd-resolved

アクティブな場合は、次のコマンドでDNSキャッシュをフラッシュします。

 sudo systemd-resolve --flush-caches

キャッシュがクリアされていることを確認したり、現在の統計を表示したりするには、以下を使用できます。

 systemd-resolve --statistics

このコマンドは、キャッシュエントリの数、ヒット、ミスなどのメトリックを表示し、キャッシュフラッシングが成功したことを確認するのに役立ちます。

SystemD-ISSOLVED構成とデバッグ

上級ユーザーの場合、サービスの構成は/etc/systemd/resolved.confにあります。 DNSサーバーやフォールバックの動作などの設定を調整できます。永続的なDNSの問題が発生した場合は、SystemD-FORSOLVEDjournalctlログをチェックすることを検討してください。

 journalctl -u systemd-resolved

これは、DNSの誤解やキャッシュ中毒に起因するドメイン解像度の問題のトラブルシューティングの場合、非常に役立ちます。

NetworkManagerを使用してDNSを更新します

NetworkManagerは、GNOMEやKDEなどのデスクトップ環境など、多くのLinux分布でネットワーク構成を自動的に処理するユーティリティです。 NetworkManager自体はDNSをキャッシュしませんが、多くの場合、どのサービス(SystemD-Foolvedのような)がDNSを処理するかを決定します。

NetworkManagerを使用してDNS設定を更新するには、サービスを再起動できます。

 sudo systemctl restart NetworkManager

この方法は、接続と関連サービスを再起動することにより、間接的にDNSの再解決を強制します。より詳細な粒度を取得したい場合は、特定のネットワークインターフェイスを無効にして再度可能にすることもできます。例えば:

 nmcli networking off nmcli networking on

または、特定のデバイスの場合:

 nmcli device disconnect eth0 nmcli device connect eth0

この方法は、DNSが変更された後にネットワークを切り替えたり、ドメイン伝播の問題を解決する場合に特に役立ちます。

NMCLIでDNS設定を検査します

ネットワークマネージャーが使用しているDNSを検査したい場合は、コマンドを次のようにします。

 nmcli dev show | grep DNS

現在アクティブなDNSアドレスがリストされます。これは、DHCPまたは静的アドレス指定が正しく適用されることを確認する場合に役立ちます。

NSCDでDNSをフラッシングする(名前サービスキャッシュデーモン)

最新のデスクトップLinuxシステムではあまり一般的ではありませんが、 NSCDはエンタープライズ環境およびレガシー環境で依然として使用されています。ホスト名、パスワード、およびその他のデータベースオブジェクトの解像度を高速化するために、サービス要求に名前をキャッシュします。まず、インストールされて実行されていることを確認してください。

 sudo systemctl status nscd

アクティブな場合は、DNSキャッシュをフラッシングするのは簡単です。

 sudo nscd -i hosts

このコマンドは、NSCDに、ホスト名のキャッシュエントリを無効にするように指示します。 DNSエントリだけでなく、すべてをフラッシュしたい場合は、以下を使用してください。

 sudo nscd -I

これにより、構成全体がリロードされ、サポートされているすべてのデータベースのキャッシュデータがクリアされます。

NSCDの構成と監視

NSCDは/etc/nscd.conf経由で構成されています。次のようなさまざまなデータ型のキャッシュを有効または無効にすることができます。

  • passwd
  • グループ
  • ホスト

このファイルは適切にコメントされているため、合理的にアプローチします。 journalctl -u nscdを介したログを監視すると、その動作に注意し、潜在的な問題を特定できます。

使用しているキャッシュメカニズムを判断する方法

LinuxマシンがDNSキャッシュに依存しているシステムがわかりませんか?ここにいくつかのクイックチェックがあります:

  • systemd-resolve --status意味のある出力を返しますか?はいの場合、システムはSystemD-forSolvedを使用する可能性があります。
  • nscd -gテーブルエントリを提供しますか? NSCDを使用している可能性があります。
  • resolvectlあなたのシステムで動作しますか?それはSystemD-forSolvedにとって良い手がかりです。
  • dnsmasqまたはBINDはインストールされていますか?それは、個別のステップを必要とするより高度なセットアップを指します。

使用中のDNSリゾルバーを特定することは、DNSキャッシュをフラッシュまたはデバッグしようとする前に重要です。間違ったキャッシュをフラッシュしても問題は解決しないためです。

DNSを定期的にフラッシングするのはなぜ有益です

DNSキャッシュはパフォーマンスを向上させますが、問題が発生する可能性もあります。なぜあなたがそれを洗い流したいと思うかもしれない理由は次のとおりです:

  • DNSエントリを変更した後:非フラッシュキャッシュは、古いIPSまたはDNSサーバーを指す場合があります。
  • 接続性のトラブルシューティングの問題:破損または毒されたキャッシュは、解像度の失敗につながります。
  • 開発時代のシナリオ:ドメインの移行をテストしたり、ステージングと生産サーバーを切り替えるとき。

DNSキャッシュを定期的にフラッシュすると、特にパワーユーザー、システム管理者、および開発者向けに、システムの健康を維持し、予期しないサイトアクセスの問題を回避できます。

高度なヒントとツール

複雑な環境で作業している場合、またはDNS解像度をさらに制御する必要がある場合は、いくつかのボーナスツールとヒントを次に示します。

  • DNSMASQ:キャッシュ機能を備えた軽量DNSフォワーダーとして機能します。
  • BIND(名前):調整可能なゾーンキャッシングとカスタム有効期限を備えたエンタープライズグレードのDNSサーバー。
  • digおよびnslookupリアルタイムDNSレコードをテストするためのデバッグツール。
  • hostキャッシュの破壊なしでDNSレコードを照会するためのシンプルで直接。
Survivalcraft 2でKeybindsを変更するのはなぜですか?

最終的な考え

LinuxでDNSキャッシュをフラッシュすることは簡単なタスクです。システム上のDNS解像度を処理するツールまたはサービスがわかります。 SystemD-ResolvedNetworkManager、またはNSCDを使用している場合でも、それぞれの動作方法がDNS関連のトラブルシューティングシナリオをすばやく解決するためのスキルを使用します。 DNSキャッシュをきれいに保つだけでなく、今日の動的ネットワーキングの状況における信頼できる正確なドメイン名の解像度に不可欠です。