DNS服务器地址不再存储在resolv.conf中; 它现在在哪里?
我有时使用任务栏中的NetworkManager指示器切换DNS服务器; 这在以前的版本中运行良好,并且实际上在12.04下工作正常,除了一件事:我使用Conky显示一些系统信息,包括DNS地址,我注意到它现在总是显示127.0.0.1
。
我查看了resolv.conf
,它获取了这个地址,当然,这就是它总是说的。 我有一行,警告不要手动编辑文件:
nameserver 127.0.0.1
我现在知道检查DNS服务器地址的唯一方法是打开网络管理器GUI以检查信息页面。 那么,这些信息现在存储在哪里?
信息由网络管理员在内部管理。 您可以使用随附的nmcli
工具在命令行上获取此信息。
您可以使用以下命令检索特定网络接口的网络管理器信息:
nmcli dev list iface eth0
(将eth0
替换为您要连接的接口)。 输出将包括有关接口的信息以及该接口上当前活动的连接:
GENERAL.DEVICE: eth0 GENERAL.TYPE: 802-3-ethernet ... IP4.DNS[1]: 192.168.0.1 ...
从此输出中提取您所需的信息应该不会太困难。
如果您需要一种不依赖于nmcli
输出的编程方法来访问此数据,则还应从Network Manager的D-Bus接口获取此信息。
Ubuntu开发人员应该在/etc/resolv.conf
记录这些更改,但是没有。
这是一个快速命令列表,可以帮助您前进。
-
显示当前的DNS服务器
nm-tool | grep DNS
-
在
/etc/dhcp/dhclient.conf
定义静态DNS服务器。 添加以下行,然后重新启动本地解析程序:supersede domain-search "sub.mydomain.com", "domain.com"; prepend domain-name-servers 192.168.0.1;
从命令提示符:
invoke-rc.d network-manager restart
请注意,使用nmcli可能并不总能为您提供完整的答案。 例如,如果您使用openconnect(或推荐vpnc)来启动VPN,并且如果您安装了resolvconf软件包(以便自动管理/etc/resolv.conf),您会发现它仍然可以自动插入VPN的DNS设置在127.0.0.1之前的/etc/resolv.conf中。 在这种情况下,只检查(例如)“nmcli -f IP4开发列表”将不会提供真正的当前DNS列表。 不确定这种情况是否会影响你,但还是值得一提。