コンピュータが実行するすべての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
)次に、または::1
DNSリゾルバとして使用するようにシステムを設定します。
答え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への答えです。