新しい systemd-resolved リゾルバで DNS キャッシュエントリを表示する方法 - TechRepublic

新しい systemd-resolved リゾルバで DNS キャッシュエントリを表示する方法 - TechRepublic

Ubuntu 20.10やFedora 33など、最近リリースされた多くのLinuxディストリビューションは、DNS、DNSSEC、DNS over TLS、mDNS、LLMNRの処理にsystemd-resolvedを採用しています。このシステムは以前から存在していましたが、多くのディストリビューションは移行に躊躇していました。しかし、systemd-resolvedが提供する柔軟性のおかげで、その懸念は払拭されました。

この新しいシステムを初めて使用する人にとって、systemd ベースのリゾルバの操作の詳細を理解するのはおそらく少し難しいでしょう。

例えば、DNSキャッシュエントリの表示を考えてみましょう。このタスクには組み込みのメカニズムはありませんが、回避策はあります。多少の工夫は必要ないでしょうが、DNSキャッシュエントリを表示したい場合、(私の知る限り)それを実現する方法はあまりありません。

「なぜDNSキャッシュエントリを確認する必要があるのか​​?」と疑問に思うかもしれません。DNSキャッシュに不具合が生じることがあります。このような事態が発生すると、DNSに依存するサービスが正常に機能しなくなる可能性があります。DNSキャッシュを定期的にフラッシュすることで、こうした事態を防ぐことは可能ですが、問題が頻繁に発生する場合は、そのキャッシュを確認して、そもそも問題の原因を解明できるかどうかを確認することをお勧めします。

言い換えれば、DNS キャッシュを表示することは、ネットワークのトラブルシューティングの取り組みを強化する 1 つの方法です。

参照: Linux サービス制御コマンド(TechRepublic Premium)

必要なもの

  • systemd-resolved を使用する Linux ディストリビューション (サーバーまたはデスクトップ)
  • sudo権限を持つユーザー

DNSキャッシュを表示する方法

これを実現するには、systemd-resolved に kill シグナルを送信する必要があります。これは実際にサービスを停止するわけではなく、systemd-resolved に現在のキャッシュエントリ(およびその他のいくつかの情報)をシステムログに書き込むよう指示するものです。

キル信号を送信するコマンドは次のとおりです。

sudo killall -USR1 systemd-resolved

コマンドプロンプトがすぐに復帰するはずです。復帰したら、次のコマンドを実行してログメッセージをテキストファイルにエクスポートできます。

sudo journalctl -u systemd-resolved > ~/dns-cache.txt

上記のコマンドは、ホームディレクトリにdns-cache.txtファイルを作成します。DNSキャッシュファイルのサイズによっては、コマンドの実行に2秒から30秒かかる場合があります。

次のコマンドで txt ファイルを表示できます。

less ~/dns-cache.txt

最近アップグレードした Pop!_OS ディストリビューションのファイルを表示したところ、次のエラーが繰り返されていることを発見しました。

systemd-resolved[1839]: Server returned error NXDOMAIN, mitigating potential DNS violation DVE-2018-0001, retrying transaction with reduced feature level UDP.

アップグレードによって誤ったシンボリックリンクが作成されていたことが判明しました。/etc/resolv.conf ファイルが /run/systemd/resolve/resolv.conf ではなく /run/systemd/resolve/stub-resolv.conf を指していました。これを修正するには、まず以下のコマンドで現在のリンクを削除する必要がありました。

sudo rm /etc/resolv.conf

次に、次のコマンドで正しいリンクを作成しました。

sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

DNS エラーによりキャッシュがいっぱいになることがなくなり、すべてが正常になりました。

systemd-resolved を使用する Linux ディストリビューションで DNS キャッシュエントリを表示する方法は以上です。それほど難しくはありませんが、いくつかのコマンドを覚えておく必要があります。Linux システム管理者であれば、それほど問題にはならないはずです。

Jack Wallen によるビジネス プロフェッショナル向けの最新のテクノロジー アドバイスをすべて知るには、YouTube で TechRepublic の How To Make Tech Work を購読してください。

  • Linux、Android、その他オープンソース技術:さらに必読の記事(FlipboardのTechRepublic)

画像: iStockphoto/Spectral-Design
Tagged: