介紹:

介紹:

我需要檢查 PTR 記錄,以確保我的腳本正在發送的電子郵件實際上會被我的用戶收到,並且不會被錯誤地標記為垃圾郵件。

我知道擁有該 IP 範圍的 ISP 必須設定 PTR 記錄,但如何檢查它是否已設定?

答案1

如果你有Unix 或 Linux,您可以透過在命令提示字元下鍵入以下內容來完成此操作:

dig -x xx.yy.zz.aa

您將透過 aa.zz.yy.xx.in-addr.arpa 的權限以及解析到該位址的伺服器獲得答案。

視窗你可以做nslookup xx.yy.zz.aa

您也可以檢查在線的www.intodns.com並輸入您的網域...檢查反向區域查找的結果會出錯。

xx.yy.zz.aa = 您嘗試解析的 IP 位址


更新:

使用 dig、nslookup 或 host 時,使用不受您控制的 DNS 伺服器(例如 Google (8.8.8.8))通常很有用,這樣您就可以從第 3 方取得確認資訊是否正確。 –佐爾達什

佐爾達什 提出了一個很好的觀點。以下是用於測試/解析外部/外部 DNS 伺服器的命令:

Dig(在 8.8.8.8 的 Google DNS 伺服器上測試反向 DNS):

dig -x zz.yy.xx.aa @8.8.8.8

Host 和 Nslookup(在 8.8.8.8 的 Google DNS 伺服器上測試反向 dns)

nslookup zz.yy.xx.aa 8.8.8.8
host zz.yy.xx.aa 8.8.8.8

答案2

我知道這已被標記為已回答,但我想提供更全面的答案。對於我的範例,我將使用:

  1. Google網站的 IP 位址172.217.3.206因為它有PTR記錄。
  2. 伺服器故障網的 IP 位址151.101.1.69因為它才不是有PTR記錄。

首先要注意的dig是多平台命令,您可以在 Windows 上取得它ISC 綁定網站在 BIND 下列出,然後選擇您的 Windows 平台(32 或 64 位元)。它還有許多其他工具,包括自己的 nslookup 二進位。我不使用 nslookup.exe 版本,而是使用 Windows 隨附的預設版本 (C:\Windows\System32\nslookup.exe)。但是,如果您想使用,dig您可能需要編輯本機 PATH 環境變量,或將該dig工具移至 C:\Windows\System32 資料夾。

指令 1) dig PTR 206.3.217.172.in-addr.arpa- 傳統上這是使用者執行反向 DNS 查找的方式。他們會手動將 IP 位址轉置172.217.3.206為:(206.3.217.172注意四個八位元組中每個八位元組的順序)並添加in-addr.arpa到字串的末尾。這是輸出:

; <<>> DiG 9.9.5 <<>> PTR 206.3.217.172.in-addr.arpa
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39790
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;206.3.217.172.in-addr.arpa.    IN      PTR

;; ANSWER SECTION:
206.3.217.172.in-addr.arpa. 84300 IN    PTR     sea15s12-in-f206.1e100.net.
206.3.217.172.in-addr.arpa. 84300 IN    PTR     sea15s12-in-f14.1e100.net.
206.3.217.172.in-addr.arpa. 84300 IN    PTR     sea15s12-in-f14.1e100.net.
206.3.217.172.in-addr.arpa. 84300 IN    PTR     sea15s12-in-f206.1e100.net.

;; Query time: 23 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Mar 26 04:20:28 Pacific Daylight Time 2017
;; MSG SIZE  rcvd: 153

命令 2) dig -x 172.217.3.206- 這個版本的命令要簡單得多,如 中所述dig -h,該-x標誌是「反向查找的快捷方式」。此輸出與上面命令中顯示的輸出相同。

指令 3) dig -x 151.101.1.69- 此範例使用 serverfault.com 範例展示了未找到 PTR 記錄時的情況。可以看到,答案中沒有列出 PTR,只能找到 的 SOA 記錄151.in-addr.arpa

; <<>> DiG 9.9.5 <<>> -x 151.101.1.69
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 21854
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;69.1.101.151.in-addr.arpa.     IN      PTR

;; AUTHORITY SECTION:
151.in-addr.arpa.       1786    IN      SOA     pri.authdns.ripe.net. dns.ripe.net. 1490512027 3600 600 864000 3600

;; Query time: 23 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Mar 26 04:30:38 Pacific Daylight Time 2017
;; MSG SIZE  rcvd: 114

