如何在CentOS中将附加的搜索域添加到dhclient创建的resolv.conf中


35

当我的CentOS虚拟机启动时,它使用DHCP来获取IP地址。它还使用DHCP服务器提供的DNS设置覆盖resolv.conf。DHCP服务器不提供任何搜索域,因此我想让dhclient在写入时将其放入搜索域列表中。如何配置dhclient来做到这一点?

Answers:


32

这些都不起作用,但是最后一个是最接近的。对于Red Hat 6,使用DOMAIN而不是SEARCH如上例所示,并且文件位置不同。

我修改了文件 /etc/sysconfig/network-scripts/ifcfg-eth0

并改变了

DOMAIN=domain.com

DOMAIN="domain.com sub.domain.com"

而且一切正常。


3
您应该能够同时使用DOMAINSEARCH github.com/mcr/isc-dhcp/blob/master/common/resolv.c#L68
拉德克SIMKO

即使我的resolve.conf是由NetworkManager而不是dhclient生成的,这种设置DOMAIN的技术也适用于CentOS 6.5。生成的resolve.conf文件将我的条目与DHCP服务器的条目合并在一起。
PolyTekPatrick


7

我最终设法解决了这个问题。我在下面添加了一行/etc/dhclient-eth0.conf

append domain-name "example.com";

4

这主要是RHEL7减少反复试验的注意事项。院长DOMAIN="domain1.exmaple.com domain2.example.com"/etc/sysconfig/network-scripts/ifcfg-device.conf作品中使用的答案。一个有趣的注释是,从DHCP获得的连接的主机域始终位于搜索路径的前面,即使您将其排除在外DOMAIN=或放在以后的列表中DOMAIN=。看起来/sbin/dhclient-script与此相关的逻辑很多。

在我的测试中,我发现Philip的使用建议/etc/dhcp/dhclient-device.conf也是可行的,尽管这样做有一些奇怪的行为,这很可能是由于/sbin/dhclient-script试图移动事物的相同逻辑所致。例如,无论是取代还是未按预期工作,主机的域都将是第一个。作为此方法/var/lib/NetworkManager/dhclient-device.conf的补充说明,它是生成的NetworkManager文件,供客户端使用。如果您有一个文件/etc/dhcp/被读入,您会看到它粘贴在文件顶部,并在下面添加了一些其他选项。


AWS Linux(RHEL)DOMAIN="your.domain"对我不起作用,请在重启后重置
radtek

2

/etc/dhclient-eth0.conf上面的答案对我不起作用。我没有/etc/dhcp3目录,所以我也不认为这也可行。

检查完/sbin/dhclient-script文件(/etc/resolv.conf在Centos 5.6系统上创建)后,我在下面添加了SEARCH行:/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"

然后:

# 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

2

对于正在浏览Fedora / Red Hat相当不透明的一堆脚本的人,答案(至少在Amazon最新的AMI上)是/etc/dhclient-eth0.conf(而不是/ etc / dhcp /上的诱饵空文件夹)。该文件不存在,需要创建


2
将SEARCH添加到ifcfg-eth0 / etc / sysconfig / network-scripts / ifcfg-eth0也适用于Fedora的Amazon版本。在旧版本的Red Hat中,显然是DOMAIN。我在上面建议这样做。
David C Crooke博士2013年

2

在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";

另请参阅:redhat-在RHEL 6上配置DHCP-服务器故障


需要补充的一点-如果您使用来为dhclient指定多个搜索域(option|supersede|*) domain-search ...,请确保遵循dhcp-options(5)手册页中的说明来引用各个域:option domain-search "example.com", "sales.example.com", "eng.example.com";许多dhclient的较早发行版都允许使用该格式,"example.com sales.example.com eng.example.com";但是这种兼容性在过去几年中已被删除。由于错误修复bugs.launchpad.net/ubuntu/+source/isc-dhcp/+bug/777785
Patrick

1

在Fedora 19中,将以下行添加到 /etc/dhcp/dhclient.conf

# /etc/dhcp/dhclient.conf

interface "p2p1"
{
    supersede domain-name-servers 8.8.8.8, 8.8.4.4;
    append domain-name " mydomain.net example.com";
}

与NetworkManager正常工作。详细信息请参见:# man dhclient.conf


不适用于aws linux(rhel)
radtek

0

添加到dchp服务器conf(isc dhcpd):

option domain-name "domain1.com domain2.net domain3.org";

其中domain1.com等是要添加到每个客户端上的resolv.conf文件中的域后缀。


0

由于我没有看到这个答案,因此对我有用(而其他答案则没有),因此这里就是:/etc/resolvconf/resolv.conf.d/base用与您相同的方式进行编辑/etc/resolv.conf。您需要resolvconf安装。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.