Apunte varias direcciones IP a un solo nombre de host


25

En el sistema de Windows, hay este archivo en C:\WINDOWS\system32\drivers\etc\hosts. Este archivo nos permite predeterminar una dirección IP específica a un nombre de host.

El problema ahora es si puedo configurar varias direcciones IP para un nombre de host. Por ejemplo, ¿puedo hacer algo como esto?

192.168.244.128   gateway.net
192.168.226.129   gateway.net

¿Y esperar que el navegador pueda resolver a ambos, ver cuál funcionará y así apuntar a ese?

Si no, ¿hay alguna otra manera de obtener el comportamiento que quiero?

Nota: estoy implementando esta aplicación en mi propia red de área local, por lo que no hay necesidad de internet.

Respuestas:


25

Normalmente no usaría hosts para hacer esto, sino su DNS. La mayoría de los DNS proporcionarán lo que se llama un "Round Robin" si asigna múltiples registros A al único nombre en la zona.

Lo que haría entonces, es que la primera solicitud que reciba recibiría 192.168.244.128, la siguiente recibiría 192.168.226.129, y así sucesivamente. Sin embargo, por diseño, su máquina local almacenará en caché su resolución DNS, y generalmente usará la misma dirección IP una y otra vez, hasta que caduque (Time To Live, TTL).


1
EDITAR: ¡No importa, estoy corregido! Publicado a continuación
MagnaVis

17

Sí, puede hacer esto, lo he usado para probar escenarios DNS de round-robin sin tener que ingresar los hosts en un DNS.

Cuando una aplicación llama a gethostbyname, recupera la lista completa de direcciones IP (posiblemente en orden aleatorio, dependiendo de las bibliotecas / SO).


2
+1 por responder realmente la pregunta
CLF


12

Creo que vas por esto de la manera incorrecta. Avíseme si estoy haciendo las suposiciones equivocadas aquí.

Guión:

  • Tiene dos servidores Windows que ejecutan la misma aplicación web, probablemente en IIS.
  • Desea que su aplicación sea tolerante a fallas, de modo que si uno de los servidores falla, su aplicación aún está disponible.
  • Desea que esta tolerancia a fallas sea transparente para el navegador, de modo que los usuarios puedan continuar accediendo a la aplicación con el mismo nombre de host, es decir, gateway.net

Lo que estás tratando de hacer se llama DNS round-robin (también conocido como equilibrio de carga del hombre pobre), pero estás tratando de hacerlo desde el lado del cliente. Esto no parece tener el efecto deseado (al menos en mi caja de Windows XP) incluso si elimino el caché de DNS. Windows solo se resolverá con la primera IP del archivo. Sin embargo, el DNS round-robin no tolera fallas, por lo que esto no lo ayudará a lograr lo que desea.

Solución sugerida:

Balanceador de carga de hardware: algunas marcas son Alteon, Big-IP, Barracuda. Lo que esto hace es básicamente presentar una única IP para que sus usuarios se conecten y reenvíe las solicitudes a los servidores web. Si uno de los servidores deja de estar disponible, ya no le reenviará tráfico. Esta es la opción costosa.

Servicios de equilibrio de carga de red: esta es una tecnología de Microsoft disponible en el servidor de Windows, que le dará una única IP en clúster. Logra el mismo resultado que un equilibrador de carga de hardware, pero de una manera diferente. Todo lo que necesitas hacer es configurarlo .


1
ZEN-LB es un equilibrador de carga realmente simple y fácil. Hemos tenido mucho éxito con él y nos encanta porque es de código abierto (gratis)
Derrick

2

De http://www.unc.edu/atn/lsf/docs/7.0.5/lsf_config_ref/index.htm?hosts.5.html~main

Ejemplo de IPv4

192.168.1.1 hostA hostB 192.168.2.2 hostA hostC host-C

En este ejemplo, hostA tiene 2 direcciones IP y 3 alias. El alias hostB especifica la primera dirección, y los alias hostC y host-C especifican la segunda dirección. LSF usa el nombre de host oficial, hostA, para identificar que ambas direcciones IP pertenecen al mismo host.


1
"El formato de LSF_CONFDIR / hosts es similar al formato del archivo / etc / hosts en máquinas UNIX". Es decir: la fuente no se trata de archivos de hosts regulares.
gertvdijk

1

Mi sugerencia es usar un servidor DNS interno con DNS round-robin y TTL = 0. Si actualiza el registro DNS (también con el sistema de comprobación automática de IP) cuando un IP / servidor está inactivo, puede tener un sistema de alta disponibilidad.


Esta no es una solución para alta disponibilidad. DNS no está diseñado para esto y solo debe usarse junto con otros métodos de conmutación por error. Muchos resolutores también ignoran el caché TTL, lo que hace que este método no sea confiable.
Mark Henderson

1

He hecho esto en una red doméstica donde asigno IP estáticas a las interfaces de red cableadas e inalámbricas de una computadora portátil, y desde el archivo de hosts de otra máquina apunto un solo nombre de host a ambas direcciones IP. Parece que funciona bien.


1

De http://www.unc.edu/atn/lsf/docs/7.0.5/lsf_config_ref/index.htm?hosts.5.html~main

Ejemplo de IPv4

192.168.1.1 hostA hostB 192.168.2.2 hostA hostC host-C

En este ejemplo, hostA tiene 2 direcciones IP y 3 alias. El alias hostB especifica la primera dirección, y los alias hostC y host-C especifican la segunda dirección. LSF usa el nombre de host oficial, hostA, para identificar que ambas direcciones IP pertenecen al mismo host.

Según este ejemplo, hice el siguiente host 10.18.yx 192.168.zx

