¿Cómo configurar correctamente el nombre de host y el nombre de dominio?


33

Estoy alquilando un servidor, ejecutando Ubuntu 16.04 en una compañía, llamémoslo company.org.

Actualmente, mi servidor está configurado de esta manera:

  • nombre de host: server737263
  • nombre de dominio: company.org

Aquí está mi FQDN:

user@server737263:~ $ hostname --fqdn
server737263.company.org

Esto no es sorprendente.

También estoy alquilando un nombre de dominio, nombremoslo domain.org. Lo que me gustaría hacer sería cambiar el nombre de mi servidor como server1.domain.org.

Esto significa configurar mi nombre de host como server1y mi nombre de dominio como domain.org.

¿Cómo puedo hacerlo correctamente?

De hecho, la página de manual para hostnameno está clara. Al menos para mí:

HOSTNAME (1)

[...]

ESCOGER UN NOMBRE

  • Cuando se llama con un argumento o con la opción --file, los comandos establecen el nombre del host o el nombre de dominio NIS / YP. hostname usa la función sethostname (2), mientras que los tres domainname, ypdomainname y nisdomainname usan setdomainname (2). Tenga en cuenta que esto es efectivo solo hasta el próximo reinicio. Edite / etc / hostname para un cambio permanente.

[...]

EL FQDN

  • No puede cambiar el FQDN con hostname o dnsdomainname.

[...]

Entonces, ¿parece que la edición /etc/hostnameno es suficiente? Porque si realmente cambiara el nombre de host, habría cambiado el FQDN. También hay un truco que leí para cambiar el nombre de host con el comando sysctl kernel.hostname=server1, pero nada dice si esta es la forma correcta o un truco feo.

Asi que:

  1. ¿Cuál es la forma correcta de configurar el nombre de host?

  2. ¿Cuál es la forma correcta de configurar el nombre de dominio?

Respuestas:


31

Configurando su nombre de host:

  • Querrás editar /etc/hostnamecon tu nuevo nombre de host.

  • Entonces, corre sudo hostname $(cat /etc/hostname).

Configurando su dominio:

  • Luego, en /etc/resolvconf/resolv.conf.d/head, agregará la línea domain your.domain.name(no su FQDN, solo el nombre de dominio).

  • Luego, ejecute sudo resolvconf -upara actualizar su /etc/resolv.conf(alternativamente, solo reproduzca el cambio anterior en su /etc/resolv.conf).

Ambos:

Finalmente, actualice su /etc/hostsarchivo. Debe haber al menos una línea que comience con una de sus IP (loopback o no), su FQDN y su nombre de host. sacando direcciones IPv6, su archivo de hosts podría verse así:

127.0.0.1 localhost
1.2.3.4 service.domain.com service

77
Ambos archivos conf dicen DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTENen mi servidor (misma versión).
Walf

77
No se deje engañar por el hecho de que aparece la advertencia "NO EDITAR" /etc/resolvconf/resolv.conf.d/head. Todo en el archivo de cabecera se antepone al /etc/resolv.confarchivo de salida resultante , por eso la advertencia está ahí, para que aparezca en el resultado final. Al principio me lanzó un bucle.
njbair

77
Esto no parece aplicarse a 18.04 LTS: no existe tal archivo /etc/resolvconf/resolv.conf.d/heady no existe tal utilidad resolvconf.
inopinatus

2
Puede actualizar la respuesta conhostnamectl
Ring Ø

1
Tenga en cuenta también que si usa AWS, también deberá conservar el nombre de host después del reinicio: sudo nano /etc/cloud/cloud.cfgactualización preserve_hostname: true(el valor predeterminado es false).
bshea

5

sudo nano / etc / hostname

hostname.domain.com

sudo nano / etc / hosts

127.0.0.1   hostname.domain.com hostname localhost

¡REINICIAR!

DEBE TENER UN NOMBRE DE HOSTAL después del FQDN en el archivo / etc / hosts. Funciona bien en Ubuntu 18.04.1 y todas las demás versiones. En EC2 y en otros lugares.

No se metió con el archivo de resolución ni nada más.

Eso muestra el nombre de host en el shell y luego tiene el FQDN cuando lo necesita.


1

~ $ man hostname

[…]
       You cannot change the FQDN with hostname or dnsdomainname.

       The  recommended  method  of  setting the FQDN is to make the hostname be an alias for the fully qualified name using /etc/hosts,
       DNS, or NIS. For example, if the hostname was "ursula", one might have a line in /etc/hosts which reads

              127.0.1.1    ursula.example.com ursula

       Technically: The FQDN is the name getaddrinfo(3) returns for the host name returned by gethostname(2).  The DNS  domain  name  is
       the part after the first dot.

       Therefore  it  depends  on the configuration of the resolver (usually in /etc/host.conf) how you can change it. Usually the hosts
       file is parsed before DNS or NIS, so it is most common to change the FQDN in /etc/hosts.

       If a machine has multiple network interfaces/addresses or is used in a mobile environment,  then  it  may  either  have  multiple
       FQDNs/domain  names  or  none at all. Therefore avoid using hostname --fqdn, hostname --domain and dnsdomainname.  hostname --ip-
       address is subject to the same limitations so it should be avoided as well.

[…]

Poige lo señaló amablemente en otro hilo y es exactamente lo que Lutz propuso aquí.

No debe poner su fqdn en /etc/hostname.


1

Instrucciones escritas contra Ubuntu 18.04.3 LTS (bionic)

Cambiar el nombre de host:

sudo hostnamectl set-hostname server1

Verifique el resultado ejecutando hostnamectl:

root@www:/# hostnamectl
   Static hostname: server1       <-- Check this value
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 202c4264b06d49e48cfe72599781a798
           Boot ID: 43654fe8bdbf4387a0013ab30a155872
    Virtualization: xen
  Operating System: Ubuntu 18.04.3 LTS
            Kernel: Linux 4.15.0-65-generic
      Architecture: x86-64

Cambie el dominio a través del nuevo administrador de red, Netplan , editando /etc/netplan/01-netcfg.yamly cambiando el searchparámetro:

sudoedit /etc/netplan/01-netcfg.yaml

Configuración de muestra:

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: yes
      nameservers:
          search: [ domain.org ]

Pruebe los cambios iniciando sesión por segunda vez y ejecutándose sudo netplan tryen una de las sesiones y verificando la configuración en la otra:

# netplan try
Do you want to keep these settings?


Press ENTER before the timeout to accept the new configuration


Changes will revert in  97 seconds
Configuration accepted.
# systemd-resolve --status
...
Link 2 (eth0)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 8.8.8.8
                      8.8.4.4
          DNS Domain: domain.org      <-- Check this value
# cat /etc/resolv.conf
...
nameserver 127.0.0.53
options edns0
search domain.org    <-- Check this value
# hostname -f
server1.domain.org

Todo está bien, presione ENTRAR en el sudo netplan tryindicador para que las cosas sean permanentes.


0

Traté de cambiar mi entrada de dominio de myhome.locala myhome.lan Tuve que editar el /etc/hostsarchivo y el /etc/network/interfacesarchivo. Mi /etc/hostsarchivo ahora se ve así:

127.0.0.1   localhost
192.168.3.2 server.myhome.lan   server

y mi /etc/network/interfacesarchivo ahora se ve así:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto enp2s0
iface enp2s0 inet static
    address 192.168.3.2
    netmask 255.255.255.0
    network 192.168.3.0
    broadcast 192.168.3.255
    gateway 192.168.3.1
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 192.168.3.1
    dns-search myhome.lan

Funciona bien para mí.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.