命令 4) nslookup 172.217.3.174- 這是使用者建議的命令l0c0b0x在這個線程的主要答案中。雖然確實有結果,但尚不清楚這是 PTR 記錄還是其他類型的記錄。我認為如果給定了 IP,它預設會返回 PTR,但我仍然想確定一下。如果有多個 PTR,它也會忽略其他記錄:

Server:  google-public-dns-a.google.com
Address:  8.8.8.8

Name:    sea15s11-in-f14.1e100.net
Address:  172.217.3.174

命令 5) nslookup -debug 172.217.3.174- 使用此命令來查看完整列表,包括記錄類型和完整結果列表。該-debug標誌仍然存在,要關閉它,您必須使用-nodebug

------------
Got answer:
    HEADER:
        opcode = QUERY, id = 1, rcode = NOERROR
        header flags:  response, want recursion, recursion avail.
        questions = 1,  answers = 1,  authority records = 0,  additional = 0

    QUESTIONS:
        8.8.8.8.in-addr.arpa, type = PTR, class = IN
    ANSWERS:
    ->  8.8.8.8.in-addr.arpa
        name = google-public-dns-a.google.com
        ttl = 86141 (23 hours 55 mins 41 secs)

------------
Server:  google-public-dns-a.google.com
Address:  8.8.8.8

------------
Got answer:
    HEADER:
        opcode = QUERY, id = 2, rcode = NOERROR
        header flags:  response, want recursion, recursion avail.
        questions = 1,  answers = 4,  authority records = 0,  additional = 0

    QUESTIONS:
        174.3.217.172.in-addr.arpa, type = PTR, class = IN
    ANSWERS:
    ->  174.3.217.172.in-addr.arpa
        name = sea15s11-in-f14.1e100.net
        ttl = 83026 (23 hours 3 mins 46 secs)
    ->  174.3.217.172.in-addr.arpa
        name = sea15s11-in-f174.1e100.net
        ttl = 83026 (23 hours 3 mins 46 secs)
    ->  174.3.217.172.in-addr.arpa
        name = sea15s11-in-f14.1e100.net
        ttl = 83026 (23 hours 3 mins 46 secs)
    ->  174.3.217.172.in-addr.arpa
        name = sea15s11-in-f174.1e100.net
        ttl = 83026 (23 hours 3 mins 46 secs)

------------
Name:    sea15s11-in-f14.1e100.net
Address:  172.217.3.174

指令 6) nslookup -type=PTR 172.217.3.174- 此版本的指令指定帶有-type標誌的 PTR 記錄。它與沒有標誌的版本有-type兩個不同之處。首先是它列出了所有 PTR 答案。第二個是它包含了其他命令忽略包含的資訊「非權威答案」。如果您仔細查看上面的偵錯輸出,authority records狀態為 0,因此這兩個命令都應聲明「非權威答案」。

Server:  google-public-dns-a.google.com
Address:  8.8.8.8

Non-authoritative answer:
174.3.217.172.in-addr.arpa      name = sea15s11-in-f14.1e100.net
174.3.217.172.in-addr.arpa      name = sea15s11-in-f14.1e100.net
174.3.217.172.in-addr.arpa      name = sea15s11-in-f174.1e100.net
174.3.217.172.in-addr.arpa      name = sea15s11-in-f174.1e100.net

命令 7) nslookup -debug -d2 -type=PTR 151.101.1.69- 以下是如何取得有關完整反向查找請求的盡可能多的詳細資訊。提醒:要關閉它,請使用-nodebug-nod2。此範例故意在 serverfault.com 範例上失敗:

------------
SendRequest(), len 38
    HEADER:
        opcode = QUERY, id = 1, rcode = NOERROR
        header flags:  query, want recursion
        questions = 1,  answers = 0,  authority records = 0,  additional = 0

    QUESTIONS:
        8.8.8.8.in-addr.arpa, type = PTR, class = IN

------------
------------
Got answer (82 bytes):
    HEADER:
        opcode = QUERY, id = 1, rcode = NOERROR
        header flags:  response, want recursion, recursion avail.
        questions = 1,  answers = 1,  authority records = 0,  additional = 0

    QUESTIONS:
        8.8.8.8.in-addr.arpa, type = PTR, class = IN
    ANSWERS:
    ->  8.8.8.8.in-addr.arpa
        type = PTR, class = IN, dlen = 32
        name = google-public-dns-a.google.com
        ttl = 86280 (23 hours 58 mins)