Donde hostA es el nombre de host de un servidor que pretendo alcanzar desde la red interna (192.168.yx) y VPN (10.8.zx).

ping hostA
sending 'ping' on 192.168.y.x [10.8.z.x]
Answer from 10.8.z.x : bytes=32 time=98 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=78 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=111 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=136 ms TTL=64

Por lo tanto, funciona bien y puedo hacer que Samba funcione a través de VNP usando el nombre de host, por lo que está bien para mí tener mis unidades conectadas en Windows en ambos casos (LAN o VPN conectadas).

Atentamente.


0

@ Plamen Dimitrov Necesitará un dispositivo para manejar ese tipo de equilibrio, posiblemente un interruptor que pueda manejar BGP frente a su FW, o use su FW si es capaz. Si sus Ciscos manejan BGP, busque implementar eso. De esta manera, puede hacer que las dos direcciones IP de su ISP entren en el conmutador de Cisco y que los servidores de destino tengan IP válidas de IP públicas de 24 bits (DIFERENTE DE LAS 2 IP del ISP). En ese momento (está utilizando 3 bloques de IP públicos diferentes, el de sus servidores DEBE SER 24 BITS), necesitaría que cada uno de sus ISP conozca esta solución y ellos deberían estar dispuestos a apoyar el Solución BGP entre ellos, que la mayoría hará. Ahora, cuando se resuelva su FQDN, se resolverá en su bloque de IP de 24 bits, incluso si se caen 1 líneas ISP. El objetivo es sus direcciones de 24 bits siempre estarán disponibles debido a que sus ISP acuerdan enrutar esa dirección de 24 bits a través de sus líneas. Esto también funciona para VPN, ya que todo lo que está usando para VPN son las direcciones de 24 bits, no cualquiera de las IP del ISP que conectó a su Cisco / Switch. En ese punto, debe ser cauteloso con BGP FLAPPING, donde si sus líneas suben y bajan mucho, debido a una línea que recibe DOS, las direcciones DNS cambiarán tanto, en Internet, que los servidores DNS QUITARÁN AUTOMÁTICAMENTE LAS IP QUE LLEVAN A SU BLOQUE DE IP DE 24 BITS. Ese es un ataque de DOS en las soluciones BGP. En ese punto, debe ser cauteloso con BGP FLAPPING, donde si sus líneas suben y bajan mucho, debido a una línea que recibe DOS, las direcciones DNS cambiarán tanto, en Internet, que los servidores DNS QUITARÁN AUTOMÁTICAMENTE LAS IP QUE LLEVAN A SU BLOQUE DE IP DE 24 BITS. Ese es un ataque de DOS en las soluciones BGP. En ese punto, debe ser cauteloso con BGP FLAPPING, donde si sus líneas suben y bajan mucho, debido a una línea que recibe DOS, las direcciones DNS cambiarán tanto, en Internet, que los servidores DNS QUITARÁN AUTOMÁTICAMENTE LAS IP QUE LLEVAN A SU BLOQUE DE IP DE 24 BITS. Ese es un ataque de DOS en las soluciones BGP.


0

Leve aclaración aquí, al menos en el mundo de Windows: PUEDE tener dos direcciones IP para un solo nombre en un archivo de hosts. Cuando se consulta, se devuelven todas las direcciones. La aplicación (es decir, el navegador) intentará conectarse a cada uno hasta que se establezca una conexión. IOW, probará todas las direcciones antes de que se agote el tiempo. (Este es un malentendido común ya que muchas personas creen que solo intentará la "primera" dirección).

Puede verificar esto con el siguiente experimento:

Agregue dos o más direcciones para un host en el archivo de hosts, una real y otras falsas. (Reduzca las direcciones falsas alfabéticamente). Abra un navegador e intente conectarse al nombre de host. Ejecute netstat -no al mismo tiempo. Debería ver los intentos de conexión a la dirección falsa. (atascado en SYN_SENT) El navegador finalmente llegará a la buena dirección y se conectará. Hay un retraso en la conexión, pero FUNCIONARÁ.


No digo que estés equivocado, pero acabo de probarlo en mi Win 10 Pro usando Chrome y no funcionó. Modifiqué mi archivo de hosts (y lo guardé), luego corrí ipconfig /flushdnspara asegurarme de que se olvidaron las resoluciones anteriores. Intenté abrir el sitio (local para mi máquina) en una ventana de incógnito en Chrome para evitar los resultados de la memoria caché. Simplemente falló (y esperé varios minutos para ver si eventualmente funcionaría). Presiona actualizar solo para estar seguro. Luego comenté la IP falsa de mi archivo de hosts. Sin hacer nada más, actualicé la página y funcionó. Lo mismo con Firefox.
Andrew Steitz

Por lo tanto, PUEDE funcionar según la aplicación, pero definitivamente NO funciona en dos navegadores modernos.
Andrew Steitz

-1

No puede hacer esto con el archivo de hosts.

Tampoco puede hacer esto con DNS: puede servir varias direcciones IP para un solo nombre, pero el navegador elegirá solo una de esas direcciones IP múltiples, lo probará, y si este host está inactivo, el navegador mostrará un error de conexión .

Una posible solución es configurar un servidor proxy y configurar estas dos IP como los padres para el dominio al que sirven. Al menos en el caso de Squid, el proxy probará un servidor y, si falla, probará el segundo servidor. Luego configure su navegador para usar este servidor proxy.


No es cierto sobre round robin: www-archive.mozilla.org/docs/netlib/dns.html Tenga en cuenta que los gustos de google devuelven múltiples registros DNS. A pesar de la reordenación de RFC3484, obviamente ayuda a devolver múltiples IP como estrategia de conmutación por error.
BrianEss

sí, puedes hacerlo con el archivo hosts
warren
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.