GVKun编程网logo

Windows上的DNS反向查询会阻塞几秒钟,以获取无法解析的IP地址(dns反向解析配置 windows)

11

在这篇文章中,我们将为您详细介绍Windows上的DNS反向查询会阻塞几秒钟,以获取无法解析的IP地址的内容,并且讨论关于dns反向解析配置windows的相关问题。此外,我们还会涉及一些关于c–Wi

在这篇文章中,我们将为您详细介绍Windows上的DNS反向查询会阻塞几秒钟,以获取无法解析的IP地址的内容,并且讨论关于dns反向解析配置 windows的相关问题。此外,我们还会涉及一些关于c – Windows上的Bonjour / DNS-SD、DNS解析失败怎么办 DNS无法解析的解决方法、Docker无法解析专用网络上的DNS、domain-name-system – DNS反向查找不起作用的知识,以帮助您更全面地了解这个主题。

本文目录一览:

Windows上的DNS反向查询会阻塞几秒钟,以获取无法解析的IP地址(dns反向解析配置 windows)

Windows上的DNS反向查询会阻塞几秒钟,以获取无法解析的IP地址(dns反向解析配置 windows)

我正在使用Java InetAddress.getHostName()来执行一些反向DNS查找,并且花费的时间似乎有些问题。这是一个代码片段:

public static void main(String[] args) throws IOException {byte[][] addresses = new byte[][] { { 10, (byte) 0, (byte) 0, (byte) 138 }    , new byte[] { (byte) 216, (byte) 239, (byte) 49, (byte) 245 }    ,{ 8, (byte) 8, (byte) 8, (byte) 8 } };    for (byte[] addr : addresses) {        InetAddress inet = InetAddress.getByAddress(addr);        long before = System.currentTimeMillis();        String hostName = inet.getHostName();        System.out.printf("%20s %40s %5d\n", inet.getHostAddress(), hostName, (System.currentTimeMillis() - before));    }}

这是我机器上的输出:

    10.0.0.138                               10.0.0.138  4503216.239.49.245                           216.239.49.245  4591       8.8.8.8           google-public-dns-a.google.com     8

不管我运行这段代码的次数如何,解析10.0.0.138和216.239.49.245都需要4.5秒。所有无法解析的IP地址似乎都发生了这种情况。

这不是网络问题,因为根据Wireshark捕获, 除非先清除DNS缓存,否则* 甚至 在运行此代码时 都不会发送
DNS查询(然后结果甚至更慢-每个分辨率大约4.7秒)。
*

那么,针对操作系统的本地DNS缓存超时实际上需要Java
4.5秒吗?这是没有意义的。命令行实用程序nslookup以更快的速度返回这些IP地址的结果(无法解析),它甚至不使用缓存!

有人可以解释这种现象并提出加快这些解决方案的方法吗?我唯一想到的不用外部库就是使用多个线程,因此至少4.5秒的超时将并行执行。

供参考,我在Windows 7 x64上使用JDK 7u71

编辑:

这似乎是Windows问题。在同一LAN中使用完全相同的DNS并在JDK 1.7u67上运行OpenSuse 13.1的计算机返回以下结果:

没有DNS缓存:

10.0.0.138                                   10.0.0.138  116             216.239.49.245                           216.239.49.245  5098             8.8.8.8                  google-public-dns-a.google.com  301

使用DNS缓存:

10.0.0.138                                   10.0.0.138  5216.239.49.245                           216.239.49.245  9             8.8.8.8                  google-public-dns-a.google.com  40

编辑3:

最终,我不得不通过使用dnsjava进行自己的反向DNS查找来解决此问题。

答案1

小编典典

Windows中的DNS客户端实现似乎有问题。我只是在C#.NET中尝试了相同的逻辑:

 static void Main(string[] args)    {        byte[][] addresses = new byte[][] { new byte[] { 10, (byte) 0, (byte) 0, (byte) 138 },            new byte[] { (byte) 216, (byte) 239, (byte) 49, (byte) 245 },            new byte []{ 8, (byte) 8, (byte) 8, (byte) 8 } };        foreach (byte[] addr in addresses)        {            IPAddress inet = new IPAddress(addr);            DateTime before = DateTime.Now;            String hostName = null;            try            {                hostName = System.Net.Dns.GetHostByAddress(inet).HostName;            }            catch { }            finally            {                DateTime after = DateTime.Now;                Console.WriteLine("{0} {1} {2}", inet.ToString(), hostName!=null?hostName:"N/A", after.Subtract(before));            }        }        Console.ReadLine();    }

这些是结果:

   10.0.0.138 N/A 00:00:04.5604560   216.239.49.245 N/A 00:00:04.7984798   8.8.8.8 google-public-dns-a.google.com 00:00:00.0060006

有趣的是,在刷新DNS缓存后,Windows将所有DNS请求发送到网络。DNS服务器在0.25秒后回复,但如果回答是“ No Such
Name”,则DNS客户端在整个超时时间内仍会阻塞。

c – Windows上的Bonjour / DNS-SD

c – Windows上的Bonjour / DNS-SD

我目前正在开发一个具有C(带Boost)后端的跨平台应用程序(Win / OSX / iOS).在iOS和OSX上,我使用 Cocoa Net服务浏览器委托功能通过mDNS发现嵌入式设备,然后将信息传递到后端以创建与之通信所需的对象.

