Como Instalar Servidor Proxy transparente con balanceo de carga (3 dsl)

Imagen de danielcie
0 puntos

Hola buenas tardes.

Soy nuevo en Linux y quiero instalar un servidor Ubuntu 10.04, lo quiero hacer es que mi servidor funcione como puerta de enlace a internet y controlar los sitios que visitan los usuario, tambien hacer un balanceo de carga con 3 servicios de internet, tengo 4 tarjetas de red, 3 para los servicios de internet y 1 para la red local (Funcionando como servidor DHCP).

Instalacion de servidor DHCP - listo
Configuracion de las tarjetas de RED - listo
Las 3 tarjetas con Internet configuradas como DHCP
La tarjeta de Red local 192.168.0.254
Instalacion de SQUID modo transparente - listo
Configurando los bloqueos necesarios

Y hasta aqui llego, como puedo hacer para compartir mi internet con la red local teniendo un balanceo de internet y que se apliquen las politicas de sQUID.

Tambien tengo dudas si SQUID puede tabarjar sin hacer cache en todas las paginas que se visiten.

Saludos.

Imagen de Firecold
+1
0
-1

Si se puede en Ubuntu todo lo que usted quiere, pero nesecito mas informacion:
1. su configuracion de interfaces
2. su configuracion de squid

teniendo eso le ire mostrando que es lo que procede para su configuracion espero ser de ayuda, Saludos

+1
0
-1
Imagen de Kuyo
+1
0
-1

Hola
¿por qué no pruebas Zentyal?

+1
0
-1
Imagen de danielcie
+1
0
-1

Si, ya hice pruebas con Zentyal, pero el equipo donde estoy montando se pone muy lento y la respuesta de las paginas desde la red es muy lenta tambien (Posible algo hice mal en la configuracion), es por eso que estoy intentando directamente en ubuntu server de forma manual.

+1
0
-1
Imagen de danielcie
+1
0
-1

eth0 - 192.168.0.1 (Internet 8mb "Teoricos")
eth1 - 192.168.1.1 (Internet 8mb "Teoricos")
eth2 - 192.168.2.1 (Internet 8mb "Teoricos")
eth3 - 192.168.3.254 (Red local)

SQUID:
**/etc/squid/squid.conf
http_port 3128 transparent
cache_mem 128 MB
maximum_object_size 300 MB
cache_dir ufs /var/spool/squid 100 16 256
acl redlocal src 192.168.3.0/24
http_access allow redlocal

Esta seria la configuracion..

Gracias..

+1
0
-1
Imagen de Gabriel_M
+1
0
-1

Tenemos 4 tarjetas ethernet: eth0, eth1, eth2, eth3

eth0 - 192.168.0.1 (Internet)
eth1 - 192.168.1.1 (Internet)
eth2 - 192.168.2.1 (Internet)
eth3 - 192.168.3.254 (Red local)

Creamos las tablas de enrutamiento para balanceo de carga.

sudo su
echo 200 adsl1 >> /etc/iproute2/rt_tables
echo 201 adsl2 >> /etc/iproute2/rt_tables
echo 202 adsl3 >> /etc/iproute2/rt_tables

Definimos el enrutamiento de los adsl:

sudo su
ip route add 192.168.0.0/24 dev eth0 src 192.168.0.1 table adsl1
ip route add default via 192.168.0.1 table adsl1
ip route add 192.168.1.0/24 dev eth1 src 192.168.1.1 table adsl2
ip route add default via 192.168.1.1 table adsl2
ip route add 192.168.2.0/24 dev eth2 src 192.168.2.1 table adsl3
ip route add default via 192.168.2.1 table adsl3

Ponemos las rutas principales:

sudo su
ip route add 192.168.0.0/24 dev eth0 src 192.168.0.1
ip route add 192.168.1.0/24 dev eth1 src 192.168.1.1
ip route add 192.168.2.0/24 dev eth2 src 192.168.2.1

Las mandamos desde

