Sie sind auf Seite 1von 6

Dado que en los foros de Redes-Linux, varias veces se ha preguntado como se llevaba a cabo esta operacin con Linux,

he desarrollado este pequeo documento, en el que explico como podemos realizar esta operacin. Varias formas de hacerlo Para compartir nuestra conexin a internet, podemos hacerlo de dos formas bien distintas: 1) Mediante el uso de un proxy-web como squid. 2) Mediante el uso de iptables (ipchains/ipfw). Cada una de estas, tiene sus pros y sus contras y es el usuario el que debera valorarlas. La primera de ellas, ser una forma muy conocida por la gente que proviene de windows, ya que es muy utilizada por estos usuarios (se nota que han probado la aplicacin propia que lleva windows "compartir conexin a internet"...) y tiene la ventaja que si se hace uso de un proxy-cach como squid, podemos ahorrar ancho de banda en nuestra red local. Por qu?, pues porque squid, abrir un puerto por donde escuchar las peticiones web de nuestros clientes de la LAN y ser l, el que haga la "peticin en s", guardndose una copia, de manera que si otro cliente desea visitar la misma web, es el proxy el que se la sirve. Para que se observe de forma ms ilustrativa vemoslo en una imagen:

De esta forma, ahorraremos ancho de banda, el cual es un "don muy preciado".

La gran pega que tiene hacerlo de esta manera, es que Squid solo es compatible con HTTP, FTP, HTTPS, GOPHER y WAIS, por lo que si queremos compartir enteramente la conexin, esta solucin no nos valdr (a no ser que utilicemos otro proxy compatible que escuche por otro puerto, para esos menesteres). Es decir, por ejemplo, si lo que queremos es que toda nuestra red local pueda consultar correo externo, no podremos hacerlo con Squid. La segunda forma es mi preferida, pues iptables da mucho ms juego que un proxy squid, ya que con este, adems de poder compartir la conexin a internet, podremos poner en marcha un firewall para nuestra red local, adems de poder gestionar todo el filtrado de paquetes hacia las maquinas de nuestra LAN. De esta forma, s podremos hacer uso de cualquier tipo de protocolo en todos los clientes de nuestra red local (si hemos puesto en marcha un firewall con iptables, debemos de tener en cuenta las restricciones que hayamos puesto). Compartir la conexin con un proxy Squid 1.1.- Instalacin del proxy Squid (si no lo tenemos ya instalado) Segun que distribucin de Linux sea la nuestra, podremos instalar Squid de una forma o de otra:

En el caso de Debian o de cualquier distribucin que lleve instalado el programa apt-get, podremos instalarlo con un simple:
apt-get install squid

En el caso de Fedora, podemos instalar el proxy de esta forma:


yum install squid

En el caso de las demas distribuciones basadas en paquetes rpm, que no tengan instalado el programa apt-get, tendremos que o bien utilizar cualquier programa que nos incluya la propia distribucin (YAST2 en SuSE, ...) o bien instalarlo mediante el gestor de paquetes "rpm" a mano. Para ello, previamente tendremos que conseguir todos los paquetes necesarios para su instalacin, para lo cual, nos podemos dirigir a webs como http://rpmfind.net, o a nuestros cd's oficiales de nuestra distribucin. Una vez tengamos todos los paquetes necesarios, podremos instalarlos con el comando (atencin con las dependencias):
rpm -ihv paquete.rpm

Si no queremos instalar paquetes binarios de nuestra distribucin, podemos optar por instalar desde cdigo fuente, para lo cual, nos dirigiremos a la web de Squid y nos bajamos el "tar.gz" de la ltima versin estable. Una vez lo tengamos en nuestro ordenador, instalaremos el squid de esta forma:
tar xvfz squid-version.tar.gz cd squid-version ./configure --prefix=/usr/local/squid make make install

1.2.- Puesta en marcha de Squid Una vez lo tenemos instalado, podremos poner en marcha el proxy de esta forma:

/etc/init.d/squid start /etc/rc.d/init.d/squid start (esto para algunas distribuciones basadas en rpm)

Si hemos instalado desde fuentes, es posible que no tengamos este script de arranque, debiendo de arrancarlo con el comando:
/usr/local/squid/sbin/squid

