71 votes

Puis-je spécifier un port dans une entrée de mon /etc/hosts sous OS X ?

Duplicata possible :
Comment utiliser le DNS pour rediriger un domaine vers un port spécifique de mon serveur ?

Je veux tromper mon navigateur pour qu'il se rende sur localhost:3000 au lieu de xyz.com. Je suis allé dans /etc/hosts sur OS X 10.5 et j'ai ajouté l'entrée suivante :

127.0.0.1:3000 xyz.com

Cela ne fonctionne pas, mais sans spécifier le port, le truc fonctionne. Existe-t-il un moyen de le faire en spécifiant le port ?

55voto

JeremyReimer Points 225

Non, le fichier hosts est simplement un moyen de résoudre statiquement les noms lorsqu'aucun serveur DNS n'est présent.

49voto

Kyle Brandt Points 81077

Le fichier hosts sert à la résolution DNS. Les DNS résolvent les noms en adresses IP, et n'ont rien à voir avec les ports, je le crains. Vous devrez utiliser quelque chose d'autre en conjonction avec le fichier hosts pour rediriger le port (mélanger l'en-tête TCP en modifiant le port de destination).

Avec iptables :
Est-ce que MAC OS utilise iptables / netfilter (je ne le pensais pas) ? Si OS X utilise iptables, vous pourriez faire pointer xyz.com vers une adresse IP dans le fichier hosts comme 157.166.226.25 et ensuite.. :

sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -d 157.166.226.25 -j DNAT --to-destination 127.0.0.1:3000

:-)

17voto

stuart Brand Points 492

Vous n'avez pas besoin de spécifier un port dans le fichier hosts. Faites simplement l'entrée comme vous l'avez fait en omettant le port, comme dans 127.0.0.1 xyz.com, cela vous dirigera vers votre hôte local, puis ajoutez simplement le port 3000 à la fin de votre URL... http://xyz.com:3000

4voto

retracile Points 1230

En supposant que vous essayez d'intercepter http et non https, vous devriez écouter le port 80 sur votre machine locale, mais vous pourriez alors être en mesure d'utiliser les fonctionnalités de transfert de port de ssh en vous connectant à localhost avec -L80:localhost:3000 mais vous devrez le faire en tant que root.

Il serait probablement préférable que le port 3000 écoute le port 80 à la place.

Si vous contrôlez le routeur entre vous et xyz.com, vous pouvez peut-être définir une règle de transfert de port à la place.

3voto

Yar Points 25421

La solution DNS pour cela est d'utiliser des enregistrements SRV :

http://en.wikipedia.org/wiki/SRV_record

Il s'agit d'un moyen de permettre au DNS, qui était à l'origine une base de données distribuée de type "nom vers numéro" ou "numéro vers nom", d'inclure "nom vers point de terminaison du service", qui peut (éventuellement) inclure un protocole et un port.

La mauvaise nouvelle, c'est que les applications doivent être développées pour utiliser les enregistrements SRV. Il ne s'agit donc pas d'une solution toute faite pour ce que vous essayez de faire.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X