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


编辑/etc/network/interfaces 中的 dns-nameservers,无需重新启动

,

问题描述

/etc/network/interfaces 中编辑 dns-nameservers 后,如何告诉 resolvconf(8) 在不重新启动网络的情况下读取新值? (导致服务中断)

-u 选项似乎不起作用,它只是更新回相同的值。

最佳答案

你是对的,“resolvconf -u”不足以激活你所做的更改。该命令仅从 resolvconf 的数据库更新 resolv.conf,而您需要更新数据库。

假设有问题的接口是 eth0。假设在 /etc/network/interfaces 中有一个如下所示的节。

iface eth0 inet static
    [...]
    dns-nameservers 1.1.1.1 2.2.2.2

现在更改 “dns-nameservers” 行。要激活此更改,请执行以下操作(请注意 && 避免破坏可能打开的 ssh 连接)

ifdown eth0 && ifup eth0

或重新启动。

次佳答案

我最近两次遇到这个问题。

第一次,我执行了 sudo ifdown eth0,这当然终止了我的 ssh 连接并使机器忽略其 NIC。哎哟。我必须通过服务器上的 IPMI 接口进入才能再次获得控制权。

第二次,我从之前的错误中吸取了教训,并做了 sudo ifdown eth0 ; sudo ifup eth0 。当然,ssh 窗口死掉了,但是机器很快响应了新的 ssh 连接,并且我的 DNS 修改生效了。我在第二台服务器上做了同样的事情,但这次我在 ssh 窗口中输入任何内容之前等待。窗口保持打开状态,DNS 更改已应用。惊人的。

关键是使用 shell 的分号运算符,以便两个命令都在一行上。这样,在接口关闭时就已经输入了恢复接口的命令。我想我可以编写一个脚本并执行它,但这似乎更容易。

更新:还有另一种方法可以做到这一点。您还可以一步重新启动 Ubuntu 网络服务: sudo /etc/init.d/networking restartsudo service network-interface restart INTERFACE=eth0 。感谢 JFA 的启发。

参考资料

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