Dar visibilidad a redlibre dentro de la red wifi
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

