Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux上,Java在打开套接字时发出反向DNS查找。为什么,我怎样才能阻止它?_Java_Linux_Dns - Fatal编程技术网

在Linux上,Java在打开套接字时发出反向DNS查找。为什么,我怎样才能阻止它?

在Linux上,Java在打开套接字时发出反向DNS查找。为什么,我怎样才能阻止它?,java,linux,dns,Java,Linux,Dns,我们在Linux w.r.t.Java DNS查找上遇到了一个非常奇怪的行为(更新:在Mac OS X上也发生了,我错了) 我们将Google公共DNS服务器8.8.8.8设置为JVM DNS服务器。但是,系统(/etc/resolv.conf)服务器仍然不是标准服务器ghost.di.unimi.it 当使用InetAddress.getAllByName()或DNSJava的Addess.getAllByName()查找地址时,一切正常(尤其是DNSJava): 01:39:11.83243

我们在Linux w.r.t.Java DNS查找上遇到了一个非常奇怪的行为(更新:在Mac OS X上也发生了,我错了)

我们将Google公共DNS服务器8.8.8.8设置为JVM DNS服务器。但是,系统(/etc/resolv.conf)服务器仍然不是标准服务器ghost.di.unimi.it

当使用InetAddress.getAllByName()或DNSJava的Addess.getAllByName()查找地址时,一切正常(尤其是DNSJava):

01:39:11.832438 IP nexus.law.di.unimi.it.33195>google-public-dns-a.google.com.domain:46509+a?www.uffa.com。(30) 01:39:11.832820 IP nexus.law.di.unimi.it.52782>ghost.di.unimi.it.domain:42740+PTR?8.8.8.8.in-addr.arpa。(38) 01:39:11.833510 IP ghost.di.unimi.it.domain>nexus.law.di.unimi.it.52782:42740 1/2/0 PTR google-public-dns-a.google.com。(128) 01:39:11.865165 IP google-public-dns-a.google.com.domain>nexus.law.di.unimi.it.33195:46509 1/0/0 a 208.87.35.103(46) 如您所见,我们解析了www.uffa.com,然后有一个8.8.8.8的反向查找(在第一次查找时只发生一次),用于身份验证。此时,www.uffa.com的IP地址被缓存,如果我们在TTL中进行另一次调用,则不应进行查找

尽管如此,当我们实际尝试使用Apache HTTP组件的DefaultHttpClient在www.uffa.com上打开套接字时,我们看到:

01:40:06.892383 IP nexus.law.di.unimi.it.53977 > ghost.di.unimi.it.domain: 22255+ PTR? 103.35.87.208.in-addr.arpa. (44) 01:40:07.204359 IP ghost.di.unimi.it.domain > nexus.law.di.unimi.it.53977: 22255 1/2/2 PTR 208-87-35-103.securehost.com. (154) 01:40:06.892383 IP nexus.law.di.unimi.it.53977>ghost.di.unimi.it.domain:22255+PTR?103.35.87.208.in-addr.arpa。(44) 01:40:07.204359 IP ghost.di.unimi.it.domain>nexus.law.di.unimi.it.53977:222551/2/2 PTR 208-87-35-103.securehost.com。(154) 也就是说,Java(或机器上的其他东西)正在对我们的系统服务器执行www.uffa.com地址的反向查找,而不是谷歌的服务器。使用URL.openConnection().getContent()也会发生同样的情况

我们使用BTrace来检测InetAddress/地址代码,并且没有执行任何可能暗示反向DNS查找的调用

坦率地说,我们甚至不知道该找什么

我们的大问题是,我们正在编写一个高性能的爬虫程序,当我们试图仔细调整DNS查找的速度时,我们无法调整这种反向查找的速度,因为它们是在套接字打开时执行的,而在爬虫线程(其数量为数千)中会发生这种情况

一个附加信息,wget也执行反向DNS查找,但是端口80上的nc(当然没有提供任何信息)不执行


与往常一样,我们非常感谢您的帮助。

反向DNS查找由SecurityManager完成,您不能禁用它们。

最后,唯一真正的问题是我没有给tcpdump-n选项。我观察到的反向查找只是tcpdump的。

阅读Apache库的源代码,甚至是文档。这可能是这里的参与者。正如我在下面回答的,它也使用URL.openConnection().getContent(),因此这不可能是Apache的问题。这也是我的猜测,但您有任何权威参考来说明这一点吗? 01:40:06.892383 IP nexus.law.di.unimi.it.53977 > ghost.di.unimi.it.domain: 22255+ PTR? 103.35.87.208.in-addr.arpa. (44) 01:40:07.204359 IP ghost.di.unimi.it.domain > nexus.law.di.unimi.it.53977: 22255 1/2/2 PTR 208-87-35-103.securehost.com. (154)