我想对我的Windows MFC前端采取类似的方法,我发现this文章似乎完全符合我的要求.然而,似乎使用Bonjour SDK有一些非常讨厌的副作用 – 强迫你到MFC的静态链接,在我的情况下,我可以让它正确链接的唯一方法是根本不使用调试DLL,这是不理想的.

所以,Bonjour SDK对我来说并没有什么好处,因为它对我的项目施加了太多限制.使用Cocoa,我实际上只使用了很少的功能 – 实际上只有didFindService和netServiceDidResolveAddress.我想要做的就是找到给定类型的设备并获取其IP地址.

任何人都可以建议另一种解决方案,这将与Windows上的MFC前端一起使用吗?

解决方法

从我从研究这个话题中收集到的内容只需转到 http://www.opensource.apple.com/source/mDNSResponder/mDNSResponder-333.10/并获取源代码.有一个VC项目文件,可以让你按照自己的意愿构建dll.

DNS解析失败怎么办 DNS无法解析的解决方法

DNS解析失败怎么办 DNS无法解析的解决方法

DNS解析失败怎么办?如何解决DNS解析失败的问题?下面就给大家分享电脑DNS解析失败的解决方法。

操作步骤:

第一步:首先在开始菜单中以管理员身份运行命令提示符。

第二步:执行ipconfig /flushdns命令,当出现“successfully flushed the dns resolver cache”的提示时就说明当前计算机的缓存信息已经被成功清除。

第三步:接下来我们再次访问域名时,就会到DNS服务器上获取最新解析地址,再也不会出现因为以前的缓存造成解析错误故障了。

Docker无法解析专用网络上的DNS

Docker无法解析专用网络上的DNS

我的机器位于具有专用DNS服务器和用于DNS解析的专用区域的专用网络上。我可以从主机上解析此区域中的主机,但不能从主机上运行的容器中解析主机。

主持人

root@host:~# cat /etc/resolv.conf# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTENnameserver 127.0.1.1root@host:~# ping privatedomain.ioPING privatedomain.io (192.168.0.101) 56(84) bytes of data.

集装箱

root@container:~# cat /etc/resolv.conf# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTENnameserver 8.8.8.8nameserver 8.8.4.4root@container:~# ping privatedomain.ioping: unknown host privatedomain.io

很明显,Google的公共DNS服务器不会解决我的私有DNS请求。我知道我可以使用docker --dns192.168.0.1DOCKER_OPTS="--dns192.168.0.1"在中设置强制设置/etc/default/docker,但是我的笔记本电脑经常切换网络。似乎应该有系统的方法来解决此问题。

答案1

小编典典

Docker
/etc/resolv.conf通过复制主机的/etc/resolv.conf,并过滤掉任何本地名称服务器(例如127.0.1.1)来进行填充。如果之后没有名称服务器,则Docker将添加Google的公共DNS服务器(8.8.8.8和8.8.4.4)。

根据Docker文档:

注意 :如果需要访问主机的localhost解析器,则必须在主机上修改DNS服务,以侦听可从容器内部访问的非localhost地址。

主机上的DNS服务是dnsmasq,因此,如果您使dnsmasq监听您的docker
IP,并将其添加到resolv.conf中,则docker将配置容器以将其用作名称服务器。

1 创建/编辑/etc/dnsmasq.conf†并添加以下行:

interface=lointerface=docker0

2 找到您的Docker IP(在本例中为172.17.0.1):

root@host:~# ifconfig | grep -A2 docker0docker0   Link encap:Ethernet  HWaddr 02:42:bb:b4:4a:50            inet addr:172.17.0.1  Bcast:0.0.0.0  Mask:255.255.0.0

3 创建/编辑/etc/resolvconf/resolv.conf.d/tail并添加以下行:

nameserver 172.17.0.1

4 重启网络,更新resolv.conf,重启docker:

sudo service network-manager restartsudo resolvconf -usudo service docker restart

您的容器现在将能够从主机使用的任何DNS服务器解析DNS。

†路径可能是/etc/dnsmasq.conf/etc/dnsmasq.conf.d/docker.conf/etc/NetworkManager/dnsmasq.conf,或/etc/NetworkManager/dnsmasq.d/docker.conf根据您的系统和个人喜好上。

domain-name-system – DNS反向查找不起作用

domain-name-system – DNS反向查找不起作用

我正在创建一个权威的绑定服务器.我有一段时间没有在DNS上工作过.

我的反向查找在Internet上失败了,但是当我在nslookup上直接连接到服务器时,我能够成功地进行反向查找.

正向查找工作正常.

关于这可能是什么的任何想法?

解决方法

好的,你已经说过针对NS的直接查询正在运行,而且这是你自己的ARIN任务.

假设您尚未这样做,则需要向ARIN提交请求以更改他们为分配保留的信息.在这个信息块中是委托处理netblock的反向DNS的名称服务器.

完成此操作后,主机查询根服务器~xxx.in-addr.arpa将知道转到RIR然后是您自己的名称服务器以获取正确的PTR信息.

我无法向您提供有关ARIN变更请求的具体信息.我在池塘的另一边接受过训练,我们在这里做的事情略有不同;)

关于Windows上的DNS反向查询会阻塞几秒钟,以获取无法解析的IP地址dns反向解析配置 windows的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于c – Windows上的Bonjour / DNS-SD、DNS解析失败怎么办 DNS无法解析的解决方法、Docker无法解析专用网络上的DNS、domain-name-system – DNS反向查找不起作用的相关信息,请在本站寻找。

本文标签: