martes, 2 de febrero de 2010

Compartir internet fácilmente: Firehol + Squid

Una de las tareas históricamente mas necesarias y aplicadas usando GNU/Linux fue, y lo sigue siendo el de compartir una conexión de internet entre varios equipos en una red local.

Lo siguiente aqui expuesto va a ser un ejemplo para poder lograr el objetivo de disponer de un proxy transparente utilizando un equipo con Debian GNU/Linux.
Este tutorial excluye la configuración IP de la red local, hay ya suficientes HowTo's ne internet que indican cómo preparar un DHCP server.

Primeramente instalar los paquetes necesarios:

~:# aptitude install firehol squid

Firehol es un wrapper para Netfilter, es exactamente lo mismo que IPtables con la ventaja de facilitar su aprendizaje e implementación al aplicar un firewall a un equipo con GNU/Linux.

Una vez instalado firehol, tendremos que editar /etc/default/firehol y dejarlo asi:

cmiranda@Lenny:~$ nano /etc/default/firehol
#To enable firehol at startup set this everything != NO
START_FIREHOL=YES
#If you want to have firehol wait for an iface to be up add it here
WAIT_FOR_IFACE="eth0"
FIREHOL_LOG_MODE="ULOG"

START_FIREHOL=YES (habilita el inicio del firewall)
WAIT_FOR_IFACE=eth0 (la interface pública o Wan)
FIREHOL_LOG_MODE=ULOG (desactiva los logs en pantalla)

La configuración de red del server es la siguiente:

Lenny:/var/log/squid# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 10.10.10.1
netmask 255.255.255.224
network 10.10.10.0
broadcast 10.10.10.31

Por supuesto se puede ajustar/cambiar la configuración según la necesidad. En el ejemplo, limité el subneting a 10.10.10.0/27 para disponer de solamente 30hosts en mi LAN.

Ahora lo mas importante, editamos /etc/firehol/firehol.conf y para compartir internet de forma simple, lo tendremos asi:

version 5

#configuracion proxy transparente
transparent_squid 3128 "root proxy" inface "eth1 src 10.10.10.0/27"

interface eth1 lan
policy accept
server all accept
client all accept

interface eth0 internet
protection strong
server http accept
server https accept
server ftp accept
server ssh accept
server icmp accept
client all accept

router lan2internet inface eth1 outface eth0
masquerade
route all accept
router internet2lan inface eth0 outface eth1
masquerade
route all accept

Como se puede ver, es sumamente simple la implementación de un firewall y compartir una conexión entre una lan, NO se explica las funcionalidades de Firehol, eso merece un post aparte para demostrar la versatibilidad al manipular netfilter.

Squid requiere buscar en /etc/squid/squid.conf la linea "http_port 3128" y agregarle un "transparent" al final de manera que quede así:

# Squid normally listens to port 3128
http_port 3128 transparent

Lo segundo a modificar en squid.conf es la ACL que permita a nuesta LAN acceder y utilizar el proxy, en mi caso como ejemplo utilizo:

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

# Example rule allowing access from your local networks. Adapt
# to list your (internal) IP networks from where browsing should
# be allowed
acl our_networks src 10.10.10.0/27
http_access allow our_networks
http_access allow localhost

# And finally deny all other access to this proxy
http_access deny all


Con estos simples pasos disponen de un gateway + proxy transparente en su red.


Robado de Carlitos Miranda
http://mstaaravin.blogspot.com/2008/08/compartir-internet-fcilmente-firehol.html

No hay comentarios: