
¿Existe la posibilidad de redirigir todo el tráfico a hosts específicos detrás de NAT?
Por ejemplo, tengo un servidor, un dominio "midominio.com" y 3 hosts detrás de NAT. Deseo configurar 3 subdominios:
host1.midominio.com
host2.midominio.com
host2.midominio.com
y cada uno de ellos para redirigir todos los puertos al host especificado en la red local.
Esa redirección debería proporcionar una funcionalidad como esta:
http://host1.midominio.com(se puede lograr usando apache)
ssh[correo electrónico protegido](???)
y otros protocolos en diferentes puertos
Gracias por cualquier ayuda.
Respuesta1
Esto se puede hacer para HTTP y HTTPS con un "proxy inverso" que examina la información del encabezado del host en una solicitud HTTP, obtiene el contenido apropiado y lo devuelve. ISA (Seguridad y Aceleración de Internet) de Microsoft puede hacer esto, al igual que Apache/squid en Linux.
Para todos los demás puertos, tendrá más dificultades, porque la mayor parte del tráfico no incluye el nombre de host deseado, solo una IP de destino (por ejemplo: "Quiero SSH a 1.2.3.4" en lugar de "Quiero SSH a host1.midominio". com)
Mapear puertos externos específicos a puertos internos es fácil (puerto 22 -> host1:22, puerto 23 a host2:22, puerto 24 -> host3:22, etc.) y, a veces, es todo lo que se necesita.
Si realmente necesita asignar todos los puertos a diferentes servidores internos, necesitará varias direcciones IP externas, que la mayoría de los ISP pueden proporcionar (al menos si tiene una conexión comercial).
Respuesta2
¿Apache mod_proxy?
Respuesta3
No, no es posible realizar el reenvío de puertos según el nombre DNS. El nombre de dominio no forma parte del paquete IP, por lo que su enrutador no puede utilizarlo para distinguir las conexiones entrantes.
Cuando un host remoto se conecta a host1.midominio.com, resolverá este nombre en una dirección IP, que se coloca en el paquete IP. Si host2.midominio.com se resuelve en la misma dirección IP, el paquete construido tendrá exactamente el mismo aspecto que para host1.midominio.com.
Por esa razón es posible cuando tienes varias direcciones IP configuradas en tu servidor.
Apache puede distinguir el nombre de dominio entrante, pero eso está en el nivel de la aplicación. En HTTP 1.1, un navegador enviará el nombre de dominio en los encabezados HTTP, en los que Apache puede filtrar utilizando hosts virtuales.