¿Cómo puedo agregar dominios de búsqueda adicionales al resolv.conf creado por dhclient en CentOS

35

Cuando mi máquina virtual CentOS arranca, usa DHCP para obtener una dirección IP. También sobrescribe resolv.conf con la configuración de DNS proporcionada por el servidor DHCP. El servidor DHCP no proporciona ningún dominio de búsqueda, por lo que me gustaría que dhclient lo coloque en una lista de dominios de búsqueda cuando lo escriba. ¿Cómo puedo configurar dhclient para hacer esto?

Martin Hilton
fuente

Respuestas:

32

Ninguno de esos funcionó, pero el último fue el más cercano. Para Red Hat 6, use en DOMAINlugar de SEARCHcomo en el ejemplo anterior y la ubicación del archivo es diferente.

Modifiqué el archivo /etc/sysconfig/network-scripts/ifcfg-eth0

y cambiado

DOMAIN=domain.com

a

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

Y todo funcionó.

Dean Hiller
fuente
3
Debería poder usar ambos DOMAINy SEARCH github.com/mcr/isc-dhcp/blob/master/common/resolv.c#L68
Radek Simko
Esta técnica de configuración de DOMAIN también funcionó para mí en CentOS 6.5, aunque mi resolve.conf es generado por NetworkManager en lugar de dhclient. El archivo resolve.conf generado combinó mis entradas con las del servidor DHCP.
PolyTekPatrick
11

También puede agregar una cadena a /etc/dhcp3/dhclient.conf de esta manera

prepend domain-search "domain1.com", "domain2.com";

Tenga en cuenta que este método también funciona con Debian Lenny y Squeeze.

Vyacheslav Gusev
fuente
7

Me las arreglé para resolver esto al final. Agregué una línea como la siguiente a/etc/dhclient-eth0.conf

append domain-name "example.com";
Martin Hilton
fuente
4

Esto es principalmente una nota para RHEL7 para reducir la prueba y el error. La respuesta de Dean de usar DOMAIN="domain1.exmaple.com domain2.example.com"en /etc/sysconfig/network-scripts/ifcfg-device.confobras. Una nota interesante es que el dominio del host que obtiene la conexión de DHCP siempre se antepone a la ruta de búsqueda, incluso si lo deja fuera DOMAIN=o lo coloca más adelante en una lista DOMAIN=. Parece que /sbin/dhclient-scripttiene un montón de lógica relacionada con esto.

En mis pruebas, descubrí que la sugerencia de Philip de usar /etc/dhcp/dhclient-device.conftambién funciona, aunque hay un comportamiento extraño con eso, muy probablemente debido a la misma lógica /sbin/dhclient-scriptque trata de mover las cosas. Por ejemplo, ni reemplaza ni antepone el trabajo como se esperaba, el dominio del host será el primero. Como nota al margen de este método, /var/lib/NetworkManager/dhclient-device.confes el archivo NetworkManager generado y es utilizado por el cliente. Si tiene un archivo /etc/dhcp/que se lee, lo verá pegado en la parte superior del archivo y algunas opciones adicionales agregadas a continuación.

Matt Pie
fuente
AWS Linux (RHEL), DOMAIN="your.domain"no funcionó para mí, restablecer después de reiniciar
radtek
2

La /etc/dhclient-eth0.confrespuesta anterior no funcionó para mí. No tengo un /etc/dhcp3directorio, así que tampoco pensé que fuera a funcionar.

Después de examinar el /sbin/dhclient-scriptarchivo (que crea /etc/resolv.confen mi sistema Centos 5.6), agregué la línea de BÚSQUEDA a continuación para/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"

Luego:

# 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
BabarOnWheels
fuente
2

Para cualquiera que esté pasando por el montón de secuencias de comandos bastante opacas de Fedora / Red Hat, la respuesta, al menos en la última AMI de Amazon, es /etc/dhclient-eth0.conf (y no la carpeta vacía señuelo en / etc / dhcp /). El archivo no está presente y deberá crearse.

Dr. David C Crooke
fuente
2
Agregar SEARCH a ifcfg-eth0 / etc / sysconfig / network-scripts / ifcfg-eth0 también funciona en la versión de Amazon de Fedora. En versiones anteriores de Red Hat aparentemente era DOMINIO. Recomendaría esto sobre lo anterior.
Dr. David C Crooke
2

En CentOS 6, estoy usando el siguiente archivo para agregar mi dominio de búsqueda DNS preferido:

# 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
#

Este archivo es el primero que se verifica en /etc/sysconfig/network-scripts/ifup-eth:

if [ -s /etc/dhcp/dhclient-${DEVICE}.conf ]; then
   DHCLIENTCONF="-cf /etc/dhcp/dhclient-${DEVICE}.conf";

Vea también: redhat - Configuración de DHCP en RHEL 6 - Falla del servidor

Philip Durbin
fuente
Una nota para agregar: si está especificando múltiples dominios de búsqueda para dhclient utilizando (option|supersede|*) domain-search ..., asegúrese de seguir las dhcp-options(5)especificaciones de la página de manual para citar dominios individuales: option domain-search "example.com", "sales.example.com", "eng.example.com";muchas distribuciones antiguas de dhclient permitieron el formato, "example.com sales.example.com eng.example.com";pero esta compatibilidad se ha eliminado en los últimos años debido a correcciones de errores bugs.launchpad.net/ubuntu/+source/isc-dhcp/+bug/777785
Patrick
1

En Fedora 19 agregue las siguientes líneas a /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";
}

Trabaja bien con NetworkManager. Detalles ver:# man dhclient.conf

Ruslan K
fuente
no funciona para aws linux (rhel)
radtek
0

Agregue al servidor dchp conf (isc dhcpd):

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

Donde domain1.com, etc. son los sufijos de dominio que desea agregar al archivo resolv.conf en cada cliente.

LinuxUser
fuente
0

Como no veo esta respuesta y funcionó para mí (mientras que los otros no), aquí está: edite de /etc/resolvconf/resolv.conf.d/basela misma manera que lo haría /etc/resolv.conf. Necesitarás resolvconfinstalado.

appas
fuente