在启动时更改/设置DNS设置

我有一种情况,我不提供对机器的访问权限,但可能存在需要更改IP设置的情况。 我已经通过提供带有静态和DHCP信息(适当时重命名)的文件的USB记忆棒和重启后的脚本,检查USB记忆棒的文件并覆盖/ etc / network / interfaces

一切都好。

但是,文件/etc/resolv.conf保存了DNS信息(据我所知),我不确定这个文件的结构。

对于我构建文件/etc/resolv.conf的最佳方法是什么,这个文件可以用上面的/ etc / network / interfaces覆盖,但是使用DNS设置?

举个例子,我使用静态IP,我的/etc/resolv.conf看起来像这样:

nameserver 192.168.1.254 

我看过一个演示文件,其中似乎包含在/ 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 

我可以将所有信息都放在一个文件中吗? 如果是这样,那么/etc/resolv.conf文件中会出现什么?

说实话,我宁愿把它全部放在一个文件中,这样它就可以让最终用户更容易修改一个文件。

如果它可以在一个文件中完成,那么DHCP的一个例子(关于DHCP设置)

提前感谢您的任何帮助和建议!

你不应该在Ubuntu中编辑/etc/resolv.conf

当DHCP客户端,NetworkManager或ifup更改DNS信息时,Ubuntu正在使用resolvconf程序生成/etc/resolv.conf

最好的办法是添加

 dns-nameservers 192.168.3.45 192.168.8.10 

/etc/network/interfaces的相应节。 进行此更改后,您通常必须使用ifdownifup将信息的界面推送到resolvconf并因此推送到/etc/resolv.conf ,但是可以在没有upup的情况下推送信息,如以下答案中所述还提供了一些可能对您有帮助的背景信息。

更改/ etc / network / interfaces后,如何让resolvconf重新生成resolv.conf?