Dar visibilidad a redlibre dentro de la red wifi

Enviado por SGaleano el Sáb, 15/12/2007 - 23:58

Uno de los problemas que nos encontramos cuando por ejemplo queremos dar visibilidad dentro de la propia red libre a una página que está fuera (normalmente Internet); como es el caso de redlibre o de tu comunidad si usas un hosting externo. De soluciones hay de todos los gustos; pero por tal de mantener la estructura de red rutada donde no existen gateways o proxys trasparentes; lo que haremos es usar una maquina con apache haciendo de proxy reverso; de manera que los nuevos usuarios que aún no se han configurado ninguna de las puertas a Internet de la red, pueda visualizar las webs como si estuvieran dentro de la red. Esquema de funcionamiento: Cliente wifi ------> supernodo ------> server rp con apache ------> Internet ------> web RedLibre.net De manera que para Cliente wifi, redlibre o las webs que definamos estará dentro de la red, porqué se la pedirá a el, y el la irá a buscar a Internet y se la mostrará al cliente. Atención! hay que tener mucho cuidado al activar el proxy de Apache, ya que si no se tiene en cuenta pueden utilizar apache como proxy para todo tipo de webs o servicios (spam, virus, etc.); para proxy mejor Squid :-) Que necesitamos:

  • Maquina con GNU/Linux (puede ser reciclada)
  • Servidor Web Apache
  • Servidor de nombres DNS Bind
  • Salida a Internet en el servidor donde pongamos el apache rp

Pasos: Instalamos Apache Web server Esto varia según el sabor de GNU/Linux que utilicemos, nosotros utilizaremos Debian GNU/Linux, pero nos serviría para por ejemplo Ubuntu.

apt-get install apache2

Activamos el mod_proxy del apache y lo configuramos Para esto apache en Debian incluye directorios con los módulos/configuración disponibles y los activos. Lo que debemos hacer es hacer un vínculo al directorio de módulos activos.

cd /etc/apache2/mods-enabled/

ln -s ../mods-available/proxy.load

ln -s ../mods-available/proxy.conf
Vale ahora ya está activo, toca configurarlo, para ello editamos el proxy.conf y verificamos la bloqueado:
vi proxy.conf

ProxyRequests Off

        <Proxy *>
                Order deny,allow
                Deny from all
                Allow from 10.32.0.0/13 172.16.0.0/16 10.136.0.0/13
        </Proxy>
Verificamos que el ProxyRecuest este en Off; esto es la recomendación de seguridad que he comentado mas arriba, así solo se podrá utilizar el proxy de Apache para los host definidos, de manera que si alguien intenta usar el apache de proxy para un host no definido, será rechazado. Otra cosa a verificar es, quien tiene acceso al proxy; esto es útil si el servidor apache además da servicio a por ejemplo Internet, de manera que solo desde la red wifi se pueda usar el proxy. Añadimos los host necesarios Ahora vamos a añadir los virtual host que serán las páginas a las que se tendrá acceso.
vi  /etc/apache2/sites-enabled/000-default 

<VirtualHost *>
  ServerName redlibre.net
  ServerAlias www.redlibre.net
  ProxyPass / http://redlibre.net/
  ErrorLog /var/log/apache2/redlibre_error.log
  CustomLog /var/log/apache2/redlibre_access.log combined
</VirtualHost>

<VirtualHost *>
  ServerName guifi.net
  ServerAlias www.guifi.net
  ProxyPass / http://guifi.net/
  ErrorLog /var/log/apache2/guifi_error.log
  CustomLog /var/log/apache2/guifi_access.log combined
</VirtualHost>

<VirtualHost *>
  ServerName maps.guifi.net
  ProxyPass / http://maps.guifi.net/
  ErrorLog /var/log/apache2/guifi_error.log
  CustomLog /var/log/apache2/guifi_access.log combined
</VirtualHost>

Como veis hemos añadido más de un host, para que estas webs puedan ser utilizadas en el apache reverse proxy. Apache ya está configurado, solo nos queda reiniciarlo o recargar.

/etc/init.d/apache2 restart

Añadir zona en el dns Esto es debido a que si no añadimos en el servidor dns de la red la entrada que haga referencia a la web y a nuestro servidor; el cliente intentará conectarse a la página con la IP de Internet. Para esto creamos una zona nueva:

vi /injail/named-bdnwl/etc/named/named.conf

        zone "redlibre.net" {
                type master;
                notify yes;
                allow-query { any; };
                allow-transfer { 10.35.228.225; 10.35.229.3; 10.139.16.226; };
                also-notify { 10.35.228.225; 10.35.229.3; 10.139.16.226; };
                file "/var/named/db.redlibre.net_int";
                allow-update { 127.0.0.1; };
        };

vi /injail/named-bdnwl/var/named/db.redlibre.net_int

$TTL 86400
@       IN      SOA     ns1.redlibre.net. hostmaster.redlibre.net. (
                        2007102700 ; serial
                        7200 ; refresh
                        1800 ; retry
                        1209600 ; expire
                        38400 ; ttl
                        )

@               IN      NS      ns1.redlibre.net.
@               IN      NS      ns2.redlibre.net.
@               IN      NS      ns3.redlibre.net.
@               IN      NS      ns4.redlibre.net.
@               IN      MX      10 mail.redlibre.net.

ns1             IN      A       10.35.228.35
ns2             IN      A       10.35.228.225
ns3             IN      A       10.35.229.3
ns4             IN      A       10.139.16.226

www             IN      A       10.35.228.36
@               IN      A       10.35.228.36
mail            IN      A       80.24.16.164

Ya solo nos queda reiniciar el servicio de nombres dns

/etc/init.d/bind9 restart
Ya lo tenemos :-)