Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/02/2011, 04:06
moeb
 
Fecha de Ingreso: febrero-2011
Mensajes: 581
Antigüedad: 13 años, 10 meses
Puntos: 81
Respuesta: Squid y router

Básicamente... Partimos de esta situación (las IPs son de ejemplo, obviamente deberás poner las tuyas):

Tu router es tu gateway actual (puerta de enlace) y tiene la IP 192.168.1.1 con mascara 255.255.255.0

Tu Ubuntu está en esa red y tiene una sola tarjeta de red con IP 192.168.1.25 con máscara 255.255.255.0

Necesitas dos tarjetas de red en la máquina con Ubuntu. Configura el router para que su IP interna esté en otro segmento de red (pertenezca a otra subred)... Configura ambas IPs en las dos tarjetas en el Ubuntu. La "interna" con la IP que tenía el router antes (gateway), la segunda en el mismo segmento de red en que pongas el router ahora... Por ejemplo:


a) Poner la IP del router como 192.168.2.1 con máscara 255.255.255.0 (FUERA de tu segmento de red actual).

b) Poner la tarjeta de red externa (p.ej. eth1) con una IP en la subred del router... por ejemplo 192.168.2.2 con máscara 255.255.255.0

c) Poner la tarjeta de red "interna" (p.ej. eth0) con la IP que tenía antes el router: 192.168.1.1 con máscara 255.255.255.0

Ahora, conectas la LAN del router (que actualmente irá a un switch, supongo) directamente a la tarjeta de red "externa" (eth1).

Conecta la tarjeta de red "interna" (eth0) al switch general de tu red... Tendrás el router separado físicamente de tu red a través de la máquina proxy.

Deberás aádir ahora algunas líneas a tu fichero de configuración de iptables (mantén las que tienes para el transparent proxy y añáde las siguientes a continuación. Por supuesto siempre siguiendo el ejemplo aquí expuesto. Tus interfaces podrían ser otras en lugar de las habituales, o podrías decidir usar eth1 para la red interna y eth0 para la externa... para gustos. Siguiendo con el ejemplo sería algo así)...

En primer lugar activa el forwarding entre interfaces o tarjetas (Esto puedes hacerlo en linea de comandos, pero si lo metes en el fichero iptables te asegurarás de que cada vez que lo ejecutes el forwarding esté activo):

echo 1 > /proc/sys/net/ipv4/ip_forward

##Incluye las reglas para hacer NAT masquerading en el Ubuntu y habilitar el forward de todo lo que entre por la interfaz interna para salir a Internet:

##(hacemos masquerading para lo que salga por eth1, nuestra interfaz externa).
iptables --table nat --append POSTROUTING --out-interface eth1 -j MASQUERADE

## Permitimos forward entre interfaces para todo lo que entre por eth0, interfaz interna.
iptables --append FORWARD --in-interface eth0 -j ACCEPT

Esto en su versión más simple... Podrías colocar reglas para habilitar el forward SOLAMENTE hacia los puertos que quisieses permitir la salida, y sólamente desde las IPs internas que quisieses (casos particulares)...

Pero eso ya entra dentro del terrreno de configuración de iptables, y puedes estudiar tu caso con detenimiento.

En principio, y salvo error u omisión por mi parte, con esta configuración no tendrías que tocar nada en los PCs clientes (la IP de gateway sería la misma) y debería funcionarte el proxy transparante (que está escuchando en el puerto correspondiente del Ubuntu con las redirecciones BIEN puestas en el iptables).

--- EDIT ---
Por cierto... Olvidaba poner algo OBVIO: En el UBUNTU TIENES que poner como puerta de enlace (default gateway) la IP NUEVA del router (192.168.2.1, en el ejemplo), al contrario que en el resto de PCs de tu red (en que tendrás la 192.168.1.1)... Obviamente, si no lo haces así, tu Ubuntu no podría salir a Internet y no podría rutar paquetes al exterior ni el squid podría pedir páginas a Internet.

Última edición por moeb; 18/02/2011 a las 04:40