Solicitudes de routing desde nombres de host externos a direcciones IP internas en Ubuntu

Quiero alojar varios sitios web con la misma dirección IP. Mi ISP me da una dirección IP estática, sin embargo tengo tres serveres web diferentes (todos los sitios diferentes) conectados detrás de un interruptor barato que todos son en última instancia detrás de esta dirección IP (uno es apache, y dos son las cajas de Windows, realmente no puede consolidarlos). Puedo hacer el reenvío del puerto con este interruptor basado en el puerto y la dirección IP entrante, pero no hostname. Esta no es una solución a largo ploop, ya que la única manera de diferenciar a qué server web estoy tratando de llegar es a través de puerto. Y eso es feo.

También tengo una caja del linux con dos tarjetas de networking que espero utilizar como un firewall / router más robusto. Mi pregunta es – ¿cuál es la mejor manera de convertir mi linux box (ejecutando Xubuntu) en un enrutador que será capaz de ruta basada en nombres de host y no sólo direcciones IP? Quiero dejar Xubuntu en la caja sin embargo, por lo que no dedicado router linux distros por favor.

Miré a Shorewall, pero no pude encontrar una manera de hacerlo para enrutar packages basados ​​en el nombre de host en lugar de la dirección IP. IPTables es el path a seguir? Si es así, ¿podría alguien señalarme un tutorial o algo sobre cómo hacer esto? I googled y me sorprendió que este no es un escenario más commong!

No es posible realizar la ruta en function del nombre de host. Todo el concepto de DNS es algo que existe en un nivel superior al tráfico de networking básico.

(Para más información, lea sobre el model OSI en general y el model TCP / IP en particular.)

Por otro lado, el protocolo HTTP sabe sobre nombres de host. Por lo tanto, debería ser capaz de configurar un proxy inverso en la dirección externa, reenviando las requestes a diferentes direcciones internas, en function del nombre de host entrante. Una opción es usar Apache y mod_proxy .