sudo su
ip rule add from 192.168.0.1 table adsl1
ip rule add from 192.168.1.1 table adsl2
ip rule add from 192.168.2.1 table adsl3

Balanceamos la carga.

sudo su
ip route add default scope global nexthop via 192.168.0.1 dev eth0 weight 1 nexthop via 192.168.1.1 dev eth1 weight 1  nexthop via 192.168.2.1 dev eth2 weight 1
+1
0
-1
Imagen de Firecold
+1
0
-1

Que mas, con esto se soluciono tu problema, Gracias Gabriel_M, por iluminarnos con tu sabiduria, solo un pequeño detalle si lo quisieramos poner en un script seria igual, Saludos

+1
0
-1
Imagen de danielcie
+1
0
-1

Hola, muchas gracias por la respuestas, todavia no.

Cuando intente ejecutar:
ip route add 192.168.0.0/24 dev eth0 src 192.168.0.1
ip route add 192.168.1.0/24 dev eth1 src 192.168.1.1
ip route add 192.168.2.0/24 dev eth2 src 192.168.2.1

me marco el siguiente error:
RTNETLINK answer: File exists

tambien, no logre que los clientes tuvieran acceso a internet.

Saludos.

+1
0
-1
Imagen de Gabriel_M
+1
0
-1

RTNETLINK answer: File exists
Aparece cuando se esta ingresando una banda ya ingresada.
Se debe borrar todo ,con el siguiente comando

sudo su
tc qdisc del dev eth0 root
tc qdisc del dev eth0 root
tc qdisc del dev eth0 root

Mi post es solo una guía para que busques y leas al respecto, no para hacerte el trabajo, es necesario que leas mucho sobre ip route, squid y tc

Aqui un resumen de lo necesario:

La puesta en marcha del enrutamiento consta de 3 pasos fundamentales.
        - Configuración de las interfaces.
        - Establecimiento de las rutas.
        - Activación del routing.


1- Configuración de las interfaces.

Borrar la configuración anterior de las interfaces de red.

sudo ip addr flush lo
sudo ip  link  set lo down
sudo ip  addr  flush eth0
sudo ip  link  set eth0 down
sudo ip  addr  flush eth1
sudo ip  link  set eth1 down
sudo ip  addr  flush eth2
sudo ip  link  set eth2 down

Configurarlas y levantarlas una por una:

Interfaz lo (Loopback)
sudo ip addr add 127.0.0.1/8 dev lo
sudo ip link set lo up

Interfaz eth0 (conexion LAN)
sudo ip addr add 10.15.8.102/16 dev eth0
sudo ip link set eth0 up

Interfaz eth1 (conexion ADSL 2 Mbps.)
sudo ip addr add 10.69.69.1/24 dev eth1
sudo ip link set eth1 up

Interfaz eth2 (conexion ADSL 512 Kbps.)
sudo ip addr add 10.69.70.1/24 dev eth2
sudo ip link set eth2 up

2- Establecer las rutas.

Borrar cualquier ruta existente en el equipo
sudo ip route flush default

Ajustar las rutas que deben ser estáticas

#Rutas estáticas.
sudo route add -host 127.0.0.1/32 dev lo
sudo route add -net 10.15.0.0/16 dev eth0
sudo route add -net 10.69.69.0/24 gw 10.69.69.1 dev eth1
sudo route add -net 10.69.70.0/24 gw 10.69.70.1 dev eth2

#Rutas a hosts especificos
sudo route add -host 10.16.1.1 gw 10.15.8.10 dev eth0
sudo route add -host 10.16.1.2 gw 10.15.8.10 dev eth0
sudo route add -host 10.129.255.193 gw 10.15.8.10 dev eth0

Indicar al kernel que los paquetes sin un destino concreto deben
 ser balanceados entre las líneas disponibles.

