我知道它们是在 中定义的/etc/resolv.conf
,但如果它不存在怎么办?更具体地说,如何找到 DHCP 返回的 DNS 服务器?
在 GNOME 中,您可以使用 NetworkManager 小程序查看任何连接的主 DNS,那么您将如何从命令行执行相同操作呢?
我知道它们是在 中定义的/etc/resolv.conf
,但如果它不存在怎么办?更具体地说,如何找到 DHCP 返回的 DNS 服务器?
在 GNOME 中,您可以使用 NetworkManager 小程序查看任何连接的主 DNS,那么您将如何从命令行执行相同操作呢?
通常 dhclient.leases 文件位于
/var/lib/dhcp3/dhclient.leases
,键入以下命令:less /var/lib/dhcp3/dhclient.leases
或者
cat /var/lib/dhcp3/dhclient.leases
或者
您可以使用 grep 命令获取 DHCP 服务器地址,输入:
grep dhcp-server-identifier /var/lib/dhcp3/dhclient.leases
或者
dhclient eth0
我最近遇到了这个问题,我
dhcpcd
的配置错误,因为没有设置 DNS 服务器。我发现我可以使用以下命令查询 DHCP 可用的名称服务器:该命令会输出一堆网络连接信息。查找以 开头的行
new_domain_name_servers
。从这里我可以手动设置名称服务器。
查询 DHCP 服务器的另一种解决方案:
输出告诉您 DHCP 服务器提供的名称服务器:
我找到了我的 DHCP 租约信息,
/var/lib/dhclient/dhclient-eth0.leases
以防有人在/var/lib/dhcp3/dhclient.leases
那么,为什么不简单地挖掘呢?
看看最后几行:;; 服务器:192.168.1.15#53(192.168.1.15)
如果 /etc/resolv.conf 中没有任何内容,则 DNS 解析(即使用 /etc/nsswitch.conf 中定义的 dns 进行解析)将不起作用。这就是 dig、host 和 libc 例程用于进行 DNS 解析的内容。如果此文件中没有指定任何内容,则 DNS 解析将不起作用(尽管主机解析可能通过其他方式起作用,如果配置了另一种主机解析方法,例如 NIS(这不太可能))。
此命令显示您网络上的 DNS 服务器
挖 | grep 服务器:| awk -F# '{ 打印 $1 }' | awk -F: '{ 打印 $2 }'
172.17.0.1
如果您使用 NetworkManager,为YourConnectionName连接获取 ipv4 DNS 服务器,您可以使用类似
用于
nmcli connection show YourConnectionName
获取所有可能的选项和值。阅读
/etc/resolv.conf
。就这样。man resolv.conf
也很有用。在现代发行版中,它看起来像
其中 91.193.220.7 是我的 ISP 的 DNS 服务器