57 votes

Comment utiliser le DNS, les noms d'hôtes ou d'autres moyens pour résoudre un problème d'IP et de port spécifique ?

Il s'agit d'un Question canonique à propos de la résolution des DNS/Noms d'hôtes vers les IPs/Ports

Exemple 1

Je fais tourner un serveur web sur le port 80 et un autre sur le port 87. Je voudrais utiliser le DNS pour que www.example.com soit dirigé vers le port 87. Comment puis-je y parvenir en utilisant uniquement le DNS ?

Exemple 2

Je fais tourner un service sur mon serveur sur un port non standard. Comment puis-je faire en sorte que les clients se connectent automatiquement à ce port non standard ? Puis-je utiliser le DNS ? Existe-t-il un support spécifique à une application pour lequel le DNS pourrait indiquer l'IP et le port ?

Exemple 3

Certains protocoles d'application prennent-ils spécifiquement en charge la connaissance des noms d'hôtes et permettent-ils de prendre des mesures spéciales en fonction de ces informations ? Y a-t-il d'autres questions sur Server Fault qui couvrent certains de ces aspects ?

<code>Commandeering:</code> Cette question portait à l'origine sur l'exécution de IIS et d'Apache sur le même serveur, mais les mêmes concepts peuvent être appliqués à tout logiciel serveur recevant des connexions de clients. Les réponses ci-dessous décrivent les problèmes et solutions techniques liés à l'utilisation du DNS et de la prise en charge du protocole d'application pour attribuer un numéro de port permettant à un client de se connecter.

35voto

user9517 Points 113163

Vous ne pouvez pas utiliser le DNS pour pointer vers un port (sauf si le client prend en charge les enregistrements SRV, ce qui n'est pas le cas de la plupart d'entre eux).

Sites web et protocoles avec en-têtes d'hôte

Pour ce faire, vous devrez mettre en place une méthode frontale. En général, vous utiliserez un serveur Web frontal ou un logiciel proxy dédié pour transférer la connexion du port 80 au port !80 en fonction du nom du serveur demandé dans l'en-tête. Certains pare-feu peuvent également transférer des données en fonction de l'en-tête de l'hôte.

SRV Records

Certains clients prennent en charge la consultation des enregistrements SRV qui indiquent le nom d'hôte et le numéro de port du serveur pour le service spécifié (par exemple, l'utilisateur spécifie "exemple.com", le client consulte un enregistrement SRV et obtient "server101.exemple.com" sur le port "255" ; il s'y connecte alors). Certains clients implémentent également cette fonction lorsqu'elle n'est pas nécessaire (mon dernier smartphone consultait les enregistrements SRV lors de la création d'un nouveau compte e-mail, par exemple).

Malheureusement, la prise en charge des enregistrements SRV est très rare. Seuls quelques protocoles notables en imposent le support (Jabber/XMPP, Kerberos, LDAP, SIP) et tous les clients ne le supportent pas, même lorsqu'il est imposé.

16voto

Rikalous Points 2996

Lorsque vous tapez http://www.domain.com dans votre navigateur, il est entendu que le port HTTP est sur 80. Il n'y a donc pas de moyen direct de diriger www.domain.com vers le port 87 si vous avez déjà un service fonctionnant sur ce port dans IIS.

Cela dit, il existe quelques "solutions de rechange".

  • Il suffit d'utiliser http://www.domain.com:87/ - ceci se connectera au port 87 (apache) de votre serveur.
  • Vous pouvez mettre en place une redirection, de sorte que http://www.domain.com/apache fera suivre (ou proxy, si vous voulez être fantaisiste) à www.domain.com:87.
  • Vous pouvez configurer un "VirtualHost" pour que www.domain2.com soit toujours sur le port 80, partagé avec www.domain.com. Vous ne pouvez pas mettre cela en place sans modifier IIS.

Sam a raison, le DNS est agnostique en ce qui concerne les ports. Toute sorte de redirection de port est effectuée par le service qui fonctionne sur ce port. Par conséquent, vous devez faire quelque chose avec IIS pour que cela se produise, si vous n'avez pas d'autre choix que de laisser le port 80.

J'ai également contourné votre situation en utilisant mod_proxy sur Apache, je ne suis pas sûr qu'il y ait un moyen de le faire avec IIS.

13voto

JonnyJD Points 361

Techniquement, vous pouvez utiliser Enregistrements SRV sur les serveurs DNS tels que définis dans RFC 2782 pour indiquer aux navigateurs quels serveurs gèrent le protocole http sur quels ports pour un (sous-)domaine :

_http._tcp.www.example.com.  IN      SRV 0    5      80   www.example.com.
_http._tcp.www2.example.com. IN      SRV 0    5      87   www.example.com.

Cela fonctionne bien pour de nombreux protocoles/services, notamment lorsque l'utilisation des enregistrements SRV est déjà définie dans la spécification du protocole.

Cependant, comme ce " Le Temple de la honte "La plupart des navigateurs et clients Web ne prennent pas en charge cette fonction (pour HTTP). Voir aussi why-do-browsers-not-use-srv-records .

Le problème est que SRV n'est pas inclus dans le protocole http de manière obligatoire, de sorte que chaque navigateur qui l'implémente résout les URLs différemment des navigateurs qui ne le font pas.

Vous ne devriez donc l'utiliser qu'à titre d'équilibrage de charge facultatif, où le choix du serveur n'est pas pertinent en termes de contenu. "Facultatif" parce que cela n'équilibrera pas beaucoup la charge si seulement quelques clients l'implémentent.

10voto

dunxd Points 598

Je crains que les noms de domaine ne puissent être associés qu'à une adresse IP et non à un port.

La plupart des serveurs web (Apache, IIS, etc.) vous permettent d'avoir deux domaines hébergés sur la même adresse IP en utilisant le fait que les requêtes web contiennent un champ host-header qui identifie le domaine dans la requête elle-même.

Si vous dites quel est le serveur web que vous utilisez, je suis sûr que les gens peuvent vous indiquer la documentation pertinente pour configurer votre serveur comme vous le souhaitez.

6voto

Devin Ellis Points 21

Afin d'utiliser tout (TBT) sur un port non standard et ne pas écrire le port dans l'URI, tout le monde peut utiliser les enregistrements SRV, définis dans la RFC 2782.

_http._tcp.www.example.com. IN      SRV 0    5      87   www.example.com.

Tous les autres hôtes http de la zone seront toujours servis sur le port 80 par défaut.

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