Comment définir correctement le nom d'hôte et le nom de domaine?

33

Je loue un serveur exécutant Ubuntu 16.04 dans une entreprise, appelons-la company.org.

Actuellement, mon serveur est configuré comme ceci:

  • nom d'hôte: server737263
  • nom de domaine: company.org

Voici mon nom de domaine complet:

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

Ce n'est pas surprenant.

Je loue aussi un nom de domaine, nommons-le domain.org. Ce que je voudrais faire serait de renommer mon serveur en server1.domain.org.

Cela signifie configurer mon nom d’hôte en tant que server1et mon nom de domaine en tant que domain.org.

Comment puis-je le faire correctement?

En effet, la page de manuel pour hostnamen'est pas claire. Pour moi au moins:

NOM D'HOTE (1)

[...]

SET NAME

  • Lorsqu'elles sont appelées avec un argument ou avec l'option --file, les commandes définissent le nom d'hôte ou le nom de domaine NIS / YP. nomhôte utilise la fonction sethostname (2), tandis que les trois noms de domaine, ypdomainname et nisdomainname utilisent setdomainname (2). Notez que cela n’est effectif qu’au prochain redémarrage. Éditez / etc / hostname pour un changement permanent.

[...]

LE FQDN

  • Vous ne pouvez pas modifier le nom de domaine complet avec le nom d'hôte ou le nom de domaine dns.

[...]

Il semble donc que l'édition /etc/hostnamene suffit pas? Parce que s'il avait vraiment changé le nom d'hôte, il aurait changé le nom de domaine complet. Il y a aussi une astuce que j'ai lue pour changer le nom d'hôte avec la commande sysctl kernel.hostname=server1, mais rien ne dit si c'est la bonne façon ou une astuce moche.

Alors:

  1. Quelle est la bonne façon de définir le nom d'hôte?

  2. Quelle est la bonne façon de définir le nom de domaine?

titsou
la source

Réponses:

31

Définir votre nom d'hôte:

  • Vous voudrez éditer /etc/hostnameavec votre nouveau nom d'hôte.

  • Ensuite, cours sudo hostname $(cat /etc/hostname).

Définir votre domaine:

  • Ensuite, dans /etc/resolvconf/resolv.conf.d/head, vous ajouterez ensuite la ligne domain your.domain.name(pas votre nom de domaine complet, juste le nom de domaine).

  • Ensuite, lancez sudo resolvconf -upour mettre à jour votre /etc/resolv.conf(alternativement, reproduisez simplement la modification précédente dans votre /etc/resolv.conf).

Tous les deux:

Enfin, mettez à jour votre /etc/hostsfichier. Il devrait y avoir au moins une ligne commençant par l’une de vos adresses IP (bouclage ou non), de votre nom de domaine complet et de votre nom d’hôte. En récupérant les adresses ipv6, votre fichier hosts pourrait ressembler à ceci:

127.0.0.1 localhost
1.2.3.4 service.domain.com service
SYN
la source
7
Ces deux fichiers de conf disent DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTENsur mon serveur (même version).
Walf
7
Ne vous laissez pas berner par le fait que l’avertissement "NE PAS MODIFIER" apparaît dans /etc/resolvconf/resolv.conf.d/head. Tout le contenu du fichier de tête est ajouté au /etc/resolv.conffichier de sortie résultant . C’est pourquoi l’avertissement est présent, de sorte qu’il apparaisse dans le résultat final. M'a jeté pour une boucle au début.
njbair
7
Cela ne semble pas s'appliquer à 18.04 LTS - il n'y a ni fichier /etc/resolvconf/resolv.conf.d/headni utilitaire resolvconf.
inopinatus
2
Vous pouvez mettre à jour la réponse avechostnamectl
Bague Ø
1
Notez également que si vous utilisez AWS, vous devrez également conserver le nom d'hôte après le redémarrage - sudo nano /etc/cloud/cloud.cfgupdate preserve_hostname: true(par défaut false).
bshea
5

sudo nano / etc / hostname

hostname.domain.com

sudo nano / etc / hosts

127.0.0.1   hostname.domain.com hostname localhost

REBOOT!

DOIT AVOIR UN SEUL NOM D'HÔTE après le nom de domaine complet dans le fichier / etc / hosts. Fonctionne bien sur Ubuntu 18.04.1 et toutes les autres versions. Sur EC2 et ailleurs.

Ne plaisante pas avec résoudre le fichier ou quoi que ce soit d'autre.

Cela montre le nom d’hôte dans le shell, puis le FQDN quand vous en avez besoin.

Richard Westby-Nunn
la source
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.

[…]

Cela a été gentiment signalé par poige dans un autre fil et est exactement ce que Lutz a proposé ici.

Vous ne devriez pas mettre votre fqdn dans /etc/hostname.

Karlsebal
la source
1

Instructions écrites contre Ubuntu 18.04.3 LTS (bionique)

Changer le nom d'hôte:

sudo hostnamectl set-hostname server1

Vérifiez le résultat en exécutant 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

Modifiez le domaine via le nouveau gestionnaire de réseau, Netplan , en modifiant /etc/netplan/01-netcfg.yamlet modifiant le searchparamètre:

sudoedit /etc/netplan/01-netcfg.yaml

Exemple de configuration:

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

Testez les modifications en vous connectant une seconde fois, en exécutant l' sudo netplan tryune des sessions et en vérifiant les paramètres de l'autre:

# 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

Tout va bien, appuyez sur ENTRÉE à l' sudo netplan tryinvite pour rendre les choses permanentes.

RobM
la source
0

J'ai essayé de changer mon entrée de domaine de myhome.localà myhome.lan je devais éditer le /etc/hostsfichier et le /etc/network/interfacesfichier. Mon /etc/hostsfichier ressemble maintenant à:

127.0.0.1   localhost
192.168.3.2 server.myhome.lan   server

et mon /etc/network/interfacesfichier ressemble maintenant à:

# 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

Ça fonctionne bien pour moi.

Lutz
la source