Pour définir le nom d'hôte , utilisez hostnamectl, mais uniquement avec le nom d'hôte, comme ceci:
hostnamectl set-hostname nodename
Pour définir le fichier de modification du nom de domaine (DNS)/etc/hosts et vous assurer que:
- Il y a une ligne
<machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname>là-bas
- Il n'y a AUCUNE autre ligne avec
<some IP> <hostname>, et cela inclut les lignes avec 127.0.0.1et ::1(IPv6) les adresses.
Notez que sauf si vous utilisez NIS, (none)la sortie est correcte lors de l'exécution de la domainnamecommande.
Pour vérifier si votre nom de domaine DNS est correctement défini, utilisez la dnsdomainnamecommande et vérifiez la sortie de hostnamevs hostname -f(FQDN).
NIS vs domaine DNS
Ce problème m'a dérouté lorsque je l'ai rencontré pour la première fois. Il semble que la domainnamecommande soit antérieure à la popularité d'Internet. Au lieu du nom de domaine DNS, il affiche ou définit le nom de domaine NIS (Network Information Service) du système alias YP (Pages Jaunes) (un groupe d'ordinateurs dont les services sont fournis par un serveur NIS maître). Cette commande affiche simplement le nom renvoyé par la getdomainname(2)fonction de bibliothèque standard. ( nisdomainnameet ypdomainnamesont des noms alternatifs pour cette commande.)
Afficher le nom de domaine FQDN ou DNS
Pour vérifier le nom de domaine DNS (Internet), vous devez exécuter la dnsdomainnamecommande ou hostnameavec les -d, --domainoptions. (Notez que la dnsdomainnamecommande ne peut pas être utilisée pour définir le nom de domaine DNS - elle est uniquement utilisée pour l'afficher.)
Pour afficher le nom de domaine complet (FQDN) du système, exécutez hostnameavec les -f, --fqdn, --longoptions (de même, cette commande ne peut pas être utilisée pour définir la partie du nom de domaine).
Les commandes ci-dessus utilisent le résolveur du système (implémenté par la gethostbyname(3)fonction de la bibliothèque standard, comme spécifié par POSIX) pour déterminer le nom de domaine DNS et le FQDN.
Résolution de nom
Dans les systèmes d'exploitation modernes tels que RHEL 7, l' hostsentrée dans /etc/nsswitch.confest utilisée pour résoudre les noms d'hôte. Dans votre machine CentOS 7, cette ligne est configurée comme (par défaut pour CentOS 7):
hosts: files dns
Cela signifie que lorsque les fonctions du résolveur recherchent des noms d'hôtes ou des adresses IP, elles vérifient d'abord une entrée dans le /etc/hosts fichier et essaient ensuite le ou les serveurs DNS répertoriés dans /etc/resolv.conf.
Lors de l'exécution hostname -fpour obtenir le FQDN d'un hôte, les fonctions du résolveur tentent d'obtenir le FQDN pour le nom d'hôte du système. Si l'hôte n'est pas répertorié dans le /etc/hostsfichier ou par le serveur DNS approprié, la tentative échoue et le hostnamesignale Name or service not known.
Lorsque hostname -dest exécuté pour obtenir le nom de domaine, les mêmes opérations sont effectuées et la partie nom de domaine est déterminée en supprimant la partie nom d'hôte et le premier point du nom de domaine complet.
Configurer le nom de domaine
1. Mettez à jour le serveur de noms DNS approprié
Dans mon cas, j'avais déjà ajouté une entrée pour ma nouvelle machine CentOS 7 dans le serveur DNS pour mon LAN local, donc lorsque le nom de domaine complet n'a pas été trouvé dans le /etc/hostsfichier lorsque j'ai exécuté hostnameavec l' option -dou -f, les services DNS locaux ont pu résoudre complètement le nom de domaine complet pour mon nouveau nom d'hôte.
2. Utilisez le /etc/hostsfichier
Si le serveur DNS n'a pas été configuré, le nom de domaine complet peut être spécifié dans le /etc/hostsfichier. La façon la plus courante de procéder consiste à spécifier l'adresse IP principale du système suivie de son nom de domaine complet et de son nom d'hôte court. Par exemple,
172.22.0.9 nodename.domainname nodename
Extrait de la hostnamepage de manuel
Vous ne pouvez pas modifier le nom de domaine complet avec hostnameou dnsdomainname.
La méthode recommandée pour définir le nom de domaine complet consiste à faire du nom d'hôte un alias pour le nom complet à l'aide de /etc/hosts,DNS ou NIS. Par exemple, si le nom d'hôte était "ursula", on pourrait avoir une ligne dans /etc/hostslaquelle se lit:
27.0.1.1 ursula.example.com ursula
Techniquement: le nom de domaine complet est le nom renvoyé par getaddrinfo (3) pour le nom d'hôte renvoyé par gethostname (2). Le nom de domaine DNS est la partie après le premier point.
Par conséquent, cela dépend de la configuration du résolveur (généralement dans
/etc/host.conf) comment vous pouvez le changer. Habituellement, le fichier hosts est analysé avant DNS ou NIS, il est donc plus courant de modifier le nom de domaine complet dans
/etc/hosts.
hostname -fcommande ne fonctionne pas sur mon CentOS vm.