1. SQUID Proxy Transparente en Ubuntu
En la configuración propuesta usaré el siguiente escenario:
Los programas a utilizar serán:
squid3 (Servidor Proxy)
iptables (Firewall de Linux, todos las distros nuevas con kernel 2.6.x lo traen)
dhcp3-server
Instalamos los paquetes:
sudo apt-get update && sudo apt-get install squid3 dhcp3-
server
Configuración de Squid
El archivo de configuración de Squid está en /etc/squid3/squid.conf
Abrimos el archivo con el editor de nuestra preferencia para modificar el parámetro
http_port y agregamos las demás acl
http_port 3128 transparent
acl la_red src 192.168.1.0/24
acl redlocal src 127.0.0.1/255.255.255.255
http_access allow redlocal
http_access allow la_red
2. No voy a hacer filtrado de páginas ni horarios de acceso para los usuarios porque no
es el objetivo del tutorial, para eso leer sobre Listas de Control de Acceso (Access
Control List, ACL) en el libro de Squid que les recomendé al inicio.
Nos puede interesar cambiar el tamaño del caché del proxy, para eso buscamos esta
linea:
cache_dir ufs /var/spool/squid3 700 16 256
El primer número representa el tamaño del caché en MB
Reiniciamos Squid
service squid3 restart
Con esto el proxy ya está funcionando, pero aún tenemos que configurar
manualmente en cada host los datos de conexión de red y el proxy.
Configuración de IPTables
Primero vaciar la config de IPTables (Si es necesario):
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
Para lograr hacer transparente el proxy tenemos que agregar unas cuantas reglas en
la configuración de IPTables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
3. iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -
j ACCEPT
iptables --table nat --append POSTROUTING --out-interface eth0 -
j MASQUERADE
iptables --append FORWARD --in-interface eth1 -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT
--to 192.168.1.1:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j
REDIRECT --to-port 3128
iptables -A INPUT -j LOG
iptables -A INPUT -j DROP
eth0 es la interfaz del proxy conectada a internet, eth1 es la interfaz del proxy
conectada a la LAN. 3128 es el puerto del proxy y 192.168.1.1 es la IP interna del
proxy. No voy a explicar cada linea, para eso pueden leer el libro de IPTables que
puse al comienzo o leereste post donde se detalla un poco que hace cada linea.
Con esto ya tenemos proxy transparente, pero aun tenemos que configurar
manualmente los datos de red en los host, aunque ya no sea necesario especificar el
proxy, nos falta configurar el servidor DHCP.
Configuración de dhcp3-server
Primero hay que especificar la interfaz donde dhcp3-server va a escuchar las
solicitudes.
Editamos el archivo /etc/default/dhcp3-serve, en la line:
INTERFACES="eth1"
4. Especificamos la interfaz de escucha, en nuestro caso la eth1.
Y configuramos los datos de la red en el archivo /etc/dhcp3/dhcpd.conf (Borrar las
configuraciones anteriores):
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option ip-forwarding off;
option domain-name-servers 208.67.222.222, 208.67.220.220;
range dynamic-bootp 192.168.1.50 192.168.1.250;
default-lease-time 21600;
max-lease-time 43200;
}
E iniciamos el servicio DHCP
service dhcp3-server restart