Puis-je avoir des points dans un nom d'hôte?

23

J'utilise des noms comme a.alpha pour le nom d'hôte de ma boîte Linux, mais il semble que ces noms ne soient pas complètement utilisables. La réponse d'une commande shell hostname est correcte (a.alpha). Mais le nom imprimé après mon compte utilisateur est "user @ a" au lieu de "[email protected]". Lorsque j'utilise avahi, je peux atteindre (par nom d'hôte) a.alpha, mais pas b.alpha. Est-ce normal?

benzen
la source

Réponses:

23

Chopper a raison. En raison du fonctionnement de DNS, le composant "alpha" de "a.alpha" est considéré comme une "étiquette" discrète dans DNS. L'utilisation d'un nom d'hôte avec un point entraînera des résultats incohérents de tout système qui utilise DNS.

Avahi interagit avec les noms DNS, et en particulier la <host-name>directive doit contenir le nom de domaine complet DNS du service, il est donc également soumis à une incohérence DNS avec les noms en pointillés.

N'utilisez pas de nom en pointillé.

sysadmin1138
la source
C'est correct, mais il faut que les références soient considérées comme une réponse fiable. Quelqu'un qui dit "En raison du fonctionnement du DNS" sur Stack Overflow ne prouve rien.
mikemaccana
Est-ce une règle rigide que le nom d'hôte ne peut pas contenir '.' ?
Dinesh Kumar P
1
@DineshKumarP Oui. Les RFC DNS décrivent le caractère de période comme le délimiteur entre les étiquettes DNS. Alors que les services non DNS tels que Avahi ou SLP peuvent le permettre, le DNS lui-même ne le permet pas.
sysadmin1138
Ceci n'est pas tout à fait vrai. DNS est parfaitement heureux d'autoriser les points dans les étiquettes, bien qu'il suggère la conformité à une syntaxe restreinte (la "règle LDH"; voir tools.ietf.org/html/rfc1035#section-2.3.1 ). Les applications du DNS - telles que le stockage des noms d'hôte dans le DNS - sont là où les restrictions sur la syntaxe des étiquettes DNS entrent en jeu.
Tony Garnock-Jones
17

Vous demandez des problèmes avec ce schéma de nommage en raison du DNS, pensez plutôt à a-alpha.

Chopper3
la source
Je pose la même question sur askubuntu, et personne ne peut me répondre. Je vais donc utiliser cette méthode
benzen
1

Comme d'autres personnes l'ont mentionné, vous voulez certainement éviter les points dans vos noms d'hôte en raison du DNS, et j'ai également constaté que cela peut poser un problème si vous utilisez des certificats génériques pour exécuter SSL, car les certificats génériques ne seront génériques que pour un niveau d'un sous-domaine. Donc, si votre certificat générique est pour * .mycompany.com, mais que vous avez un nom d'hôte qui est a.alpha, le certificat générique peut ne pas fonctionner s'il traite "alpha" comme un sous-domaine.

Mitchell Tracy
la source
1

Le nom d'hôte complet d'un hôte EST généralement le FQDN équipé d'un domaine (nom de domaine complet), et sous Linux devrait finir par être la sortie de host --fqdn, la partie avant le premier point étant considérée comme le surnom de l'hôte. Cependant, différents systèmes (Linux, SunOS, peu importe) ont implémenté le concept "hostnick" de différentes manières. Tel que:

  • / etc / hostname contient juste le hostnick, et le reste est dans / etc / domainname
  • / etc / hostname contient l'intégralité du nom de domaine complet, et le domaine se trouve également dans / etc / domainname
  • Le nom de domaine n'existe que dans la configuration YP / NIS
  • Le nom de domaine n'existe que dans certains sous-systèmes au lieu d'être un système global
  • (autres approches généralement plus étranges)

De plus, l'idée d'un hostnick est une petite variable:

  • La partie du nom de domaine complet avant le premier point
  • Une partie du côté gauche du FQDN, exprimée exclusivement sans point de fuite
  • La partie du nom de domaine complet avant le nom de domaine réel (tel que défini quelque part)

Et, pour compliquer encore les choses, la hostcommande de bind9-host viole les normes DNS en ayant une -N <int>option pour contrôler si les domaines de recherche sont utilisés ou non. Cela interrompt les recherches DNS de différentes manières selon le scénario. DNS est censé prendre toute recherche d'un nom avec un point de fin comme étant littéralement ce qu'il faut rechercher, et pour d'autres noms, les rechercher avec des domaines ajoutés du /etc/resolv.confjusqu'à ce qu'une correspondance soit trouvée ou qu'ils échouent tous (ces domaines ont implicitement un point de fuite). [C'est de mémoire, veuillez commenter si le processus général a été modifié dans un RFC que j'ai manqué]

En tant que tel, si vous utilisez des points dans votre hostnick, la hostcommande va probablement échouer, cassant les scripts qui l'utilisent pour les recherches. Personnellement, je trouve insondable ce qui hostest cassé, et il semble même aujourd'hui rompre la recherche sur un système dans mon réseau domestique, car j'ai à la fois IPv4 et -v6 à la maison, et j'ai des noms comme .v4. en tant que formulaires courts supplémentaires spécifiques à la version, qui hostne parviennent pas à rechercher même s'ils les pingtrouvent très bien.

Il était extrêmement rare de tenter de mettre des points dans des hostnicks de toute façon, donc même sans hostbraindamage, j'aurais recommandé de m'en tenir aux hostnicks sans points, même dans une simple perspective sémantique.

Alex North-Keys
la source
0

La bonne réponse est définitivement "ne faites pas ça", comme indiqué ci-dessus.

Pour une lecture éventuellement utile et certainement tangentielle, veuillez continuer:

Parlez-vous de la résolution DNS ou de votre invite de ligne de commande? Si vous souhaitez corriger votre invite de ligne de commande, jouez simplement avec $ PS1 (ou un équivalent non-bash / sh similaire le cas échéant).

Si vous voulez vraiment que a.alpha soit un nom d'hôte qui se résout en une adresse IP sur les interwebs, vous pouvez le faire, mais cela peut impliquer un sous-domaine pour chaque suffixe de nom d'hôte (EG alpha, beta etc ..).

Il est même possible que vous puissiez configurer votre serveur DNS pour qu'il fonctionne sans créer de sous-domaines. Vous pouvez servir l'adresse IP des serveurs de noms d'un sous-domaine dans les fichiers de zone du domaine parent, afin que cela puisse "fonctionner". En effet, lorsque quelqu'un demande à votre serveur DNS l'adresse IP de a.alpha.examaple.com, il demande au serveur DNS pour example.com, et si ce serveur DNS a déjà l'adresse, il répondra avec la réponse , plutôt que d'essayer de vous remettre au serveur faisant autorité du sous-domaine. Cela pourrait être résolu autour du SOA manquant ... alors peut-être que vous ajoutez un enregistrement A pour chaque préfixe d'hôte et un SOA pour chaque suffixe d'hôte. Ouais, c'est le ticket ...

Tout sur Internet pensera toujours que votre nom d'hôte est «a» et votre domaine est alpha.example.com.

Dylan Martin
la source