轉發 DNS 是大多數人聽到“DNS”時想到的 - 您鍵入 google.com 返回 142.250.80.46。反向 DNS 則相反:您從 IP 地址開始,然後詢問與其關聯的域名。
反向DNS的技術名稱是PTR記錄查詢(指標記錄)。它是網際網路基礎設施中一個安靜但重要的部分,它會影響電子郵件的傳送能力、伺服器身份驗證和日誌可讀性,而在出現問題之前,這些影響並不明顯。
反向 DNS 的工作原理
轉發 DNS 位於按域名組織的區域中: google.com, mail.google.com,等等。
反向 DNS 位於一個名為 in-addr.arpa 對於 IPv4(以及 ip6.arpa 對於 IPv6)。查詢 PTR 記錄 203.0.113.42,DNS系統查詢:
42.113.0.203.in-addr.arpa
注意IP 顛倒了。這種逆轉就是 DNS 委派的工作原理 — IP 地址層次結構從一般(最左邊的八位位元組)到特定(最右邊),而 in-addr.arpa 區域按此順序進行委派。
如果該 IP 存在 PTR 記錄,則返回主機名。如果不存在,則查詢返回 NXDOMAIN。
誰控制 PTR 記錄?
這是讓人絆倒的關鍵點:PTR記錄由擁有IP地址塊的人控制, 不是 擁有該域名的人。
如果您的伺服器託管在 AWS 上,則 AWS 控制您伺服器 IP 的 PTR 記錄 — 您可以透過 AWS 控制檯(在 EC2 → 彈性 IP → 操作 → 更新反向 DNS 下)設定它,而不是透過您的域名註冊商。
如果您使用的是 VPS 提供商,他們會為您提供一個面板設定來設定您的 PTR 記錄。如果您使用共享主機,則通常根本無法控制 PTR 記錄 - 這是主機配置的任何內容。
這很重要,因為:
- 設定 PTR 記錄需要對 IP 所有者的反向 DNS 區域具有寫許可權
- 您的託管提供商必須根據您的要求進行實際配置
- 註冊商處的任何 DNS 更改都不會影響 PTR 記錄
如何進行反向 DNS 查詢
線上: 使用 反向 DNS 查詢工具。輸入任何 IP 地址,它會返回 PTR 記錄(主機名)(如果存在)。
命令列:
# Linux / macOS
dig -x 8.8.8.8
host 8.8.8.8
nslookup 8.8.8.8
# Windows
nslookup 8.8.8.8
輸出 dig -x 8.8.8.8:
;; ANSWER SECTION:
8.8.8.8.in-addr.arpa. 21599 IN PTR dns.google.
所以 8.8.8.8 反向解析為 dns.google — 這是有道理的,它是 Google 的 DNS 伺服器。
為什麼反向 DNS 很重要
電子郵件送達率
這是關心 PTR 記錄的最直接的實際原因。當您的郵件伺服器傳送電子郵件時,接收郵件伺服器會對您的傳送 IP 執行反向 DNS 查詢。他們檢查兩件事:
- 該IP是否存在PTR記錄?
- PTR 中的主機名是否記錄前向解析回同一 IP? (前向確認反向 DNS,或 FCrDNS)
如果任一檢查失敗,電子郵件更有可能被標記為垃圾郵件或被徹底拒絕。 Gmail、Microsoft 和 Yahoo 等主要提供商都將 PTR 記錄納入垃圾郵件評分。
正確配置的郵件伺服器具有:
- PTR記錄:
203.0.113.42→mail.example.com - 一條記錄:
mail.example.com→203.0.113.42
這兩條記錄相互印證。如果沒有這個,您將從無法識別自身的 IP 傳送電子郵件,這看起來就像垃圾郵件基礎設施。
日誌可讀性
伺服器日誌記錄IP地址。當您檢視訪問日誌、錯誤日誌或安全日誌時,一長串 IP 地址很難閱讀。許多日誌分析工具都可以配置為將 IP 解析為主機名 — 轉向 203.0.113.42 進入 mail.example.com 使日誌更容易解析。
這也適用於諸如 netstat, ss和資料包捕獲 — 在實踐中檢視主機名而不是原始 IP 更有用。
網路故障排除
當您使用以下命令跟蹤網路路徑時 traceroute,每一跳顯示一個IP地址。具有 PTR 記錄的躍點解析為主機名,這通常會揭示網路運營商,有時還會揭示物理位置:
3 ae-10.r03.amstnl07.us.bb.gin.ntt.net (129.250.3.242) 8.123 ms
4 ae-5.r00.amstnl07.us.bb.gin.ntt.net (129.250.3.64) 8.456 ms
如果沒有 PTR 記錄,traceroute 只會顯示原始 IP — 對於識別哪個提供商遇到延遲而言用處不大。
安全調查
當您發現未知 IP 連線到您的伺服器或出現在防火牆日誌中時,反向 DNS 查詢是找出它是什麼的第一步。
反向解析為的 IP mail.google.com 與下定決心的人非常不同 dynamic-pool-72.isp-xyz.net 或返回 NXDOMAIN。主機名並不證明身份(PTR 記錄可以設定為任何內容),但它提供了指導進一步調查的上下文。
將反向 DNS 查詢與 WHOIS 查詢 和一個 ASN 查詢 以獲得更完整的圖片。
當反向 DNS 不返回任何內容時
缺失 PTR 記錄 (NXDOMAIN) 很常見,有時也是預料之中的:
- 住宅IP:大多數家庭 ISP 不會為個人訂閱者 IP 設定 PTR 記錄
- 動態IP:頻繁重新分配的範圍通常沒有 PTR 記錄
- 部分雲IP: 並非所有云提供商都預設配置 PTR 記錄
丟失 PTR 記錄對於郵件伺服器來說是一個問題(它會損害您的垃圾郵件分數),但對於 Web 伺服器、VPN 或任何不傳送電子郵件的服務來說這是完全正常的。
前向確認反向 DNS (FCrDNS)
FCrDNS 是電子郵件伺服器最關心的驗證鏈:
- 您的 IP (
203.0.113.42) 有一個 PTR 記錄指向mail.example.com mail.example.com有一條 A 記錄指向203.0.113.42- 兩個匹配 — 這是 FCrDNS
為郵件伺服器設定 FCrDNS:
- 透過您的託管提供商設定 PTR 記錄(在伺服器面板中查詢“反向 DNS”或“PTR 記錄”)
- 確保 PTR 記錄中的主機名有一條 A 記錄指向您域 DNS 中的伺服器 IP
- 驗證:
dig -x YOUR_IP和dig A YOUR_HOSTNAME
兩次查詢都應返回匹配的結果。
檢查多個IP
如果您要稽核一系列 IP — 檢查哪些 IP 具有 PTR 記錄,或驗證 FCrDNS 的郵件伺服器列表 — 批處理工具會更有效。的 反向 DNS 查詢工具 處理單獨的查詢。對於批次查詢,
當您的 VPN 隧道透過常規網路介面洩漏 DNS 查詢並將其暴露給您的 ISP 時,就會發生 for 迴圈效果很好:
for ip in 8.8.8.8 1.1.1.1 9.9.9.9; do
echo -n "$ip: "
dig -x $ip +short
done
輸出:
8.8.8.8: dns.google.
1.1.1.1: one.one.one.one.
9.9.9.9: dns.quad9.net.
底線
反向 DNS 是 IP 地址宣告身份的方式。它是電子郵件伺服器驗證、可讀日誌和有意義的跟蹤路由背後的機制。
對於傳送電子郵件的伺服器,FCrDNS 是強制性的 - 透過託管提供商配置您的 PTR 記錄並驗證它與您的主機名的 A 記錄匹配。對於調查而言,對任何未知 IP 進行反向 DNS 查詢是快速的第一步。
使用 反向 DNS 查詢工具 立即檢查任何IP。