Comment envoyer des visiteurs au serveur le plus proche en utilisant DNS?

20

Existe-t-il un moyen de localiser les entrées DNS? Cela signifie que les utilisateurs d'Asie résolvent mydomain.com vers une autre IP que les utilisateurs des États-Unis ou d'Europe. Ce serait utile de donner aux utilisateurs le serveur à proximité. Le DNS est la seule technique utilisée jusqu'à présent, ce qui signifie que je ne peux pas placer de logiciel ou de système central remplaçant le DNS pour résoudre ce problème.

kcode
la source

Réponses:

20

Oui, il existe actuellement deux solutions populaires à ce problème.

Le premier est appelé Anycast, où le même bloc IP est littéralement utilisé à plusieurs endroits dans le monde. En d'autres termes, les serveurs de noms de votre domaine renvoient toujours la même adresse IP, mais cette adresse IP est en fait attribuée à plusieurs ensembles de serveurs physiques.

Vous pouvez en savoir plus à ce sujet ici http://en.wikipedia.org/wiki/Anycast

La deuxième technique implique à nouveau AnyCast, mais cette fois, la plage d'adresses IP diffusée fait référence à nos serveurs de noms eux-mêmes. Comme les serveurs de noms ne demanderont que des clients qui sont aussi leurs plus proches (comme déterminé par la magie de BGP), ils peuvent eux-mêmes renvoyer des adresses IP logiquement locales au client.

Un exemple de ceci est le domaine l.google.com de google

Depuis un hôte en Australie

crimson:~ dave$ host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com is an alias for www-notmumbai.l.google.com.
www-notmumbai.l.google.com has address 66.249.89.99
www-notmumbai.l.google.com has address 66.249.89.147
www-notmumbai.l.google.com has address 66.249.89.103
www-notmumbai.l.google.com has address 66.249.89.104

D'un hôte aux États-Unis

[dave@odessa ~]$ host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 74.125.95.99
www.l.google.com has address 74.125.95.147
www.l.google.com has address 74.125.95.104
www.l.google.com has address 74.125.95.106
www.l.google.com has address 74.125.95.105
www.l.google.com has address 74.125.95.103

Ainsi, le CNAME pour se www.google.comrésout à www.l.google.com, mais lorsque vous le résolvez, selon votre emplacement, votre client reçoit un ensemble différent d'adresses IP. Cela est dû au fait que le serveur de noms qui a reçu la demande www.l.google.cométait le serveur de noms local , par rapport au client.

Dave Cheney
la source
5
Cette réponse répond techniquement à la question, mais je pense qu'elle est plutôt inutile en termes d'être une vraie réponse à un problème réel: la plupart des partis n'ont pas de diffusion, donc votre réponse est hors de portée pour tous ces partis.
cnst
alors quel déclarant propose cette solution?
dynamique
Il convient également de noter que DNS possède cette fonctionnalité en mode natif. Placez un serveur DNS dans une région avec un enregistrement pointant vers un serveur Web dans cette région. Répétez dans d'autres régions. Profit.
dmourati
@dmourati: cela ne propagerait-il pas et ne mettrait-il pas à jour d'autres serveurs DNS? J'ai toujours supposé que les serveurs DNS propagent toujours les informations jusqu'à ce qu'ils soient tous synchronisés.
Guru Prasad
@GuruPrasad Plusieurs hôtes (généralement dans des zones géographiques différentes) reçoivent la même adresse IP de monodiffusion et des itinéraires différents vers l'adresse sont annoncés via BGP. Les routeurs les considèrent comme des itinéraires alternatifs vers la même destination, bien qu'ils soient en réalité des itinéraires vers différentes destinations avec la même adresse. Comme d'habitude, les routeurs sélectionnent un itinéraire selon la métrique de distance utilisée (la moins coûteuse, la moins encombrée, la plus courte). La sélection d'un itinéraire dans cette configuration revient à sélectionner une destination. == wikipedia / anycast ---- mais cela fonctionne mieux en IPv6 que cette description
Garet Claborn
2

Si vous souhaitez uniquement localiser des serveurs pour l'Asie, l'Amérique du Nord et l'Europe, vous pouvez décider d'exécuter vous-même votre application Web et votre DNS.

Avec DNS, vous pouvez utiliser quelque chose comme l' approche DNS de Split-Horizon , qui pourrait être obtenue grâce à la fonctionnalité intégrée de votre serveur DNS (ils peuvent l'appeler GeoDNS ), ou via un pare - feu qui redirigerait différentes plages d'adresses IP vers différentes exécutions des instances de votre serveur DNS (vous pouvez exécuter plusieurs copies différentes du serveur sur votre machine locale, qui écouteront à différentes adresses IP locales).

Vous pourriez probablement obtenir les résultats escomptés dans ≈90% des cas en répondant aux demandes DNS des adresses IP RIPE et AfriNIC avec un Aenregistrement de votre hôte en Europe, des demandes d' APNIC - hôte en Asie et des demandes des adresses IP du / 8 blocs administrés par ARIN , LACNIC et le reste de l'espace d'adressage / 8 avec un Aenregistrement de votre serveur en Amérique du Nord. Cela aura des résultats erronés dans certaines situations (certains blocs / 8 sont partagés entre l'Europe et l'Amérique du Nord, un certain espace d'adressage est anycast, etc.), mais le pire qui se produirait est une latence supplémentaire pour la partie concernée, donc, il ne devrait pas '' t être un gros problème.

(Et, oui, il devrait y avoir un moyen de rendre ces choses plus faciles, mais, jusqu'à présent, il semble qu'il n'y en ait pas.)

cnst
la source
2

J'ai eu le même problème. Notre entreprise a des clients en Russie et en Chine et ils ont tous besoin d'une connexion très rapide à notre service. Nous avons utilisé Amazon Route 53 Geo dns et venons de créer deux enregistrements, l'un acheminera les clients de la Chine vers notre cluster de la région de Tokyo et les clients de la Russie vers Londres.

amanbolat
la source