web-dev-qa-db-fra.com

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

Je loue un serveur, exécutant Ubuntu 16.04 dans une entreprise, appelons-le 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 également un nom de domaine, appelons-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 comme server1 et mon nom de domaine comme domain.org.

Comment puis-je le faire correctement?

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

HOSTNAME (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. hostname utilise la fonction sethostname (2), tandis que les trois nom de domaine, ypdomainname et nisdomainname utilisent setdomainname (2). Notez que cela n'est effectif que jusqu'au prochain redémarrage. Modifiez/etc/hostname pour un changement permanent.

[...]

LE FQDN

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

[...]

Il semble donc que l'édition /etc/hostname n'est pas assez? 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 mauvaise astuce.

Donc:

  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?

35
titsou

Définition de votre nom d'hôte:

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

  • Ensuite, exécutez Sudo hostname $(cat /etc/hostname).

Configuration de 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, exécutez Sudo resolvconf -u Pour mettre à jour votre /etc/resolv.conf (En variante, reproduisez simplement la modification précédente dans votre /etc/resolv.conf).

Tous les deux:

Enfin, mettez à jour votre fichier /etc/hosts. Il doit y avoir au moins une ligne commençant par l'un de vos IP (bouclage ou non), votre FQDN et votre nom d'hôte. en lisant les adresses ipv6, votre fichier d'hôtes pourrait ressembler à ceci:

127.0.0.1 localhost
1.2.3.4 service.domain.com service
36
SYN

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 très bien sur Ubuntu 18.04.1 et toutes les autres versions. Sur EC2 et ailleurs.

Je n'ai pas joué avec le fichier de résolution ou autre chose.

Cela montre le nom d'hôte dans Shell et a ensuite le FQDN lorsque vous en avez besoin.

8

~ $ 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é aimablement souligné par poige dans n autre fil et c'est exactement ce que Lutz a proposé ici.

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

1
karlsebal

Instructions écrites contre Ubuntu 18.04.3 LTS (bionic)

Modifiez 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

Changez le domaine via le nouveau gestionnaire de réseau, Netplan , en éditant /etc/netplan/01-netcfg.yaml et en modifiant le paramètre search:

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 deuxième fois et en exécutant Sudo netplan try dans l'une des sessions et vérification des paramètres dans 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 ENTREE au Sudo netplan try Invite à rendre les choses permanentes.

1
RobM

J'ai essayé de modifier mon entrée de domaine de myhome.local à myhome.lan J'ai dû modifier le /etc/hosts fichier et le /etc/network/interfaces fichier. Ma /etc/hosts le fichier ressemble maintenant à:

127.0.0.1   localhost
192.168.3.2 server.myhome.lan   server

et mon /etc/network/interfaces le fichier 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.

0
Lutz