Je loue un serveur, exécutant Ubuntu 16.04 dans une entreprise, appelons-le company.org.
Actuellement, mon serveur est configuré comme ceci:
server737263
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:
Quelle est la bonne façon de définir le nom d'hôte?
Quelle est la bonne façon de définir le nom de domaine?
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
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.
~ $ 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
.
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.
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.