在Windows操作系统上,nslookup命令和PowerShell上的Resolve-DnsName cmdlet都可以用于解析域名,但它们的功能并非完全相同。有时候,nslookup命令能够解析域名,Resolve-DnsName cmdlet却不能。甚至于明明用nslookup能够解析域名,浏览器却不能上网,系统也报告无法连接到域控制器。
考虑下面这样的网络配置:
- 接口1:
- 地址:192.168.0.2
- 掩码:255.255.255.0
- DNS服务器:10.248.0.1
- 接口2:
- 地址:10.248.0.2
- 掩码:255.255.0.0
其中,接口1上设置的DNS服务器只能通过接口2访问,接口2上没有设置DNS服务器。
分别使用nslookup和Resolve-DnsName发现,虽然nslookup能够很快显示出域名解析结果,但Resolve-DnsName却报告连接超时。此时,浏览器无法上网,也无法连接到域控制器。
通过Wireshark抓包发现,使用nslookup时DNS请求通过接口2发出,使用Resolve-DnsName时DNS请求通过接口1发出。那么显然,Resolve-DnsName的DNS请求无法被响应,从而最终发生超时。
这种情况可能是两者对多个网络接口的处理方式区别导致的。nslookup对于不同网络接口上设置的DNS服务器,都从系统层面发送DNS请求。Resolve-DnsName在每个网络接口上只使用该网络接口上设置的DNS服务器。
为了解决这个问题,需要将DNS服务器设置在可以访问该DNS服务器的网络接口上:
- 接口1:
- 地址:192.168.0.2
- 掩码:255.255.255.0
- 接口2:
- 地址:10.248.0.2
- 掩码:255.255.0.0
- DNS服务器:10.248.0.1
这样设置之后,Resolve-DnsName命令就可以正常解析域名了,浏览器和域控制器也能正常工作了。
留言
有想法?请给我们留言!您的留言不会直接显示在网站内。