Il s'agit d'une question canonique sur la résolution DNS / noms d'hôtes en adresses IP / ports.
Exemple 1
J'utilise un serveur Web sur le port 80 et un autre sur le port 87. J'aimerais utiliser DNS pour que www.example.com accède au port 87. Comment puis-je accomplir cela à l'aide de DNS uniquement?
Exemple 2
J'exécute un service sur mon serveur sur un port non standard. Comment 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 où DNS pourrait indiquer l’IP et le port?
Exemple 3
Certains protocoles d’application prennent-ils spécifiquement en charge la détection du nom d’hôte et permettent-ils d’entreprendre des actions spéciales en fonction de ces informations? Existe-t-il d'autres questions sur Server Fault qui couvrent certaines d'entre elles?
Commandeering:
Cette question concernait à l'origine l'exécution d'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 techniques et les solutions liés à l’utilisation du support DNS et du protocole d’application pour attribuer un numéro de port à un client.
la source
Réponses:
Vous ne pouvez pas utiliser le DNS pour pointer sur un port (à moins que le client ne prenne en charge les enregistrements SRV, la plupart ne le font pas).
Sites Web et protocoles avec en-têtes d'hôte
Pour ce faire, vous devrez mettre en place une méthode frontale. En règle générale, 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 transmettre en fonction de l'en-tête de l'hôte.
Enregistrements SRV
Certains clients prennent en charge la recherche des enregistrements SRV indiquant le nom d’hôte et le numéro de port du serveur pour le service spécifié (c’est-à-dire que l’utilisateur spécifie "exemple.com". Le client recherche un enregistrement SRV et obtient "serveur101.exemple.com" sur le port "255 "; puis se connecte à cela). Certains clients implémentent également cette fonctionnalité là où ce n’est pas nécessaire (mon dernier smartphone recherchait les enregistrements SRV lors de la configuration d’un nouveau compte de messagerie, par exemple).
Malheureusement, la prise en charge des enregistrements SRV est extrêmement rare. Seuls quelques protocoles notables exigent son support (Jabber / XMPP, Kerberos, LDAP, SIP) et tous les clients ne le prennent pas en charge même lorsqu'ils sont obligatoires.
la source
Lorsque vous tapez http://www.domain.com dans votre navigateur, il est entendu que le port HTTP est sur 80. Par conséquent, il n'existe aucun moyen direct de faire pointer www.domain.com vers le port 87 si vous disposez déjà d'un service. en cours d'exécution sur ce port dans IIS.
Cela étant dit, il existe quelques "solutions de contournement".
Sam a raison, DNS est agnostique en matière de ports. Toute sorte de redirection de port se produit par le service qui s'exécute sur ce port. Par conséquent, vous devrez faire quelque chose avec IIS pour que cela se produise, si vous n'avez pas d'autre choix que de le laisser sur le port 80.
J'ai également résolu votre problème en utilisant mod_proxy sur Apache, sans savoir s'il existe un moyen de le faire avec IIS.
la source
J'ai bien peur que les noms de domaine ne puissent être associés qu'à une adresse IP et non à un port.
La plupart des serveurs Web, par exemple (Apache, IIS, etc.) vous permettent d’héberger deux domaines sur la même adresse IP en utilisant le fait que les demandes Web contiennent un champ d’en-tête d’hôte qui identifie le domaine dans la demande elle-même.
Si vous dites quel est le serveur Web que vous utilisez, je suis sûr que les gens peuvent vous diriger vers la documentation pertinente pour configurer votre serveur comme vous le souhaitez.
la source
Techniquement, vous pouvez utiliser des enregistrements SRV sur des serveurs DNS tels que définis dans la RFC 2782 pour indiquer aux navigateurs quels serveurs gèrent http sur quels ports pour un (sous) domaine:
Cela fonctionne bien pour de nombreux protocoles / services, en particulier lorsque l'utilisation des enregistrements SRV est déjà définie dans la spécification du protocole.
Cependant, comme l' indique ce " Hall of Shame ", la plupart des navigateurs / clients Web ne le prennent pas en charge (pour HTTP). Voir aussi pourquoi-ne-navigateurs-pas-utiliser-srv-records .
Le problème est essentiellement que SRV n’est pas inclus dans le protocole http comme une nécessité, ainsi chaque navigateur qui l’implémente résout les URL différemment des navigateurs qui ne le font pas.
Donc, vous ne devriez utiliser ceci que comme un équilibrage de charge optionnel, où il est indifférent de savoir quel serveur est choisi en termes de contenu. "Facultatif" car cela n'équilibrera pas une grande partie de la charge si seulement quelques clients l'implémentent.
la source
Le DNS n’a pas la capacité de rediriger vers un port spécifique, tout ce qui importe au DNS est la résolution de l’adresse IP d’un nom, et inversement.
Certains services, tels que les fournisseurs DNS dynamiques IP, tels que NO-IP, fournissent un service qui peut vous aider à faire quelque chose de similaire pour contourner le blocage des adresses IP sur les services DNS domestiques.
la source
Pour pouvoir utiliser n'importe quel service (TBT) sur un port non standard et ne pas écrire de port dans l'URI, tout le monde peut utiliser les enregistrements SRV, définis dans la RFC 2782.
Tous les autres hôtes http de la zone seront toujours servis sur le port 80 par défaut
la source
Le moyen le plus simple consiste à utiliser un proxy inverse et à le définir comme proxy Web. Vous pouvez configurer un
nginx
ouapache
pour cela. J'avais fondamentalement le même problème dans le passé et j'ai créé un outil permettant de réaliser une telle configuration de manière simple. Ergo: https://github.com/cristianoliveira/ergoJ'ai utilisé cela et fonctionne fondamentalement comme un charme :)
la source
Une approche permettant de déployer deux serveurs Web sur le même hôte consiste à les faire écouter tous les deux sur le port 80 sur deux adresses IPv6 différentes. IPv6 spécifie officiellement que vous pouvez attribuer deux adresses à une interface et qu'il existe suffisamment d'adresses IPv6 pour le faire sans manquer d'adresses.
Ceci est une preuve pour l'avenir, et vos deux domaines peuvent chacun avoir des enregistrements AAAA pointant vers les différentes adresses IP, ainsi les domaines se retrouvent sur des serveurs Web différents.
Si vous avez également une adresse IPv4 unique, vous pouvez utiliser le port 80 sur l'adresse IPv4 pour exécuter un proxy inverse. Ainsi, les clients IPv4 uniquement peuvent accéder à vos deux serveurs Web. L'approche de proxy inverse fonctionne même si certains des serveurs Web sont sur le même hôte que le proxy inverse et que certains des serveurs Web se trouvent sur d'autres hôtes.
Dans une telle configuration
example.org
pourrait avoir des adresses192.0.2.1
et2001:db8::1
tout enexample.net
a des adresses192.0.2.1
et2001:db8::2
.la source