NetworkManager在哪里存储用于生成resolv.conf的域名?

我在使用CentOS 6正确设置域名时遇到了问题。我的resolv.conf如下所示:

nameserver 198.6.100.25 nameserver 198.6.100.53 nameserver 198.6.100.38 # Generated by NetworkManager domain andyshinn.as search vcolo.andyshinn.as 

我有一个单一的eth0接口,具有以下configuration:

 DEVICE=eth0 BOOTPROTO=none NM_CONTROLLED=yes ONBOOT=yes TYPE=Ethernet HWADDR=00:0c:29:3b:2a:70 IPADDR=192.168.50.6 NETMASK=255.255.255.0 DNS2=198.6.100.53 GATEWAY=192.168.50.1 DNS1=198.6.100.25 IPV6INIT=no USERCTL=no 

主机文件也可以参考:

 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.50.6 myvm myvm.vcolo.andyshinn.as 

我正在尝试将域名更改为vcolo.andyshinn.as 。 但重启后,它会回到andyshinn.as 。 通过内嵌的评论,我可以看到它是由NetworkManager生成的。 但是, system-config-network-tui没有关于域名(只有searchpath)的任何信息。

fgrep -r 'andyshinn.as' /etc/*只会启动/etc/sysconfig/networking/profiles/default/resolv.conf作为编辑的另一种select。 但我已经试过编辑这个文件也有相同的结果。 这是在VMware Workstation中运行的虚拟机。 但是我已经禁用了VM正在使用的VMnet接口的DHCP服务器。

而不是盲目地禁用NetworkManager(这似乎是大多数NetworkManager相关问题的答案),我想了解更多关于它如何工作和保存configuration。 那么我的系统如何以andyshinn.as作为域名结束,还有什么需要更新才能将其设置为vcolo.andyshinn.as

您需要编辑以下文件: /etc/sysconfig/network 。 设置以下内容:

 HOSTNAME=vcolo.andyshinn.as DOMAIN=andyshinn.as 

将短名称设置为/ etc / sysconfig / network

 HOSTNAME=vcolo 

编辑/ etc / hosts并设置另一行,如下所示:

 [root@vcolo ~]# cat /etc/hosts 127.0.0.1 vcolo.andyshinn.as vcolo 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 

NetworkManager使用您的系统上已经存在的文件。 看看这个脚本,/ /etc/NetworkManager/dispatcher.d/11-dhclient /NetworkManager/ /etc/NetworkManager/dispatcher.d/11-dhclient ,这是NetworkManager的configuration文件的一部分。

具体有这两行:

 ... [ -f /etc/sysconfig/network ] && . /etc/sysconfig/network ... ... [ -f /etc/sysconfig/network-scripts/ifcfg-$interface ] && \ . /etc/sysconfig/network-scripts/ifcfg-$interface ... 

如果这些文件存在,这些行将获取/ etc / sysconfig / network中的内容以及不同的ifcfg- $接口文件(ifcfg-eth0,ifcfg-wlan0等)。

所以通常你想要像这样设置你的/etc/sysconfig/network文件:

 NETWORKING=yes HOSTNAME=myhost 

并设置DHCP客户端configuration文件/etc/dhcp/dhclient.conf ,以便它包含这些行:

 supersede domain-name "my.domain.com"; prepend domain-search "my.domain.com"; 

资源

  • 如何在Fedora / CentOS / RHEL Linux上覆盖DHCP设置

这对我在Fedora 14上工作。你也可以尝试下面的命令:

 system-config-network 

转到“DNSconfiguration” ,您将find一个单元来完成主机的主机名和域。

我发现,虽然我的networking掩码在/ etc中的各种ifcfg-eth0文件中正确configuration,但在引导时错误地设置了它。 没有find它在哪里设置,但使用system-config-network我发现它设置为错误的值。 更正了这个工具和问题解决!

希望它也适用于你。