Domain-Name-System

如何將 DNS 請求與對託管該域名的 Web 伺服器的請求相關聯?

  • March 13, 2018

我們註冊了一個域名(比如“example.com”),我們想要查看誰在嘗試解析該域名,以及他向該域名的 Web 伺服器發送了什麼樣的請求。

為此,我們設置了一個名稱伺服器,並收集了 BIND 的日誌,以找出誰在查詢名稱伺服器以解析“example.com”(我們不關心人們通過記憶體來解析域名的情況)遞歸解析器中的數據)。我們還收集 Apache Web 伺服器的日誌。但問題是我們無法找出哪個 DNS 請求對應於哪個 web-server 請求?

為了將這兩個日誌映射在一起,我正在考慮創建一個隨機子域並將其作為 example.com 的 CNAME 返回每個 DNS 請求,然後配置 Apache 以將所有這些子域重定向到“example.com”首頁。因此,如果有人請求該特定子域,我知道相應的 DNS 查詢是什麼。

這是正確的做法嗎?有沒有其他方法可以做到這一點?

我感謝任何想法或想法。

您無法關聯 IP 地址。

這是因為您的權威名稱伺服器是由遞歸名稱伺服器查詢的,而不是由終端客戶端直接查詢的。因此,您將獲得客戶端使用的最後一個遞歸(它們可以被連結)名稱伺服器的 IP 地址。

即使使用 EDNS 子網客戶端選項,您最多也只能獲得一個 IP 塊,而不是真正的客戶端 IP。

同樣,在 HTTP 前端,客戶端不一定直接聯繫您的網路伺服器,他可以通過代理。

我已經用一些提示回答了與該問題相關的另一個問題:我們可以根據請求更新 CNAME 嗎? 尤其是最後一段和 Geoff Huston 所做的所有研究。

因此,您有另一種方法:只給每個人www.example.com,但在內容中插入一些動態的東西(1x1 像素圖像,或指向 CSS 或 JS 文件的連結),在主機名部分帶有一些唯一標記。這可以用萬用字元綁定在您的名稱伺服器上。無需任何 CNAME,您就可以輕鬆關聯訪問:

  • 一些客戶去http://www.example.com/
  • 在回復中,網路伺服器添加一個<img src="https://eecahquai5thuu9ji0iepha.tracking.example.net">並在其日誌文件中記錄(因此這將唯一令牌與目前 HTTP 交換聯繫起來)
  • 配置權威域名伺服器tracking.example.net(我建議你只為區域使用單獨的區域,否則萬用字元可能會充滿驚喜)以擁有萬用字元記錄;然後,您將在您的名稱伺服器日誌文件中擁有這個唯一令牌和相關的 DNS 數據(遞歸解析器的 IP 等)
  • (並且要成為一個正確的網友)確實配置了一個使用正確的資源和內容類型回复此地址的網路伺服器,即使它只是一個 1x1 像素的透明圖像。

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