Puis-je utiliser le fichier /etc/hosts pour configurer un alias [fermé]

le fichier /etc/hosts peut être utilisé pour outrepasser les définitions dns, c'est-à-dire pour pointer un nom d'hôte vers une ip différente.

je veux utiliser /etc/hosts pour faire un enregistrement d'alias, i.e. pour faire croire à mon ordinateur que www.mysite.com ne désigne pas une ip" codée en dur", mais est synonyme de mychangingip.myip.com.

est-ce possible?

163
demandé sur flybywire 2009-03-12 13:16:30

9 réponses

/etc/hosts ne peut pas être utilisé (par lui-même) pour produire des "alias" de nom d'hôte.

le fichier hosts produit l'équivalent interne des enregistrements A et PTR du DNS, c'est-à-dire la correspondance du nom d'hôte à l'adresse IP et vice-versa.

alors que vous pouvez ajouter plusieurs noms à une adresse IP spécifique, cela exige que vous connaissiez l'adresse IP à l'avance. Il ne peut pas être utilisé pour produire le même effet qu'un enregistrement CNAME , où un nom pointe un autre nom qui à son tour se résout à L'IP désirée.

143
répondu Alnitak 2017-02-03 01:26:22

si vous voulez SSH sur un serveur (avec une entrée DNS qui change dynamiquement) alors vous pouvez effectivement ajouter un" alias " par (dans le fichier ~/.SSH / config) créant une entrée:

Host myAlias
    HostName mychangingip.myip.com

puis vous pouvez "ssh myAlias" (il y a d'autres directives qui peuvent être utiles, par exemple User, Port, etc.).

153
répondu Patrick 2011-02-07 06:34:39

j'ai eu exactement le même problème et je l'ai résolu en installant et en utilisant nginx sur mon mac. Vous n'avez pas besoin d'un serveur dns pour ce faire. Vous pouvez simplement profiter de l'option proxy_pass de nginx pour obtenir le même effet que cname.

une fois que vous avez installé et configuré nginx, vous pouvez alias first.com pour second.com comme ceci. Dans votre fichier /etc/hosts, faites suivre le trafic first.com à 127.0.0.1.

127.0.0.1 first.com

puis sur votre NGINX config, ajouter le

server {
  listen   80;
  server_name  first.com;
  access_log off;
  location / {
      proxy_pass http://second.com;
      proxy_set_header    Host            $host;
      proxy_set_header    X-Real-IP       $remote_addr;
      proxy_set_header    X-Forwarded-for $remote_addr;
      proxy_connect_timeout 300;
  }
}

cela devrait effectivement vous donner une configuration de type cname. Espérons que ça aide!

35
répondu steve 2018-05-15 21:30:36

ce script shell pourrait faire l'affaire pour vous, si vous avez juste besoin d'avoir L'adresse IP à jour dans votre fichier hosts et que vous n'aimez pas la fonction de configuration DNS personnalisée. Vous pouvez par exemple l'exécuter régulièrement comme cronjob.

#!/bin/bash
# Get the dynamic IP (dirty, I know)
IP=`host -t a mychangingip.myip.com | perl -nle '/((?:\d+\.?){4})/ && print ' | head -n1`

# Update the hosts file
if test -n "$IP"; then
    grep -v www.thesite.com /etc/hosts > /tmp/hosts
    echo "$IP www.thesite.com" >> /tmp/hosts
    cp /tmp/hosts /etc/hosts
fi
14
répondu Guðmundur H 2009-03-12 10:55:11

j'ai regardé dans ce récemment, je n'ai pas pu trouver une VRAIE solution. Cependant, vous pouvez obtenir partiellement ce que vous voulez en ajoutant une ligne de recherche dans /etc/resolv.conf par exemple:

search myip.com

alors il cherchera mychangingip.myip.com en essayant de résoudre mychangingip Voir aussi la page de manuel de resolv.conf

12
répondu amarillion 2009-03-12 10:47:49

cela peut être fait en exécutant un résolveur DNS local (quelque chose comme dnsmasq ). Vérifier https://serverfault.com/questions/22419/set-dns-server-on-os-x-even-when-without-internet-connection

11
répondu Laknath 2017-04-13 12:13:35

Une note de prudence est que si vous avez une entrée comme celle-ci :

 127.0.0.1     dev.example.com

lorsque vous recevez effectivement la demande dans votre application (dans mon cas ASP.NET) il se sera finalement résolu à 'localhost' de sorte que vous ne pouvez pas faire des choses comme ceci:

if (Request.Url.Authority == "dev.example.com) {
   // ...
}

l'alias est résolu en 'localhost'. je pense que ce comportement fonctionne comme si C'était un CNAME

2
répondu Simon_Weaver 2009-07-21 03:13:48

il y a des fournisseurs de services qui feront cela pour vous de manière confortable et fiable. Un exemple important est dyndns .

1
répondu innaM 2009-03-12 11:11:08

Je ne pense pas, le fichier hosts n'est pas vraiment une alternative au serveur dns. Au lieu d'essayer de comprendre comment installer et configurer bind dns, vous pourriez vouloir essayer SheerDNS basé sur les fichiers. http://threading.2038bug.com/sheerdns / (meilleur serveur DNS léger que j'ai trouvé dans freshmeat).

-2
répondu Francis Siefken 2009-03-12 10:28:11