介绍:

介绍:

我需要检查 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)),这样你就可以从第三方确认一切是否正确。–佐尔达什

佐尔达什 说得很有道理。以下是用于测试/解析外部/外部 DNS 服务器的命令:

Dig(在 Google 的 DNS 服务器 8.8.8.8 上测试反向 DNS):

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

主机和 Nslookup(在 Google 的 DNS 服务器 8.8.8.8 上测试反向 DNS)

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

答案2

我知道这个问题已被标记为已回答,但我想提供更全面的答案。对于我的示例,我将使用:

  1. google.com的 IP 地址172.217.3.206因为它有 PTR 记录。
  2. 服务器故障的 IP 地址151.101.1.69因为它才不是有 PTR 记录。

首先要注意的是,这dig是一个多平台命令,你可以在 Windows 上获取它ISC BIND 网站在 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- 此版本的命令使用标志指定 PTR 记录-type。它与没有标志的版本有-type两点不同。第一,它列出了所有 PTR 答案。第二,它包括其他命令忽略的“非权威答案”信息。如果您仔细查看上面的调试输出,状态为authority records0,因此这两个命令都应显示“非权威答案”。

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 块,我直接在他们的DNS 控制面板用于邮件服务器。

反向 IPv6 生成器:

显然,上面的 IPv6 PTR 记录有点疯狂和懒惰,我只是使用反向 IPv6 生成器为我的邮件服务器创建它。还有其他的,但我使用以下内容来得出反向 IPv6 的正确值:

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

相关内容