Comment définir le nom d'hôte qualifié complet sur CentOS 7.0?

Comment définir le nom d'hôte complet sur CentOS 7.0?

J'ai vu quelques messages en ligne par exemple en utilisant:

$ sudo hostnamectl set-hostname nodename.domainname 

Cependant, l'exécution de domainname ne renvoie rien:

 $ domainname (none) 

Aussi:

 $ hostname nodename.domainname 

cependant,

 $ hostname -f hostname: Name or service not known $ hostname -d hostname: Name or service not known 

Une sortie de debugging:

 $ cat /etc/hostname nodename.domainname $ grep ^hosts /etc/nsswitch.conf hosts: files dns 

L'utilisation de hostnamectl set-hostname nodename.domainname est le moyen correct de définir le nom d'hôte (et le nom de domaine) du système pour RHEL 7. À less d'utiliser NIS, (none) correspond à la sortie appropriée lors de l'exécution de la command domainname .

Domaine NIS vs. DNS

Ce problème m'a troublé lorsque je l'ai rencontré pour la première fois. Il semble que la command domainname 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, également appelé YP (Yellow Pages) (un groupe d'ordinateurs disposant de services fournis par un server NIS maître). Cette command affiche simplement le nom renvoyé par la fonction de bibliothèque standard getdomainname(2) . ( nisdomainname et ypdomainname sont des noms alternatifs pour cette command.)

Afficher le nom de domaine complet ou le nom de domaine DNS

Pour vérifier le nom de domaine DNS (Internet), vous devez exécuter la command dnsdomainname ou le hostname d' hostname avec les options -d, --domain . (Notez que la command dnsdomainname ne peut pas être utilisée pour définir le nom de domaine DNS – elle n'est utilisée que pour l'afficher.)

Pour afficher le nom de domaine complet (FQDN) du système, exécutez hostname avec les options -f, --fqdn, --long (de même, cette command ne peut pas être utilisée pour définir la partie du nom de domaine).

Les commands ci-dessus utilisent le résolveur du système (implémenté par la fonction gethostbyname(3) de la bibliothèque standard, comme spécifié par POSIX) pour déterminer le nom de domaine DNS et le nom de domaine complet.

Résolution du nom

Dans les systèmes d'exploitation modernes tels que RHEL 7, l'input des hosts dans /etc/nsswitch.conf est utilisée pour résoudre les noms d'hôtes. Sur 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 searchnt des noms d'hôte ou une adresse IP, ils vérifient d'abord une input dans le file /etc/hosts et essaient ensuite le ou les servers DNS listés dans /etc/resolv.conf .

Lors de l'exécution du hostname -f d' hostname -f pour get le nom de domaine complet d'un hôte, les fonctions du résolveur essaient d'get le nom de domaine complet pour le nom d'hôte du système. Si l'hôte n'est pas répertorié dans le file /etc/hosts ou par le server DNS concerné, la tentative échoue et le hostname signale que Name or service not known .

Lorsque le hostname -d est exécuté pour get le nom de domaine, les mêmes opérations sont effectuées et la partie du nom de domaine est déterminée en supprimant la partie nom d'hôte et le premier point du nom de domaine complet.

Configurez le nom de domaine

1. Mettez à jour le server de noms DNS approprié

Dans mon cas, j'avais déjà ajouté une input pour ma nouvelle machine CentOS 7 sur le server DNS de mon réseau local, donc quand le nom de domaine complet n'était pas trouvé dans le file /etc/hosts lorsque j'ai exécuté hostname avec -d ou -f option, 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 file /etc/hosts

Si le server DNS n'a pas été configuré, le nom de domaine complet peut être spécifié dans le file /etc/hosts . La façon la plus courante de le faire est de 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 page man d' hostname

Vous ne pouvez pas changer le nom de domaine complet avec hostname ou 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 qualifié 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/hosts qui lit:

 27.0.1.1 ursula.example.com ursula 

Techniquement: Le FQDN est le nom getaddrinfo (3) renvoie le nom d'hôte returnné 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 file hosts est analysé avant DNS ou NIS, il est donc plus commun de changer le nom de domaine complet dans /etc/hosts .

Pour moi, le file / etc / hostname contenait le FQDN au lieu du nom d'hôte (par exemple, nom d'hôte à la place de nom d'hôte.exemple.com). Une fois que j'ai retiré le domaine du nom d'hôte dans / etc / hostname, la command 'hostname -f' a fonctionné normalement.

Je pense que cela a été présenté que j'ai installé la machine virtuelle CentOS 7. J'aurais dû saisir juste le nom d'hôte, pas le nom de domaine complet.