1 votes

Comment faire pointer un nom d'hôte vers une adresse IP ?

J'ai un serveur web en cours d'exécution, qui peut être appelé par l'intermédiaire de http://localhost:9000/ . Ce que j'essaie d'archiver, c'est qu'au lieu d'appeler http://localhost:9000/ Je voudrais appeler http://repo.sweetsoft/ . J'ai essayé de modifier le fichier hosts comme suit :

127.0.0.1       localhost
127.0.1.1       sweetsoft
127.0.0.1:9000  repo.sweetsoft

Comme vous pouvez le voir, j'ai ajouté la dernière ligne mais cela ne fonctionne pas. Qu'est-ce que je fais de mal ?

1voto

Amin Khoshnood Points 26

Il y a un malentendu sur hosts ici.

Tout d'abord, le fichier d'hôtes a la priorité sur le DNS sur la plupart des systèmes d'exploitation, vous pouvez les définir sur les systèmes d'exploitation Linux/Unix et macOS en /etc/hosts y c:\windows\system32\drivers\etc\hosts sur Windows .

Donc quand vous ajoutez un enregistrement dans votre fichier d'hôtes comme :

127.0.0.1  repo.sweetsoft

et essayer d'ouvrir http://repo.sweetsoft/ dans votre navigateur, il n'envoie pas de requête DNS au monde extérieur et utilise cette entrée de votre fichier d'hôtes.

Gardez à l'esprit que cela ne fonctionne que pour les enregistrements A (résolution d'un nom ou d'une adresse de domaine vers une adresse IPv4) et AAAA (résolution d'un nom ou d'une adresse de domaine vers une adresse IPv6) et que vous ne pouvez pas définir les enregistrements TXT ou MX par exemple.

Mais les numéros de port se trouvent dans une couche réseau différente, le fichier hosts ne comprend que les noms (comme repo.sweetsoft) et les adresses IP, c'est la couche 3 et 4 du modèle ISO (Réseau/Transport) mais les numéros de port sont dans la couche 7 (couche application).

Vérifier le modèle OSI

enter image description here

Modèle OSI vs TCP/IP

enter image description here

Depuis hosts ou le protocole DNS ne sont pas conscients des couches d'application, ils n'ont aucune idée des numéros de port également.

Votre configuration en ajoutant 127.0.0.1:9000 à votre fichier hosts est comme ajouter des numéros de port aux enregistrements A du DNS.

Après cette clarification, vous pouvez résoudre ce problème de plusieurs façons :

  1. Exécuter votre application sur le port 80. Cela résout votre problème et lève toute ambiguïté.

  2. Transférer le port 80 vers le port 9000 sur votre machine via iptables

    This command will forward all requests destined to port 80 and makes a lot of conflicts, I suggest socat

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 9000

  3. Transférez le port 80 vers le port 9000 de votre machine via socat :

    apt install socat -y socat TCP-LISTEN:80,fork TCP:127.0.0.1:9000

Si vous ne pouvez pas changer le port de votre application, socat sera le moyen le plus simple.

Pour une utilisation quotidienne, vous pouvez écrire un fichier de service systemd pour l'exécuter en arrière-plan.

0voto

user.dz Points 45060

Vous pouvez adopter une approche différente :

  1. 127.0.1.1 sweetsoft repo.sweetsoft en /etc/hosts
  2. Direct repo.sweetsoft:80 y 127.0.0.1:9000 dans votre serveur HTTP (AFAIK, Apache peut le faire à l'aide de VirtualHost Référence ).

Cependant, il me semble que vous utilisez un serveur de développement d'applications. L'utilisation d'Apache comme proxy peut être une surcharge.

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