CentOS7 hostnamectl set-hostname se equivoca con /etc/resolv.conf

CentOS7 hostnamectl set-hostname se equivoca con /etc/resolv.conf

CentOS7. La red está bien.

# cat /etc/resolv.conf 
nameserver 192.168.1.1

Entonces decido cambiar el nombre del host.

# hostnamectl set-hostname host.domain
# reboot
# cat /etc/resolv.conf 
# Generated by NetworkManager
search domain


# No nameservers found; try putting DNS servers into your
# ifcfg files in /etc/sysconfig/network-scripts like so:
#
# DNS1=xxx.xxx.xxx.xxx
# DNS2=xxx.xxx.xxx.xxx
# DOMAIN=lab.foo.com bar.foo.com

¿Por qué hostnamectl set-hostnameme arruina /etc/resolv.conf?

Respuesta1

Solo para reiterar, como respuesta oficial, lo que dice MikeA en los comentarios de la pregunta:

No es necesariamente dhcpclient, pero puede ser NetworkManager. Si especifica DNS1, DNS2 y DOMINIO en el mismo archivo, debería crear el /etc/resolv/conf correcto para usted.

Si no tiene DNS1, DNS2 y DOMINIO en este archivo, debe agregar manualmente las líneas correctas a su /etc/resolv.conf (es decir, búsqueda y servidor de nombres) - MikeA

Seguí sus comentarios y tuve éxito (ver más abajo para más detalles).

NetworkManager (CentOS 7 - forma actual)

  1. Agregue las siguientes líneas a /etc/sysconfig/network-scripts/ifcfg-<inf>: DNS1=8.8.8.8 DNS2=8.8.4.4 DOMAIN=mydomain.com
  2. Reiniciar


resolv.conf "estático" (a la antigua usanza)

  1. PEERDNS=noen/etc/sysconfig/network-scripts/ifcfg-<inf>
  2. Agregue manualmente las líneas correctas a /etc/resolv.conf(es decir, búsqueda, servidor de nombres) (Así es esencialmente como



Más información y detalles


Llegué a esta pregunta como resultado de un error de red.

El servidor es una máquina virtual CentOS 7 que se ejecuta en un entorno KVM.

El sistema operativo se instaló a través de la plantilla del Panel de control de SolusVM.

Después de instalar CentOS 7, hice una de dos formas para cambiar el nombre de host, pero no recuerdo cuál:

  • hostname myserver.mydomain.com; o
  • Se utilizó la pestaña Nombre de host del panel de control de SolusVM

Estoy bastante seguro de que solo hice lo último, ya que tengo una confirmación GIT de inicio que muestra hostnamey resolv.confusa el nombre de host anterior, pero hoststiene una única entrada con IP estática y un nuevo nombre de host/dominio. Consulte a continuación las diferencias.

Parece que este cambio no persistió por una razón u otra, cuando la VM se suspendió a través de SolusVM (o el administrador KVM), lo que provocó un reinicio, el nombre de host volvió al original mediante systemd.

Luego descubrí que en CentOS 7 el nombre de host se debe configurar usando hostnamectl set-hostname myserver.mydomain.com. [1]

Después de hacer esto y reiniciar, descubrí que no tenía resolución DNS, por ejemplo, nslookup google.comy ping google.comobtuve errores de DNS/sin resolución.

Parece que NetworkManager eliminó cualquier configuración de DNS que se haya establecido a través de la plantilla de instalación de SolusVM CentOS 7, aunque no puedo decir con certeza quién o qué causó los cambios, pero GIT definitivamente deja claro que se realizaron cambios. a /etc/hostnamey /etc/resolv.confjusto /etc/machine-infodespués de ejecutar hostnamectl ...el comando (nuevamente, consulte las diferencias a continuación).

Estos son los pasos exactos que seguí para cualquiera que se encuentre en una situación similar, para solucionar problemas o como ejemplo explícito:

Objetivo: actualizar hostname.domainname (fqdn)

(explícitamente: miOLDhostname.myOLDdomain.com -> myNEWhostname.myNEWdomain.com)

  1. Estado inicial:

    • hostname:myOLDhostname.myOLDdomain.com
    • resolv.conf:
      # Generated by NetworkManager search myOLDdomain.com nameserver 8.8.8.8 nameserver 8.8.4.4
    • machine-info: /dev/null(es decir, no existente)
  2. Comando ejecutadohostnamectl set-hostname myNEWhostname.myNEWdomain

  3. Reiniciar. Después de reiniciar, vuelvo a ingresar a VM.
  4. Intente nslookup google.comobtener ping google.comerrores como:ping: unknown host google.com
  5. cat /etc/resolv.confahora muestra:
    # Generated by NetworkManager
    search myNEWdomain.com


    # No nameservers found; try putting DNS servers into your
    # ifcfg files in /etc/sysconfig/network-scripts like so:
    # DNS1=xxx.xxx.xxx.xxx
    # DNS2=xxx.xxx.xxx.xxx
    # DOMAIN=lab.foo.com bar.foo.com
  6. Después de buscar, encuentro /etc/sysconfig/network-scripts/ifcfg-eth0que no tiene entradas, y, lo que provoca que DNS1falten DNS1entradas en .DOMAINnameserver/etc/resolv.conf
  7. Adjunto lo siguiente vía sudoedit /etc/sysconfig/network-scripts/ifcfg-eth0:
    DNS1=8.8.8.8
    DNS2=8.8.4.4
    DOMAIN=myNEWdomain.com
  8. vuelvo a ejecutar el comandohostnamectl set-hostname myNEWhostname.myNEWdomain
  9. Sin embargo, todavía no tengo DNS nslookupy pingsigo fallando.
  10. Intento reiniciar NetworkManager como se recomiendasystemctl restart NetworkManager.service
  11. Todavía no hay DNS, así que ejecuto el comandoreboot
  12. Después de reiniciar, inicio sesión a través de ssh nuevamente y FUNCIONA. pingy nslookpambos tienen éxito.
  13. Ahora reviso cat /etc/resolv.confy veo las entradas incluidas nameserver:
    # Generated by NetworkManager
    search myNEWdomain.com
    nameserver 8.8.4.4
    nameserver 8.8.8.8

Para GIT, uso etckeeper(esencialmente administro un repositorio GIT en /etc) y muestra la configuración inicial, y explícitamente, no hubo otros cambios en los archivos relacionados con la red /etc/{hostname,resolv.conf,hosts}hasta que ejecuté el hostnamectlcomando.

Respuesta2

Puede decirle a Networkmanager que no cambie resolv.confagregando un nodnsfragmento en la sección principal en /etc/NetworkManager/conf.d/nodns.conf:

[main]
dns=none

(no lo olvides systemctl restart NetworkManager)

información relacionada