我当前网络主机的 DNS 服务器出现问题,无法正确解析百度的 IP 地址。
shell_exec('host -W 2 180.76.5.168');
shell_exec('nslookup 180.76.5.168');
在尝试解析主机时,有没有办法可以定义自己的 DNS 服务器地址?
引用我的本地主机结果的输出...
主机:baiduspider-180-76-5-168.crawl.baidu.com
服务器:Wireless_Broadband_Router.home 地址:192.168.1.1 名称:baiduspider-180-76-5-168.crawl.baidu.com 地址:180.76.5.168
答案1
在尝试解析主机时,有没有办法可以定义自己的 DNS 服务器地址?
是的,我们可以使用以下方法。
方法 #1 - 所有方法尝试从 Google 公共 DNS 解析,您可以根据需要进行更改。
nslookup 180.76.5.168 8.8.8.8
方法#2
dig -x 180.76.5.168 @8.8.8.8
方法#3
host -W 2 180.76.5.168 8.8.8.8
答案2
在 Unix 系统上,有一个名为 的文件nsswitch.conf
,它控制如何解析各种事物的名称。例如,主机名将由该文件中的这一行控制:
hosts: files mdns4_minimal [NOTFOUND=return] dns
这行说:
- 首先查看“文件”(例如
/etc/hosts
)。 - 接下来尝试“mdns4_minimal”,这意味着尝试使用多播 DNS 解析名称。
- “NOTFOUND”意味着前面的 mdns4_minimal 进程的任何 notfound 响应都应被视为权威,并且系统不应尝试继续寻找答案。
- 最后,“dns”参数表示使用旧版单播 DNS 查询。
当尝试通过 mdns4_minimal 解析名称时,/etc/resolv.conf
将查阅该文件以确定以下内容:
- 要查询的名称服务器
- 默认搜索域名
- 默认域名
例如:
# Generated by NetworkManager
domain somedom.net.
search somedom.net.
nameserver 192.168.1.101
nameserver 8.8.8.8
nameserver 8.8.4.4
因此,要在 @RahulPatil 在其答案中列出的选项之外控制默认 DNS 服务器,您需要更改/etc/resolv.conf
文件中的 DNS 服务器。