[CentOS-es] BIND9

Eduardo Grosclaude eduardo.grosclaude en gmail.com
Mie Mar 2 21:13:59 EST 2011


2011/3/2 Soporte <soporte en mki.cl>:
> Tengo un servidor  que entre muchas cosas hace de router/firewall, apache,
> php, BIND9, etc… y un par de paginas web corriendo, alrededor de 4 dominios,
> todo eso funcionando ok. El tema es que tengo 1 ip publica disponible y
> necesito ver desde internet un segundo servidor, el cual tiene otras
> aplicaciones sobre tomcat que no quiero mezclar con el servidor

La manera preferible -en mi opinión- para el caso en que tu segundo
servidor sólo necesite dar servicio de HTTP, es colocar un reverse
proxy HTTP en el gateway. Este reverse proxy recibe todos los pedidos
de HTTP dirigidos a la IP pública y los redirige a diferentes
servidores internos según el NOMBRE con el que accedes al servicio. Yo
lo hago con Apache de esta manera, pero puede haber otras soluciones
(lighttpd o nginx pueden ser más fáciles de configurar y son
definitivamente más livianos):

<VirtualHost TU_DIRECCION_IP_PUBLICA>
        ServerName TU_NOMBRE_DE_SERVIDOR_1
        TransferLog "/var/log/httpd/servidor1.log"
        ErrorLog "/var/log/httpd/servidor1.log"
        ProxyRequests off
        ProxyPreserveHost On
        Proxypass        / http://192.168.1.1/
        ProxyPassReverse / http://192.168.1.1/
</VirtualHost>
<VirtualHost TU_DIRECCION_IP_PUBLICA>
        ServerName TU_NOMBRE_DE_SERVIDOR_2
        TransferLog "/var/log/httpd/servidor2.log"
        ErrorLog "/var/log/httpd/servidor2.log"
        ProxyRequests off
        ProxyPreserveHost On
        Proxypass        / http://192.168.1.2/
        ProxyPassReverse / http://192.168.1.2/
</VirtualHost>

Como ves, la parte interesante es TU_NOMBRE_DE_SERVIDOR_X en los hosts
virtuales, lo que permite separar los servicios. Además es posible que
esta clase de trucos te permitan resolver balance de carga si lo
necesitas. La herramienta para lograr esto es únicamente la
configuración de Apache (u otro web server).

Una segunda manera es cuando en el gateway que tiene la dirección
pública estableces port forwarding hacia el segundo servidor. Tendrás
que dedicar un port diferente del default 80 para ese segundo servidor
(por ejemplo, el 81) y en ese caso tus clientes deberán dirigirse a
"http://TU_NOMBRE_DE_SERVIDOR:81". El nombre publicado por DNS puede
ser el mismo u otro, pero siempre quedarán mapeados a la única IP
pública disponible. La desventaja en este segundo caso es que debido
al NAT pierdes la referencia de quién es el host que hace el pedido, y
eso dificulta manejar estadísticas, debugging, seguridad, etc. La
herramienta para esta segunda forma es iptables.

Eventualmente puedes combinar ambas maneras si tienes necesidad de
acceder al servidor interno por SSH (u otro protocolo cualquiera).

> Actualmente hago nslookup a la dirección y me responde 192.168.1.2, la cual
> es una ip privada.
>
> ¿Hay alguna manera de solucionar esto con dns?

El rol que juega el DNS en esto es que debería servir los diferentes
nombres para los diferentes servicios, basados en los hosts virtuales.
Todos, mapeados a la misma dirección IP pública. No tiene sentido que
publiques una dirección privada por DNS salvo que únicamente pretendas
accederla por tu red local.

-- 
Eduardo Grosclaude
Universidad Nacional del Comahue
Neuquen, Argentina


Más información sobre la lista de distribución CentOS-es