Se pueden poner en un script:
----------------------------------------------------------------------------------------
#!/bin/bash
#Rutas
echo "Ajustando rutas..."
IF0="eth0"
IF1="eth1"
IF2="eth2"
IP0="10.15.8.102"
IP1="10.69.69.1"
IP2="10.69.70.1"
P1="10.69.69.8"
P2="10.69.70.8"
P0_NET="10.15.0.0"
P1_NET="10.69.69.0"
P2_NET="10.69.70.0"
#Interfaz 0
ip route add $P0_NET dev $IF0
ip route add $P0_NET dev $IF0
ip route add $P0_NET dev $IF0 src $IP0
ip   route    add    $P1_NET      dev   $IF1 table T1
ip   route    add    default      via   $P1 table T1
ip   route    add    $P2_NET      dev   $IF2 table T2
ip   route    add    default      via   $P2 table T2
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2
#LA REGLA MAGICA QUE BALANCEA ENTRE LAS 2 LINEAS
ip route add default equalize scope global nexthop via $P2 dev
$IF2 weight 1 nexthop via $P1 dev $IF1 weight 2
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2
----------------------------------------------------------------------------------------

3- Activar el routing.
Activar el fordwarding para que esto pueda funcionar.

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

Habilitar definitivamente el forwarding en el kernel, ejecutando en consola:
sudo gedit /etc/sysctl.conf

Buscas las líneas que dicen:
# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

Y la dejas asi:
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

Guardar el archivo.

Aqui otra pequeña guia:

Se parte de la base de que se tienen tres interfaces de red
eth0, eth1, eth2, las que:
eth0 (192.168.0.x) -> red privada (192.168.0.0/24)
eth1 (10.10.10.2) -> adsl1 (10.10.10.1)
eth2 (10.10.11.2) -> adsl2 (10.10.11.1)
1- Crear dos nuevas tablas de enrutamiento internet1 e internet2

sudo echo 200 internet1 >> /etc/iproute2/rt_tables
sudo echo 201 internet2 >> /etc/iproute2/rt_tables

2- Definir los enrutamientos

Para internet1:
sudo ip route add 10.10.10.0/24 dev eth1 src 10.10.10.2 table internet1
sudo ip route add default via 10.10.10.1 table internet1

Esto le dice que la red 10.10.10.0 es la red de mi interfaz eth1 con la salida por el internet1.
Compruebalo mediante:
sudo ip route show table internet1

Para internet2:
sudo ip route add 10.10.11.0/24 dev eth2 src 10.10.11.2 table internet2
sudo ip route add default via 10.10.11.1 table internet2

Esto le dice que la red 10.10.11.0 es la red de mi interfaz eth2 con la salida por el internet2.
Compruebalo mediante:
sudo ip route show table internet2

3- Establecer las rutas principales:
sudo ip route add 10.10.10.0/24 dev eth1 src 10.10.10.2
sudo ip route add 10.10.11.0/24 dev eth2 src 10.10.11.2

Date cuenta que ahora no decimos en que tabla meterlo, por lo que se mete en la tabla principal. Lo anterior era para cuando el trafico ya esta en una de las dos subredes de salida y necesitamos saber como enrutarlo. En cambio las segundas son las primeras reglas para que funcione y las envie donde debe.

4- Aplicar las reglas
sudo ip rule add from 10.10.10.2 table internet1
su  ip rule add from 10.10.11.2 table internet2

5- Balancear de carga.
sudo ip route add default scope global nexthop via 10.10.10.2 dev eth1 weight 1 nexthop via 10.10.11.2 dev eth2 weight 2

Esto significa:
Usar eth1 una de cada 3 ocasiones, o usa eth2 dos de cada tres ocasiones.

Respecto de la pregunta de firecold, naturalmente una vez lograda la configuración adecuada y el correcto funcionamiento del sistema, se debe usar un script.

+1
0
-1
Imagen de juan22arg
+1
0
-1

Hola yo lo configure así.. pero la conexión se me cae y no vuelve a conectar. Como vos los hiciste es redundancia para fallos o tienen que estar las 3 conexiones activas?

+1
0
-1