web-dev-qa-db-fra.com

Utilisation de plusieurs enregistrements A pour mon domaine - les navigateurs Web en testent-ils plusieurs?

Si j'ajoute plusieurs enregistrements A pour mon domaine, ils sont renvoyés dans un ordre circulaire par les serveurs DNS.

Exemple:

192.0.2.1 A example.com
192.0.2.2 A example.com
192.0.2.3 A example.com

Mais comment réagissent les navigateurs Web si le premier hôte (192.0.2.1) est en panne (inaccessible)? Est-ce qu'ils essaient le deuxième hôte (192.0.2.2) ou retournent-ils un message d'erreur à l'utilisateur? Existe-t-il une différence entre les navigateurs les plus populaires?

Si j'implémente ma propre application, je peux l'implémenter de sorte que la seconde soit utilisée au cas où la première serait en panne, ce qui est donc possible. Et cela serait très utile pour créer un site Web tolérant aux pannes.

92
Jonas

Oui, la plupart des navigateurs des 5 à 10 dernières années essaieront les autres enregistrements A si l’un ne répond pas. Cela s'appelle parfois "tentative du navigateur" ou "tentative du client" apparemment. Vous ne trouverez quasiment rien à ce sujet dans le contexte des divers exploits de navigateur que cette fonctionnalité active contre les sites qui ne l'utilisent pas (voir reliure DNS et épinglage DNS , - épinglage anti-DNS, épinglage anti-anti-DNS, épinglage anti-anti-anti-anti-DNS , etc.). Une sorte de mauvaise réputation, mais cela prouve son existence.

Presque tous les navigateurs reçoivent effectivement la liste complète des enregistrements A et en vérifient bien d’autres si celui qu’il utilise échoue. Vous pouvez vous attendre à ce que chaque client attende 30 secondes lorsqu'il tente d'accéder au site pour la première fois, lorsqu'un serveur est en panne, jusqu'à ce qu'il se connecte à une adresse fonctionnelle. Le navigateur mettra alors en cache l'adresse qui fonctionne et continuera à utiliser celle-ci pour les demandes futures, sauf en cas d'échec; il devra alors effectuer une nouvelle recherche dans la liste. Donc, 30 secondes d'attente à la première demande, très bien par la suite.

Mais ce n’est pas nécessairement quelque chose que vous voulez utiliser, il va y avoir beaucoup de mises en garde concernant la compatibilité du navigateur, la compatibilité os/OS, la compatibilité du proxy, les en-têtes de contrôle du cache vont avoir des effets étranges sur le fait de savoir quelles adresses sont en panne ou commencent à être que 30 secondes d'attente à chaque demande, les personnes écrivant des clients personnalisés pour votre site finiront par utiliser gethostbyname au lieu de getaddrinfo et ne seront pas en mesure de gérer le basculement, toutes sortes des problèmes potentiels.

Vous ne pouvez pas non plus vous fier à plusieurs enregistrements A pour autoriser les serveurs "maîtres" et "esclaves", car vous ne saurez jamais quelle adresse un navigateur va choisir dans la liste. Ils doivent tous être tout aussi capables de gérer les visiteurs s’ils courent, car tout le monde peut avoir du trafic s’il est en hausse. Un navigateur peut penser que votre troisième serveur de la liste est le plus attrayant, peut-être le plus proche, et il choisira celui-ci même si les trois sont toujours disponibles.

Mais si vous pouvez vivre avec les limitations et disposer d'un système HTTP relativement simple avec lequel vous pouvez prédire l'interaction du navigateur, cela fonctionnera.

Oh, vous devrez également faire face à beaucoup de gens vous disant que cela n'existe pas (puisque c'était vrai il y a 15 ans). Mais vous pouvez essayer de vous connecter à un nom de domaine avec plusieurs enregistrements A, certains avec des adresses IP mortes et d'autres bons, si vous avez besoin de le prouver (oui, même le bon vieux telnet utilise maintenant getaddrinfo et gère plusieurs enregistrements A de manière élégante ces jours-ci). - il affichera une belle liste des adresses IP qu’il essaie jusqu’à ce qu’il réussisse.

86
Joff

Soyez averti que Windows Vista implémente les parties stupides de RFC3484 (c'est-à-dire le reportage d'IPV6 à IPV4) et préférera l'adresse IP qui partage le plus de préfixes avec l'adresse IP de l'utilisateur plutôt que d'en choisir un au hasard. Étant donné que la plupart des utilisateurs ont des adresses IP commençant par 192.168, cela signifie que l’une de vos adresses IP partageant le plus de préfixes avec le plus grand nombre de trafic Vista. Microsoft a corrigé cette idiotie dans Windows 7 et les versions ultérieures. Ce problème n'est donc plus aussi grave qu'auparavant.

5
Mike Scott

Il s'agit d'une technique de base de répartition de la charge DNS: DNS Round Robin. Cela n'a rien à voir avec le navigateur, cela dépend de l'implémentation du résolveur et du cache local/distant de l'adresse DNS. Les changements sont que si un serveur échoue, en raison de la mise en cache dans la couche DNS, votre site Web peut être inaccessible.

Voir ici pour une explication de base sur Round Robin DNS sur WikiPedia.

3
keatch

Le système d'exploitation détermine quelle adresse IP utiliser, pas le navigateur. Windows va rondier la liste renvoyée (dans la liste transmise par le DNS), mais continuera à utiliser la même adresse jusqu'à ce que le DNS soit vidé ou expire. * Les implémentations ix dépendent en partie de l'implémentation de la pile TCP commun, mais suivent généralement une méthode de tourniquet à tour de rôle.

0
iivel