【问题标题】:How to resolve the DNS name from IP?如何从 IP 解析 DNS 名称?
【发布时间】:2020-10-07 08:27:45
【问题描述】:

我想从客户端 IP 地址解析域名。对于测试,我使用了 stackoverflow,如下所示。但是当我使用 ip 解析域时,我仍然只能得到 IP。

    String ip = InetAddress.getByName("www.stackoverflow.com").getHostAddress();
    System.out.println(ip);
    System.out.println(InetAddress.getByName(ip).getHostName());
    System.out.println(InetAddress.getByName(ip).getCanonicalHostName());
    System.out.println(InetAddress.getByName(ip).getHostAddress());

结果:

151.101.129.69
151.101.129.69
151.101.129.69
151.101.129.69

如果我只提供 ip 151.101.129.69,我如何获得域名 (stackoverflow / www.stackoverflow.com)?

【问题讨论】:

  • 无论使用哪种编程语言,如果域的所有者没有为该 IP 设置 PTR 记录,您将无法这样做(详情请参阅“DNS PTR 记录”)。此外,每个 IP 可能有许多与之关联的域名。
  • 你不能。参见例如whatismyip.com/reverse-dns-lookup "请注意,某些 IP 地址不会返回域名,因为可能有记录指示给定 IP 地址的多个域名。常见的示例包括共享虚拟主机,其中服务器的一个 IP 地址是在一个或多个域之间共享。”
  • 比较例如到dns.google 8.8.8.8,在这种情况下 dns 和反向 dns 工作,但这只是因为谷歌想要它。

标签: java dns


【解决方案1】:

我尝试在“www.stackoverflow.com”上进行正向和反向查找,很明显 stackoverflow 的管理员没有为此 IP 设置 DNS PTR 记录,这将允许 Java 反向查找站点的 DNS 名称。

(反向查找失败的另一种情况是没有 DNS 名称映射到给定的 IP 地址。)

这不是 Java 特定的问题。您将在任何语言中获得相同的行为。这实际上是 DNS 设计的结果,以及 DNS 在实践中的使用方式。

对此没有真正的解决方案。您需要编写应用程序代码以允许您无法解析为 DNS 地址的 IP 地址。


为了记录,这是我使用dig 工具得到的。 (出于安全原因,一些细节被隐藏了)。

$ dig www.stackoverflow.com

; <<>> DiG 9.11.3-1ubuntu1.13-Ubuntu <<>> www.stackoverflow.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52578
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: zzzzzz (good)
;; QUESTION SECTION:
;www.stackoverflow.com.     IN  A

;; ANSWER SECTION:
www.stackoverflow.com.  3600    IN  CNAME   stackoverflow.com.
stackoverflow.com.  2760    IN  A   151.101.129.69
stackoverflow.com.  2760    IN  A   151.101.193.69
stackoverflow.com.  2760    IN  A   151.101.1.69
stackoverflow.com.  2760    IN  A   151.101.65.69

;; Query time: 22 msec
;; SERVER: xx.xx.xx.xx
;; WHEN: Wed Oct 07 19:49:12 AEDT 2020
;; MSG SIZE  rcvd: 156

$ dig -x 151.101.129.69

; <<>> DiG 9.11.3-1ubuntu1.13-Ubuntu <<>> -x 151.101.129.69
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 43513
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: zzzzzz (good)
;; QUESTION SECTION:
;69.129.101.151.in-addr.arpa.   IN  PTR

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

;; Query time: 34 msec
;; SERVER: xx.xx.xx.xx
;; WHEN: Wed Oct 07 19:49:26 AEDT 2020
;; MSG SIZE  rcvd: 168

【讨论】:

    猜你喜欢
    • 2016-03-03
    • 2016-01-08
    • 1970-01-01
    • 2019-02-06
    • 2017-02-13
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 2016-04-24
    相关资源
    最近更新 更多