Si este es nuestro caso y queremos que nos arranque en el inicio del sistema, podemos hacer nosotros un script en "/etc/init.d" llamado "squid", que contenga esto:
/usr/local/squid/sbin/squid &

y lo ponemos en el arranque de nuestro sistema de esta manera:


ln ln ln ln -s -s -s -s /etc/init.d/squid /etc/init.d/squid /etc/init.d/squid /etc/init.d/squid /etc/rc2.d/S99squid /etc/rc3.d/S99squid /etc/rc4.d/S99squid /etc/rc5.d/S99squid

1.3.- Configurar Squid para compartir la conexin Para configurar squid, basta configurar el fichero "squid.conf" que segn si hemos instalado desde paquetes binarios o desde fuentes lo encontraremos en un lugar u otro. En el caso de paquetes binarios, lo podremos encontrar en "/etc" (paquetes .deb de debian), "/etc/squid (paquetes .rpm), mientras que si hemos instalado desde fuentes estar en "/usr/local/squid/etc" (el --prefix que le indicamos al hacer el ./configure). En dicho fichero, deberemos prestar atencin a varias directivas que nos sern necesarias para compartir la conexin a internet, las cuales vamos a ver resumidas ahora (presuponemos que nuestra red local es del tipo 192.168.1.0/255.255.255.0):
http_port 3128 (este es el puerto por el que queremos que escuche nuestro proxy) cache_mem 8 (tamao mximo que pueden alcanzar los objetos cacheados, sera recomendable ponerlo a 16 MB si poseemos varios clientes). cache_dir ufs /var/spool/squid 100 16 256 (es el directorio donde se almacenar la cach y como se estructurar ste. No lo tocaremos) acl all src 0.0.0.0/0.0.0.0 (creamos una lista de acceso con todas las redes) acl localhost src 127.0.0.1/255.255.255.255 (creamos una lista de acceso con la propia maquina) acl mired src 192.168.1.0/255.255.255.0 (creamos una lista de acceso con mi red) http_access allow localhost (permitimos el acceso a la propia maquina) http_access allow mired (permitimos el acceso a nuestra red local) http_access deny all (denegamos el acceso al resto de la red) httpd_accel_host virtual httpd_accel_port 0 (habilitamos cache acelerada para cualquier puerto) http_accel_with_proxy on

Y todas las dems opciones las dejamos como vienen por defecto (No es objeto de este articulo, explicar enteramente el funcionamiento de squid, sino solo la tarea de compartir la conexin a internet) Solo recordaremos que si tuviramos ms redes, deberamos definir una acl nueva con esa otra red (acl nombre_de_red src direccin_de_red/mascara) y permitir el acceso justo antes de denegar al resto de las redes, pues la aplicacin de las reglas van siguiendo un orden y si se cumple una de estas reglas, ya no se aplicara la siguiente. Es decir, si hubisemos puesto primero el "httpd_access deny all", nuestra red local entra dentro de esta aplicacin (all haca referencia a todas las redes) y ya no mirara el "httpd_access allow mired" y por tanto, no tendra acceso a nuestro proxy. Tal como esta puesto en el ejemplo, nuestra red cumplira la aplicacin "httpd_access allow mired" y ya no se fijara en el "httpd_access deny all", afectando como deca anteriormente, solo al resto de las redes. Tambin recordar que ante cualquier cambio en el fichero de configuracin de squid, deberemos reiniciar este servicio:
/etc/init.d/squid stop /etc/init.d/squid start /etc/rc.d/init.d/squid stop (esto para algunas distribuciones basadas en rpm)

/etc/rc.d/init.d/squid start

1.4.- Configuracin de los clientes En los clientes, solo comentar que en cada una de las aplicaciones que utilicemos de cara a internet (los proxies son tambin conocidos como firewall de aplicacin), habr que configurar como proxy el que acabamos de configurar. Por ejemplo, en el Internet Explorer, nos tendremos que ir a:
Herramientas - Opciones de internet - Conexiones - Configuracin Lan Aqu, marcamos la casilla de "Usar servidor proxy", poniendo como direccin, la ip de nuestro proxy y como puerto el 3128 (que es el que le hemos indicado a squid).

En el mozilla sera:

