再開始討論PTR紀錄時先建立一個概念,在DNS上的使用是將網域解析成IP,讓使用者能輸入網址後讓瀏覽器自動解析出IP的一種技術。
而在 DNS上的 PTR 紀錄功能完全相反,而是透過 DNS 將IP反解析出網域,一般使用者通常沒有這個能力修改PTR紀錄,大多只能透過IPS業者或是出租空間的業者來達成此宣告。
DNS PTR 如何實做出來?
在IPv4中的做法是將要查詢的 IP : 66.249.64.168 輸入後,查詢軟體會先翻轉IP順序並在尾端添加 “.in-addr.arpa”。
當查詢的 IP 是 66.249.64.168 會變成 “168.64.249.66.in-addr.arpa.”,透過.arpa 這個頂級網域來提供答案。而in-addr是專為 IPv4 查詢添加的 DNS類別。
故在 IPv6 中進行反查原理是一樣的 IP: 2001:4860:4801:65:0:0:0:3a,此時軟體會先翻轉IP。不過翻轉的內容是一個字一個字的翻轉過去,反轉完成後尾端會加上”.ip6.arpa.”來進行查詢。
那剛剛查詢的IPv6 會變成 “a.3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.6.0.0.1.0.8.4.0.6.8.4.1.0.0.2.ip6.arpa.”,跟剛剛一樣 ip6 是 arpa 專為 IPv6 查詢添加的類別。
那 PTR 紀錄可以做甚麼用呢?
從上面的例子看到功能是IP反查網域,故主要用途是為了驗證或將IP轉成網域方便閱讀,實務上用在下列幾個地方:
Email 垃圾郵件過濾:
某些過濾垃圾郵件也會參考DNS反查內容來驗證,該IP是否屬於此網域的所有的。如果無法正確宣告可能會被視為垃圾郵件。
日誌/流量分析工具:
在閱讀大量系統紀錄時如果只有IP對於人類來說不是太友善,工具此時會自動幫忙進行IP的反查。把 IP 換成網域人在閱讀的時候就可以快速判別此連線是不是有問題的。
驗證IP所有權:
搜尋引擎在爬取各網頁時也會通過此方式來宣告此IP的使用權,來避免其他人利用一樣的 User Agent 或是 PTR 來偽造身分。
注意事項:
PTR 紀錄反查出來的內容不一定可信,查出來的網域必須再次反查一次,確認回應的答案是否為相同的。
$ dig -x 66.249.64.168
;; ANSWER SECTION:
168.64.249.66.in-addr.arpa. 4732 IN PTR crawl-66-249-64-168.googlebot.com.
$ dig crawl-66-249-64-168.googlebot.com.
;; ANSWER SECTION:
crawl-66-249-64-168.googlebot.com. 86400 IN A 66.249.64.168
由上面的查詢,可以知道此IP的PTR紀錄正確因為:
先透過 DNS 反查 IP : 66.249.64.168 ,可以得到答案 “crawl-66-249-64-168.googlebot.com.”
再透過 DNS 查詢”crawl-66-249-64-168.googlebot.com.”,可以得到答案 IP 為 66.249.64.168。
兩者可以取得相同的結論,所以紀錄為真。