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
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>
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