如何在CentOS的dhclient创建的resolv.conf中添加其他搜索域?
当我的CentOS虚拟机启动时,它使用DHCP来获取IP地址。它还会用 DHCP 服务器提供的 DNS 设置覆盖 resolv.conf。DHCP服务器没有提供任何搜索域,所以我想让dhclient在写入时放入搜索域列表。我如何配置dhclient来做这件事?
当我的CentOS虚拟机启动时,它使用DHCP来获取IP地址。它还会用 DHCP 服务器提供的 DNS 设置覆盖 resolv.conf。DHCP服务器没有提供任何搜索域,所以我想让dhclient在写入时放入搜索域列表。我如何配置dhclient来做这件事?
这些都没有用,但最后一个是最接近的。对于Red Hat 6,使用DOMAIN
而不是上面例子中的SEARCH
,文件位置也不一样。
我修改了文件/etc/sysconfig/network-scripts/ifcfg-eth0
,把
DOMAIN=domain.com
改成
DOMAIN="domain.com sub.domain.com"
,都能用。
你也可以在/etc/dhcp3/dhclient.conf中添加这样的字符串
prepend domain-search "domain1.com", "domain2.com";
注意,这个方法在Debian Lenny和Squeeze中也适用。
最后我设法解决了这个问题。我在/etc/dhclient-eth0.conf
append domain-name "example.com";
```中添加了如下一行。
这主要是RHEL7的注意事项,以减少试错。 Dean的回答 的使用DOMAIN="domain1.exmaple.com domain2.example.com"
中的/etc/sysconfig/network-scripts/ifcfg-device.conf
工作。一个有趣的说明是,连接从DHCP获得的主机域总是被预置到搜索路径中,即使你不在DOMAIN=
中使用它,或者把它放在DOMAIN=
的列表中稍后。看来/sbin/dhclient-script
有一堆逻辑与此有关。
在CentOS 6上,我使用以下文件来添加我喜欢的DNS搜索域。
# cat /etc/dhcp/dhclient-eth0.conf
interface "eth0" {
supersede domain-search "dns1.example.com";
}
# getenforce
Enforcing
# ls -lZ /etc/dhcp/dhclient-eth0.conf
-rw-r--r--. root root system_u:object_r:bin_t:s0 /etc/dhcp/dhclient-eth0.conf
#
这个文件是/etc/sysconfig/network-scripts/ifup-eth
中第一个被检查到的文件。
if [-s /etc/dhcp/dhclient-${DEVICE}.conf]; then
DHCLIENTCONF="-cf /etc/dhcp/dhclient-${DEVICE}.conf";
上面的/etc/dhclient-eth0.conf
答案对我来说没有用。我没有/etc/dhcp3
目录,所以我认为这也不可能成功。
在检查了/sbin/dhclient-script
文件后(在我的Centos 5.6系统上创建了/etc/resolv.conf
),我在/etc/sysconfig/networking/devices/ifcfg-eth0:
DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=08:00:24:61:17:AC
ONBOOT=yes
TYPE=Ethernet
SEARCH="example.com sub1.example.com sub2.example.com"
然后添加了下面的search行。
# ifdown eth0
# ifup eth0
# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search example.com sub1.example.com sub2.example.com
nameserver 10.1.0.11
对于任何人都会去看Fedora / Red Hat那堆相当不透明的脚本,至少在亚马逊最新的AMI上,答案是/etc/dhclient-eth0.conf(而不是在/etc/dhcp/的诱饵空文件夹)。该文件并不存在,需要创建。