Domain-Name-System

我可以在 Bind 9 上記錄特定查詢嗎?

  • March 22, 2011

我想知道哪些主機在什麼時間進行特定的 DNS 查詢。有沒有辦法在 Bind 9 上獲取特定的日誌?

例如,我可能想記錄所有A查詢xyzzy.net

在 named.conf 中的 logging{} 塊中放置正確類型的通道節。

       channel "client" {
           file "/var/log/client_named.log";
           severity info;
           print-time yes;
       };

可能會成功。那應該會為您提供此類數據:

22-Apr-2011 12:06:53.294 client xxx.xxx.xxx.xxx#56202: view external-in: query: st.in.multi.surbl.org IN A +

編輯:警告 - 啟用這種日誌記錄將非常快速地生成非常大的日誌文件,並且可以輕鬆填滿您的磁碟而無需進行某種日誌輪換/壓縮,並且可能最適合簡短的數據收集會話,而不是永久配置。

如果這(以及對生成的日誌文件進行後處理)太多,您可以使用 tcpdump 之類的工具來執行此操作。

tcpdump -i eth0 dst port 53 | egrep 'A' | egrep 'xyyzyy.com'

甚至更好的是,編寫一個過濾器以僅匹配您要過濾的 DNS 數據包的正確位(在本例中為 A? 類型)

不過,可能更簡單的是使用 dnstop 之類的工具。 dnstop 網頁將為您完成所有協議解碼,IIRC 您可以使用 -n 過濾它的輸出,以將其擷取的內容限制為單個域。

引用自:https://serverfault.com/questions/250490