Question Est-il possible d'aliaser un nom d'hôte sous Linux?


Est-il possible d'aliaser un nom d'hôte sous Linux?

Jmillikin l’a demandé lors de divers forums Ubuntu comme suit:


Est-il possible de créer un alias de nom d'hôte? Un peu comme / etc / hosts, mais avec d'autres noms d'hôte plutôt que des adresses IP. Alors qu'avec certains fichier comme ça, vous pouvez cingler "fakehost1", et il serait re-mappé "realhost", puis "realhost" serait résolu en une adresse IP.

# Real host        # Aliases
realhost           fakehost1 fakehost2 fakehost3

Quelqu'un a répondu à propos de SSH, mais pas à propos de ping, etc. Mon principal but est de l'utiliser comme un alias pour un Subversion serveur. Dans mon cas, realhost est sous une adresse IP dynamique. Ainsi, l'alias "/ etc / hosts" ne fonctionne pas. je veux accéder à mon serveur Subversion en tant que svn://my_svnserver/my_repos au lieu de svn://realhost/my_repos.


75
2017-09-14 15:56


origine


Je suppose que je peux manquer quelque chose. Voulez-vous dire que vous ne pouvez pas avoir / etc / hosts ressemblant à 10.0.3.4 some.host.org another.domain.com Vous devez utiliser une référence pour une raison programmatique? - jim_m_somewhere


Réponses:


Pour ceux qui n'ont pas de compte sur les forums (ou ne souhaitent pas se connecter):

si votre problème principal n’est pas de cingler mais de ssh, vous pouvez créer / éditer votre   ~ / .ssh / config ajoutant des lignes comme celles-ci:

Host fakehost1
  Hostname real-hostname

Host fakehost2
  Hostname real-hostname2

Host fakehost3
  Hostname real-hostname3

46
2017-08-26 20:21



La partie nom d'hôte doit être sur une nouvelle ligne. Voici un bon tutoriel sur la façon de créer un fichier de configuration comme ceci: mattryall.net/blog/2008/06/ssh-favourite-hosts - Code Commander
bonne solution de contournement, merci. Mais bien sûr, une meilleure solution serait d’utiliser des noms de domaine sur DNS - Iurii


Linux prend en charge les alias en définissant la variable HOSTALIASES env.

echo "fakehost realhost" > /etc/host.aliases
echo "export HOSTALIASES=/etc/host.aliases" >> /etc/profile
. /etc/profile

Ensuite vous pouvez

ping fakehost

N.B. Ping requiert que vous configuriez cela en tant que root, mais vous pouvez le faire en tant qu'utilisateur pour toute application exécutée sous cet utilisateur. ping suids à la racine.


28
2018-03-21 18:41



n'a pas fonctionné pour moi sur Ubuntu 12.04 :( - Dimitry K
Les HOSTALIASES ne fonctionnent que pour les exécutables pour lesquels l’indicateur setuid n’est pas défini. Donc, cela ne fonctionnera pas pour le ping (sauf si vous êtes déjà root lors de l'exécution du ping). J'imagine que cela est fait pour éviter d'inciter setuid-exécutables à se connecter à un hôte différent de celui auquel il était destiné. - Boris
Aussi ne fonctionne pas pour curl - Benubird
cela aboutira rarement au résultat attendu. HOSTALIASES ne fonctionne que pour les applications utilisant getaddrinfo (3) ou gethostbyname (3) - Cela signifie que cela fonctionnera pour les applications qui tentent de résoudre explicitement le nom d'hôte par un appel système spécifique: ce n'est jamais le cas. voir unix.stackexchange.com/questions/10438/…  la seule solution est donc le DNS local (Dnsmasq) - Nadir
Semble que cette astuce est obsolète. Les fonctions gethostbyname * (), gethostbyaddr * (), herror () et hstrerror () sont obsolètes. Si votre système exécute DNSMasq localement, vous pouvez y aliaser pour toute résolution utilisant DNS. - teknopaul


Vous pouvez configurer cela sur votre serveur DNS. Les enregistrements CNAME permettent à une machine d'être connue sous plusieurs noms d'hôte. Ajoutez donc les enregistrements CNAME à votre serveur DNS de la manière suivante:


fakehost1 IN CNAME realhost 
fakehost2 IN CNAME realhost 
fakehost3 IN CNAME realhost 


23
2017-09-14 16:04



Merci, je vais essayer demain après avoir installé mon serveur DNS local.
un serveur DNS léger à essayer serait dnsmasq (il sert également DHCP). - sybreon


Je le fais souvent avec des variables d'environnement. Je sais que cela ne fonctionne que pour la ligne de commande, mais c’est là que je cherche le plus souvent des alias de noms d’hôte (j’ai travaillé avec plusieurs comptes de superordinateurs, tous dotés d’URL longues). Voici un exemple, si vous utilisez BASH. Dans ~ / .bashrc:

export fakehost = "long.ass.annoying.url.org"

puis, dans une coquille fraîche:

ssh christopher @ $ fakehost


16
2017-07-23 16:15





La seule façon de le faire est si vous avez votre propre serveur DNS local.


8
2017-09-14 16:02



Oui, maintenant, il semble que la seule solution. Merci. Je ne peux pas voter car je n'ai pas assez de réputation.
Si le problème est l’adresse IP toujours changeante d’une connexion ADSL ou à distance, dyndns est une meilleure solution, IMHO. - Sven♦
Non, ce n'est pas une meilleure solution. Une fois que le serveur a un nom d’hôte qui est géré par quelque chose d’autre, alors tout ce dont l’opérateur a besoin est un CNAME pour le premier nom d’hôte. DYNDNS et similaires s'appuient sur l'hôte pour informer le serveur DNS que son adresse IP a changé. - theotherreceive


L'utilisation de /etc/hosts.aliases est une fonctionnalité standard des bibliothèques du résolveur de liaison. Il est plus robuste que d’ajouter des entrées à / etc / hosts et peut être utilisé si vous ne pouvez pas ajouter CNAMES à votre DNS (n’y avez pas accès).

La meilleure pratique consiste généralement à utiliser CNAMES dans le DNS avec SEARCH approprié défini dans /etc/resolv.conf.

La mise à jour de / etc / hosts n’est pas très robuste, car les entrées doivent être synchronisées avec les changements d’IP. Cela ne fonctionne vraiment que sur une petite échelle ou lorsque vous utilisez un service de noms pour distribuer la carte des hôtes (par exemple via ldap).

Une autre solution peut être DNSMasq http://en.wikipedia.org/wiki/Dnsmasq


4
2017-10-28 03:44



J'ai essayé d'utiliser /etc/hosts.aliases dans CENTOS 6 mais cette fonctionnalité ne semble pas fonctionner. Je ne trouve pas non plus de documentation sur son utilisation ou son existence. Où devrais-je chercher? - mdpc


Vous aurez besoin d’un serveur Dyndns qui mappera votre adresse IP actuelle sur un nom d’hôte. Vous communiquerez votre adresse IP actuelle au serveur à chaque fois que vous vous connecterez et il mettra à jour l'enregistrement de votre nom d'hôte.


4
2017-09-14 16:05