当前位置: 首页>>技术教程>>正文


在更改/etc/network/interfaces后,如何获取resolvconf来重新生成resolv.conf?

, , ,

问题描述

在更新/etc/network/interfaces之后,我将如何获得/etc/resolv.conf更新?我尝试了(以root身份)resolver -uservice networking restart但他们没有工作。我还修复了resolv.conf的符号链接,并再次尝试了resolver -u。最后在挫败中,我重新启动,它通过重建/etc/resolv.conf来解决问题。

Ubuntu 12.04,64位服务器,安装了所有最新的修补程序。

示例/etc/network/interfaces

iface eth0 inet static
    address 192.168.3.3
    netmask 255.255.255.0
    gateway 192.168.3.1
    dns-search example.com
    dns-nameservers 192.168.3.45 192.168.8.10

最佳解决方案

service networking restart并不总是down-upping所有接口的可靠方式。

resolvconf -u命令仅从resolvconf自己的数据库更新resolv.conf。您需要更新数据库。

要更新数据库,必须使用-a-d选项调用resolvconf。当你运行ifup或ifdown时,发生在幕后。所以,通常,与对/etc/network/interfaces的任何其他更改一样,要激活对dns- *选项的更改,必须对有问题的接口进行ifdown,并再次进行ifup。或者你可以重新启动。

如果您希望在不降低if接口的情况下对接口进行更改(可能是因为您正在远程管理计算机并恰好通过该接口进行连接,则natch),则可以通过直接从命令行运行resolvconf来获得相同的结果。这需要更多关于resolvconf语义的知识。假设相关的/e /n /i节是

iface IIII FFFF static
    address ...
    ...
    dns-nameservers X.X.X.X Y.Y.Y.Y
    dns-search SSSS

其中FFFF是地址族(“inet”或”inet6”)。

要激活这些dns- *选项,可以按如下方式运行resolvconf(是的,将字符串中的换行符传送给resolvconf)。

echo "nameserver X.X.X.X
nameserver Y.Y.Y.Y
search SSSS" | sudo resolvconf -a IIII.FFFF

对于问题中给出的节,这将是以下内容。

echo "nameserver 192.168.3.45
nameserver 192.168.8.10
search example.com" | sudo resolvconf -a eth0.inet

有关更多信息,请参阅resolvconf(8)手册页和resolvconf软件包的README文件(/usr/share/doc/resolvconf/README.gz)。

次佳解决方案

虽然默认情况下没有安装联机帮助页,但通过更新脚本选项记录它,只需运行:

sudo resolvconf -u

第三种解决方案

对于那些远程管理您的服务器,您可以:

  1. 更新/etc/network/interfaces中的dns-nameservers

  2. # ifdown eth01; ifup eth01

请注意,这必须在一行上划分; (linux命令行分隔符)。你甚至不应该失去目前的连接。例外是在接口文件中输入错字。如果发生这种情况ifup将失败,您将不得不有物理访问或另一个ethxx连接。

第四种方案

service resolvconf restart将无需大惊小怪地重新生成/etc/resolv.conf文件。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/972.html,未经允许,请勿转载。