我终于从 7.10 迁移到了 12.04。还有最后一部分要完成,但我不知所措。我在每台服务器上都使用 Puppet,过去我在 resolv.conf 中为 puppetmaster 包含了一个名称服务器地址和一个搜索域名。
search puppetmaster.com
nameserver 192.168.1.XXX
在 12.04 中,resolv.conf 在重新启动时会被覆盖。我无法为这些使用静态 IP,因此使用 /etc/network/interfaces 来帮助我是毫无意义的。
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
有没有办法让 resolvconf 在头部、尾部或底部处理这个问题?如果有,是否有任何示例可用于在我的服务器上进行调整。
任何帮助深表感谢。
答案1
最好让您的 DNS 服务器能够将“puppet”解析为正确的地址,并且让您的 DHCP 服务器提供 DNS 名称服务器地址和搜索列表,或者(如果您有静态 IP 地址)在 /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
但是如果您确实想通过 resolvconf 配置文件执行此操作,您将需要编辑/etc/resolvconf/resolv.conf.d/base
。在该文件中,输入您的信息,就像在中一样resolv.conf
。
nameserver 192.168.1.XXX
然后告诉 resolvconf 重新生成resolv.conf
。
sudo resolvconf -u
答案2
我认为答案是检查你的/etc/dhcp/dhclient.conf
,即不要向dns-nameservers
你的DHCP服务客户。
然后更新您的/etc/network/interfaces
auto eth0
iface eth0 inet dhcp
dns-search google.com
dns-nameservers dnsserverip
然后你resolv.conf
就会按照你想要的方式自动配置。
添加到dns-search
然后运行/etc/init.d/networking restart
(即使这个脚本已被弃用,但它仍然有效)。
答案3
这可能是由您首次安装 Ubuntu 时的 DHCP 配置引起的。请尝试以下 3 步流程来处理此自动配置问题。
第一的
编辑您的接口配置,位于:/etc/network/interfaces
添加以下行iface lo inet loopback
:
dns-nameservers yourdns youraltdns
以 Google DNS 为例,您可能想要使用以下内容:
dns-nameservers 8.8.8.8 8.8.4.4
第二
编辑您的 DHCP 配置文件,位于:
/etc/dhcp/dhclient.conf
在每一行上使用 将语法标记为注释#
,或者直接删除每个请求名称服务器。在 16.04 中,您可能不需要在此处进行任何更改。
第三
使用以下命令重新启动网络:
/etc/init.d/networking restart
在 16.04 中:
sudo ifdown -a
sudo ifup -a
答案4
请查看 的resolvconf
手册页。您可以通过创建以下代码强制包含某些 DNS 设置/etc/resolvconf/resolv.conf.d/base
:
/etc/resolvconf/resolv.conf.d/base
File containing basic resolver information. The lines in this
file are included in the resolver configuration file even when
no interfaces are configured.
还有其他特殊文件(头部和尾部),这些可能有助于您实现您想要的。