Come impostare correttamente nome host e nome dominio?


33

Sto noleggiando un server, eseguendo Ubuntu 16.04 presso un'azienda, chiamiamolo company.org.

Attualmente, il mio server è configurato in questo modo:

  • hostname: server737263
  • nome del dominio: company.org

Ecco il mio nome di dominio completo:

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

Questo non è sorprendente.

Sto anche noleggiando un nome di dominio, chiamiamolo domain.org. Quello che vorrei fare sarebbe rinominare il mio server come server1.domain.org.

Ciò significa configurare il mio nome host come server1e il mio nome dominio come domain.org.

Come posso farlo correttamente?

In effetti, la manpage di hostnamenon è chiara. Almeno per me:

HOSTNAME (1)

[...]

IMPOSTA NOME

  • Se chiamati con un argomento o con l'opzione --file, i comandi impostano il nome host o il nome dominio NIS / YP. hostname utilizza la funzione sethostname (2), mentre tutti e tre i nomi di dominio, ypdomainname e nisdomainname utilizzano setdomainname (2). Si noti che questo è efficace solo fino al prossimo riavvio. Modifica / etc / hostname per la modifica permanente.

[...]

IL FQDN

  • Non è possibile modificare il nome FQDN con nome host o dnsdomainname.

[...]

Quindi sembra che l'editing /etc/hostnamenon sia abbastanza? Perché se avesse davvero cambiato il nome host, avrebbe cambiato il nome FQDN. C'è anche un trucco che ho letto per cambiare il nome host con il comando sysctl kernel.hostname=server1, ma nulla dice se questo è il modo corretto o un brutto trucco.

Così:

  1. Qual è il modo corretto di impostare il nome host?

  2. Qual è il modo corretto di impostare il nome di dominio?

Risposte:


31

Impostazione del nome host:

  • Ti consigliamo di modificare /etc/hostnamecon il tuo nuovo nome host.

  • Quindi, corri sudo hostname $(cat /etc/hostname).

Impostazione del dominio:

  • Quindi, in /etc/resolvconf/resolv.conf.d/head, aggiungerai quindi la riga domain your.domain.name(non il tuo nome di dominio completo, solo il nome di dominio).

  • Quindi, esegui sudo resolvconf -uper aggiornare il tuo /etc/resolv.conf(in alternativa, riproduci semplicemente la modifica precedente nel tuo /etc/resolv.conf).

Tutti e due:

Infine, aggiorna il tuo /etc/hostsfile. Dovrebbe esserci almeno una riga che inizia con uno dei tuoi IP (loopback o meno), il tuo FQDN e il tuo nome host. estraendo gli indirizzi ipv6, il tuo file hosts potrebbe apparire così:

127.0.0.1 localhost
1.2.3.4 service.domain.com service

7
Entrambi quei file conf dicono DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTENsul mio server (stessa versione).
Walf

7
Non lasciarti ingannare dal fatto che appare l'avviso "NON MODIFICARE" /etc/resolvconf/resolv.conf.d/head. Tutto nel file head viene anteposto al /etc/resolv.conffile di output risultante , quindi è per questo che è presente l'avviso, in modo che venga visualizzato nel risultato finale. All'inizio mi ha lanciato per un giro.
njbair,

7
Questo non sembra applicarsi a LTS 18.04 - non esiste un file simile /etc/resolvconf/resolv.conf.d/heade non esiste tale utilità resolvconf.
inopinatus,

2
È possibile aggiornare la risposta conhostnamectl
Anello Ø

1
Nota anche che se usi AWS dovrai anche conservare il nome host dopo il riavvio - sudo nano /etc/cloud/cloud.cfgaggiornamento preserve_hostname: true(impostazione predefinita false).
bshea,

5

sudo nano / etc / hostname

hostname.domain.com

sudo nano / etc / hosts

127.0.0.1   hostname.domain.com hostname localhost

REBOOT!

DEVE AVERE UNO HOSTNAME dopo FQDN nel file / etc / hosts. Funziona bene su Ubuntu 18.04.1 e tutte le altre versioni. Su EC2 e altrove.

Non si scherza con il file di risoluzione o altro.

Questo mostra il nome host nella shell e quindi ha l'FQDN quando ne hai bisogno.


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.

[…]

Questo è stato gentilmente sottolineato da Poige in un altro thread ed è esattamente ciò che Lutz ha proposto qui.

Non dovresti inserire il tuo fqdn /etc/hostname.


1

Istruzioni scritte contro Ubuntu 18.04.3 LTS (bionico)

Cambia il nome host:

sudo hostnamectl set-hostname server1

Verifica il risultato eseguendo 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

Cambia il dominio tramite il nuovo gestore di rete, Netplan , modificando /etc/netplan/01-netcfg.yamle cambiando il searchparametro:

sudoedit /etc/netplan/01-netcfg.yaml

Configurazione di esempio:

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

Testare le modifiche accedendo una seconda volta ed eseguendo sudo netplan tryin una delle sessioni e controllando le impostazioni nell'altra:

# 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

Va tutto bene, premi INVIO al sudo netplan tryprompt per rendere le cose permanenti.


0

Ho provato a cambiare la mia voce di dominio da myhome.locala myhome.lan ho dovuto modificare il /etc/hostsfile e il /etc/network/interfacesfile. Il mio /etc/hostsfile ora appare come:

127.0.0.1   localhost
192.168.3.2 server.myhome.lan   server

e il mio /etc/network/interfacesfile ora appare come:

# 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

Funziona bene per me.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.