すべてのDNSクエリをどのように記録しますか?

すべてのDNSクエリをどのように記録しますか?

コンピュータが実行するすべてのDNSクエリと、コンピュータが受信する応答のログをどのように生成しますか?

答え1

tcpdumpすべてのポート53 UDPおよびTCPアクティビティを記録できます。

答え2

すべてのDNS要求を表示しAてファイルに保存するには、次のコマンドを実行します。

script -q -c "sudo tcpdump -l port 53 2>/dev/null | grep --line-buffered ' A? ' | cut -d' ' -f8" | tee dns.log

出力例:

google.com.
wikipedia.org.

更新済み(2023年):変更された出力フォーマットtcpdump。ドメイン名はフィールド#8ではなくフィールド#9にあります。

固定シングルライン:

script -q -c "sudo tcpdump -l port 53 2>/dev/null | grep --line-buffered ' A? ' | cut -d' ' -f9" | tee dns.log

答え3

最も簡単な方法は、Bindをローカルにインストールすることです。ほとんどのディストリビューションでは、Bindのデフォルトインストールは非自動キャッシュです。

logging {}次の構成ブロックを追加するだけです。バインディング 9 構成リファレンス127.0.0.1)次に、または::1DNSリゾルバとして使用するようにシステムを設定します。

答え4

興味のある要求に対してDNSをフィルタリングする簡単な方法は、次の行をgrepすることです。grep -A 2後ろに-Aがあり、後ろに2行があります。サーバーにDNS要求が多い場合、2から4から5に増加

tcpdump -l port 53 |grep -A 2  redis

2行目はDNS - > IP、CNAME、none、otherへの答えです。

関連情報