Hemos registrado algunos servidores de nombres para la resolución de DNS para nuestro sitio web que se implementa en varios centros de datos.
Nuestra estrategia actual de resolución de DNS es que, en función de las diferentes direcciones IP del cliente, el servidor de nombres devolverá diferentes direcciones IP para el mismo dominio. Por ejemplo, si la dirección IP del cliente es de América del Norte, el servidor de nombres devolverá una dirección IP que es la dirección IP de nuestro centro de datos de América del Norte.
Pero la dirección IP del cliente a veces no es la dirección IP real de los usuarios. Puede ser una dirección IP de DNS que pertenece a un ISP o un servidor proxy. Por otro lado, si uno de nuestros centros de datos está inactivo, queremos que nuestro servidor de nombres excluya esa dirección IP que pertenece al centro de datos bloqueado. Así que esperamos poder obtener una estrategia más dinámica para nuestra resolución de DNS. ¿Hay una solución para eso?
Respuestas:
Parece que quieres anycast. Ese es el tipo de cosas que usan sitios como Google. Tiene una única dirección (resuelta por DNS) para todos sus sitios web y permite que el protocolo de enrutamiento de Internet (BGP) dirija a los usuarios al sitio más cercano (mediante el protocolo de enrutamiento). Si un sitio deja de funcionar, BGP coloca automáticamente el siguiente sitio más cercano en la tabla de enrutamiento de Internet.
El ejemplo clásico es
8.8.8.8
para DNS. Se resuelve en diferentes ubicaciones en todo el mundo, y si una ubicación se cae, se dirige a la siguiente ubicación más cercana.La respuesta no es DNS, es enrutamiento.
fuente
Lo que necesita es exactamente lo que ofrece el servicio DNS de Amazon Route53 :
Enrutamiento basado en la latencia : enruta a los usuarios finales a la región de AWS que proporciona la latencia más baja posible.
DNS geográfico : enruta a los usuarios finales a un punto final particular que especifique en función de la ubicación geográfica del usuario final.
Comprobaciones de estado y conmutación por error : Amazon Route 53 puede controlar el estado y el rendimiento de su aplicación, así como de sus servidores web y otros recursos.
... y muchas más funciones avanzadas de DNS .
No es necesario que aloje su sitio web en AWS para poder usar Route53, funcionará felizmente con los servicios implementados en centros de datos privados.
A menos que sea un precio de Facebook o Google, tampoco debería ser un problema, a partir de $ 0,40 por millón de solicitudes (ver detalles de precios ).
Espero que ayude :)
fuente
Tuve esta idea y comencé a codificarla, pero nunca terminé ya que la necesidad se evaporó primero.
El servidor DNS tiene los nombres de host y las direcciones MAC de todas las máquinas en su LAN y una forma de comunicarse con ellos. Cuando recibe una solicitud de una máquina que conoce, envía un ARP inverso para la dirección IP dada la dirección MAC y usa la respuesta para construir la respuesta DNS.
Esto no tiene nada que ver con lo que está tratando de hacer, pero ilustra el punto. En teoría, un servidor DNS puede codificarse para llevar a cabo cualquier esquema novedoso que desee resolver nombres a direcciones IP.
La pregunta real parece ser cómo obtener la dirección IP del cliente para decidir dónde enviarlos. Este es un pequeño problema de XY. Lo que realmente desea es que el ISP del cliente se geolocalice, y puede obtenerlo al hacerlo directamente desde la dirección IP que realiza la solicitud, suponiendo que no sea 8.8.4.4 o algún otro servicio de redireccionamiento de DNS. En mi opinión, la mejor solución para los redireccionadores de DNS es ignorar el problema y realizar una geolocalización autorreferente (es decir, desde el servidor DNS intenta localizar la dirección IP de llamada) y redirigir adecuadamente. Vea aquí cómo geolocalizar: /programming/2574542/location-detecting-techniques-for-ip-addresses
Realmente no quieres ninguna transmisión aquí sino algo más cuerdo. Anycast tiene la molesta propiedad de que puede redirigir paquetes en el medio de su flujo TCP causando confusión masiva.
Ron Maupin afirma que anycast es de ruta confiable para TCP. Aquí está el traceroute que muestra lo contrario:
Si intenta geolocalizar las direcciones IP aguas arriba de la manera obvia, ambas están en Wichita. Esto no es correcto por lo que bastará una simple demostración de física.
El rango de 8.8.4.4 se mide a 30 ms, de los cuales los primeros 18 ms son la penalización local (el salto 3 es el enrutador local de mi ISP). Mi distancia a Wichita es de 1297 millas. Por lo tanto, el tiempo mínimo de ida y vuelta es (1297 * 2 millas / 225,000 kilómetros por segundo (velocidad de la luz en el vidrio)) que es 18.55ms. Por lo tanto, no debería obtener una respuesta más rápida que 28 ms, pero recibí una en 25 ms.
Los paquetes llegan a Google por dos rutas BGP diferentes. BGP no eligió el más cercano.
fuente
Lo que necesita podría lograrse con alguna combinación de DNS anycast y RFC-7871.
fuente