------------
Server:  google-public-dns-a.google.com
Address:  8.8.8.8

------------
SendRequest(), len 43
    HEADER:
        opcode = QUERY, id = 2, rcode = NOERROR
        header flags:  query, want recursion
        questions = 1,  answers = 0,  authority records = 0,  additional = 0

    QUESTIONS:
        69.1.101.151.in-addr.arpa, type = PTR, class = IN

------------
------------
Got answer (103 bytes):
    HEADER:
        opcode = QUERY, id = 2, rcode = NXDOMAIN
        header flags:  response, want recursion, recursion avail.
        questions = 1,  answers = 0,  authority records = 1,  additional = 0

    QUESTIONS:
        69.1.101.151.in-addr.arpa, type = PTR, class = IN
    AUTHORITY RECORDS:
    ->  151.in-addr.arpa
        type = SOA, class = IN, dlen = 48
        ttl = 1787 (29 mins 47 secs)
        primary name server = pri.authdns.ripe.net
        responsible mail addr = dns.ripe.net
        serial  = 1490512027
        refresh = 3600 (1 hour)
        retry   = 600 (10 mins)
        expire  = 864000 (10 days)
        default TTL = 3600 (1 hour)

------------
*** google-public-dns-a.google.com can't find 69.1.101.151.in-addr.arpa.: Non-ex
istent domain

指令 8) nslookup 174.3.217.172.in-addr.arpa- 您可能想知道是否可以使用傳統的反向 DNS 查找方法,nslookup就像我們在指令 1 中所做的那樣dig。你可以。請注意,此命令與下面設定了標誌的命令(命令 9)之間存在與我上面列出的相同的 nslookup 失敗(命令 6)-type=PTR

Server:  google-public-dns-a.google.com
Address:  8.8.8.8

Name:    174.3.217.172.in-addr.arpa

命令 9) nslookup -type=PTR 174.3.217.172.in-addr.arpa- 如您所料,它看起來與命令 6 相同。

Server:  google-public-dns-a.google.com
Address:  8.8.8.8

Non-authoritative answer:
174.3.217.172.in-addr.arpa      name = sea15s11-in-f14.1e100.net
174.3.217.172.in-addr.arpa      name = sea15s11-in-f14.1e100.net
174.3.217.172.in-addr.arpa      name = sea15s11-in-f174.1e100.net
174.3.217.172.in-addr.arpa      name = sea15s11-in-f174.1e100.net

答案3

這與執行任何類型的 DNS 查找相同。

從 Windows 命令提示字元處:nslookup.exe <ip address>

從 Linux 命令列:host <ip address>

注意:最好從網路外部的電腦執行這些命令,以便您存取公共 DNS 伺服器。另外,nslookup 和 host 都提供了指定要使用的 DNS 伺服器的方法。

答案4

介紹:

(2) 範例,一個用於 IPv4,另一個用於 IPv6。
IPv6 PTR 查找過程花了我很長時間才找到答案...

IPv4:

我們將使用 Google 的 IP 作為 IPv4 範例:

host -t PTR 209.85.218.49

返回反向映射:

49.218.85.209.in-addr.arpa domain name pointer mail-ej1-f49.google.com.

IPv6:

步驟1:取得主機(通常是郵件伺服器)的IPv6位址:

host -t AAAA mail.yourServer.net

這將返回下一步 PTR 尋找所需的 IPv6 位址:

mail.yourServer.net has IPv6 address 2001:340:1c1e:14::2

第2步:現在向命令提供 IPv6 位址host

host -t PTR 2001:340:1c1e:14::2

傳回 IPv6 PTR 記錄:

2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.4.1.0.0.e.1.c.1.0.4.3.0.1.0.0.2.ip6.arpa domain name pointer mail.yourServer.net.

筆記:IPv6位址已被匿名化。

自從颶風電氣給了我免費 IPv6 區塊,我直接在他們的中設定反向IPv6 DNSDNS控制面板對於郵件伺服器。

反向 IPv6 產生器:

顯然,上面的 IPv6 PTR 記錄有點瘋狂和懶惰,我只是使用反向 IPv6 生成器為我的郵件伺服器建立它。還有其他的,但我使用以下內容來匯出反向 IPv6 的正確值:

https://www.whatsmydns.net/reverse-dns-generator

相關內容