提问人:membersound 提问时间:10/7/2020 更新时间:10/7/2020 访问量:829
如何从IP解析DNS名称?
How to resolve the DNS name from IP?
问:
我想从客户端 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,我怎样才能获得域名 (stackoverflow / www.stackoverflow.com)?151.101.129.69
答:
2赞
Stephen C
10/7/2020
#1
我尝试对“www.stackoverflow.com”进行正向然后反向查找,很明显,stackoverflow 的管理员尚未为此 IP 设置允许 Java 反向查找站点的 DNS 名称的 DNS PTR 记录。
(反向查找失败的另一种情况是没有 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
评论
dns.google
8.8.8.8