Edicin - Preferencias - Avanzadas - Proxies Aqu, marcamos la casilla de "Configuracin manual del proxy" y en la casilla "Proxy HTTP" ponemos la direccin IP y como puerto el 3128 (que es el que le hemos indicado a squid),

Y hasta aqu la parte de la explicacin de los clientes, ya que no es objetivo de este articulo, el desarrollo de esta parte, ya que deberais saber como se hace. 2.- Compartir la conexin con Iptables Iptables funciona de forma parecida a las reglas de acceso del proxy squid, es decir, ser un conjunto de reglas puestas en orden y si cumplimos una que restringe a la siguiente, no cumpliremos esta ltima. Es decir, imaginemos que en una primera regla impedimos el acceso de una direccin ip a nuestra web o mejor dicho al puerto 80 de nuestra maquina, si en una regla posterior aceptamos de todo el mundo los paquetes (o para que lo entendamos todos, conexiones), a este mismo puerto 80, la direccin ip que antes habamos restringido, seguir sin poder ver nuestra web, pues la primera regla ha restringido a la segunda, convirtindose esta ltima en: "aceptamos el acceso de todos menos de esa ip". Pero bueno, como no es objetivo de este articulo, explicar como se pone en marcha un firewall, sino compartir la conexin a internet o dicho de mejor forma, "Hacer NAT de nuestra red local", vamos a ver sin ms dilacin como vamos a llevar a cabo esta faena. 2.1.- Qu es hacer NAT/MASQUERADE de una red? Explicado de manera rpida, hacer NAT/MASQUERADE de una red, es simplemente enmascarar las ip's de dicha red con otra diferente, es decir, imaginemos una maquina cuya ip es 192.168.1.1 que sirve de pasarela de otra maquina cuya ip es 192.168.1.2. Hacer NAT de esta ltima maquina, significa que de cara al exterior las conexiones las estar haciendo 192.168.1.1, aunque sea 192.168.1.2, la que est accediendo al exterior. Pero al igual que antes, para comprenderlo mejor, veamos un grfico:

2.2.- Sencillo ejemplo de NAT/MASQUERADE con iptables Una vez sabemos qu es hacer NAT/MASQUERADE, vamos a ver como hacerlo de nuestra red local, para poder compartir la conexin a internet. La forma de utilizar iptables, es ir escribiendo regla por regla, recordando la misma limitacin del orden de las reglas que tenamos en el proxy. La pega de esto, es que estas reglas se guardan en memoria, perdindose cuando apagamos el ordenador. Para evitarlo, existe un script llamado iptables-save que hace una copia de seguridad de la tabla de reglas de iptables. Adems de esto, lo que podemos hacer es escribir en orden las reglas en un script, el cual podemos ejecutar en el inicio del sistema (esta es la forma que veremos aqu). Para ello, editamos un fichero de texto, por ejemplo, "/etc/init.d/firewall", donde pondremos esto (contando que tu red local es del tipo 192.168.1.0 y sales a Internet a traves de la interfaz eth0. Si te conectas con modem de 56K cambia esta interfaz por ppp0):
modprobe iptable_nat iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward

Una vez lo tenemos, le damos permisos de ejecucin:


chmod +x /etc/init.d/firewall

Y lo ponemos en el arranque del sistema: ln -s /etc/init.d/firewall /etc/rc2.d/S99firewall ln -s /etc/init.d/firewall /etc/rc3.d/S99firewall ln -s /etc/init.d/firewall /etc/rc4.d/S99firewall ln -s /etc/init.d/firewall /etc/rc5.d/S99firewall 2.3.- Configuracin de los clientes

En los clientes de nuestra red local, lo nico que tendremos que hacer es poner como puerta de enlace predeterminada (o gateway), la ip de la maquina que acabamos de configurar. Conclusin Con estos dos mtodos que hemos visto, podramos compartir la conexin a internet fcilmente con las dems maquinas de nuestra red local, pero jugando un poco ms con ellos, podremos hacer cosas mucho ms sofisticadas, como un firewall para proteger nuestra red local, un proxy transparente, para que no puedan saltrselo los usuarios, proxy autentificado mediante samba, ldap, etc, etc..

Das könnte Ihnen auch gefallen