InicioHazlo Tu MismoFail Over y Balanceo de Carga en Linux Debian y Pfsense 2.0

Fail Over y Balanceo de Carga en Linux Debian y Pfsense 2.0

Hazlo Tu Mismo11/29/2012
Pueden visitar el siguiente enlace donde se aprecian mejor las imagenes y el contenido! incluso pueden descargarlo cualquier duda estamos a la orden

https://docs.google.com/file/d/0B-a4Fs4oAwJ9cE5TdWlrS0NiUWc/edit?pli=1


      UNIVERSIDAD DE EL SALVADOR
FACULTAD MULTIDICIPLINARIA DE OCCIDENTE

NUEVO ISP

BALANCEO DE CARGA Y CONTRO DEL FAIL OVER

CATEDRA: COMUNICACIONES I

CATEDRATICO: INGENIERO JUAN CARLOS PEÑA

ALUMNOS:

· HERBER OSWALDO GOMES ARANA

· ISIDRO ANTONIO FLORES MARTINEZ

· PABLO OSWALDO PORTILLO ALVARADO

PLANTEAMIENTO DEL PROBLEMA.

Una gran empresa está aburrida de perder tiempo de negocios por los fallos de su ISP y decide
contratar un segundo proveedor que le permita acceso a los clientes a sus servicios. Ahora la
empresa cuenta con dos proveedores de internet distintos, conectándose por medios
redundantes a cada proveedor, pero no encuentra cómo configurar sus dispositivos de red para
que de forma automática y transparente alterne los proveedores cuando uno u otro
falle permitiendo seguir accediendo a sus servicios. En vista de lo anterior les contrata a ustedes
como consultores para que realicen las configuraciones pertinentes.

CONCEPTOS INTRODUCTORIOS

Antes de dar solución a un problema es necesario saber de qué se trata y que es necesario
conocer para resolverlo. Primeramente definimos que es un firewall.

¿QUE ES UN FIREWALL?

Un firewall también es conocido como muro de fuego, este funciona entre las redes conectadas
permitiendo o denegando las comunicaciones entre dichas redes. Un firewall también es
considerado un filtro que controla el tráfico de varios protocolos como TCP/UDP/ICMP que
pasan por el para permitir o denegar algún servicio, el firewall examina la petición y
dependiendo de este lo puede bloquear o permitirle el acceso.

Un firewall puede ser un dispositivo de tipo Hardware o software que se instala entre la conexión
a Internet y las redes conectadas en el lugar.

La Figura 1 ilustra un esquema común de firewall.

Sea el tipo de firewall que sea, generalmente no tendrá más que un conjunto de reglas en las que
se examina el origen y destino de los paquetes del protocolo tcp/ip. En cuanto a protocolos es
probable que sean capaces de filtrar muchos tipos de ellos, no solo los tcp, también los udp, los
icmp, los gre y otros protocolos vinculados a vpns. Este podría ser (en pseudo−lenguaje) un el
conjunto de reglas de un firewall del primer gráfico:

Política por defecto ACEPTAR.

Todo lo que venga de la red local al firewall ACEPTAR

Todo lo que venga de la ip de mi casa al puerto tcp 22 ACEPTAR

Todo lo que venga del exterior al puerto tcp 1 al 1024 DENEGAR

Todo lo que venga del exterior al puerto tcp 3389 DENEGAR

Todo lo que venga del exterior al puerto udp 1 al 1024 DENEGAR

Hay dos maneras de implementar un firewall:

1. Política por defecto ACEPTAR: en principio todo lo que entra y sale por el firewall se
   acepta y solo se denegará lo que se diga explícitamente.

2. Política por defecto DENEGAR: todo esta denegado, y solo se permitirá pasar por el
   firewall aquellos que se permita explícitamente.

Un firewall ampliamente usado en distribuciones GNU/Linux es iptables en ipv4 e ip6tables en
ipv6.

IPTABLES

Iptables permite al administrador del sistema definir reglas acerca de qué hacer con los paquetes
de red. Las reglas se agrupan en cadenas: cada cadena es una lista ordenada de reglas. Las
cadenas se agrupan en tablas: cada tabla está asociada con un tipo diferente de procesamiento de
paquetes.

Cada regla especifica que paquetes la cumplen (match) y un destino que indica que hacer con el
paquete si este cumple la regla. Cada paquete de red que llega a una computadora o que se envía
desde una computadora recorre por lo menos una cadena y cada regla de esa cadena se
comprueba con el paquete. Si la regla cumple con el datagrama, el recorrido se detiene y el
destino de la regla dicta lo que se debe hacer con el paquete. Si el paquete alcanza el n de una
cadena predefinida sin haberse correspondido con ninguna regla de la cadena, la política de
destino de la cadena dicta que hacer con el paquete. Si el paquete alcanza el fin de una cadena
definida por el usuario sin haber cumplido ninguna regla de la cadena o si la cadena definida por
el usuario está vacía, el recorrido continúa en la cadena que hizo la llamada (lo que se denomina
implicit target RETURN o RETORNO de destino implícito). Solo las cadenas predefinidas tienen
políticas. En iptables, las reglas se agrupan en cadenas. Una cadena es un conjunto de reglas para
paquetes IP, que determinan lo que se debe hacer con ellos.

BALANCEO DE CARGA

La Solución de balanceo de carga permite dividir las tareas que tendría que soportar una única
máquina, con el fin de maximizar las capacidades de proceso de datos, así como de ejecución de
tareas. Esta Solución permite que ningún equipo sea parte vital del servicio que queremos
ofrecer. De esta forma evitamos evitamos sufrir una parada del servicio debido a una parada de
una de las maquinas.
El balanceo de carga nos permite tener mayor ancho de banda; eso no significa que se tenga
mayor velocidad de carga o descarga, si no que como se mencionó anteriormente, el trabajo se
divide entre los IPS conectados, es decir que si se tienen 2 isps (como nuestro caso) el tráfico se
distribuirá entre los 2 ISPś.

NAT

Usada cuando se desea hacer los paquetes sean enrutados a una máquina cliente dentro de una
red local, pero también podremos enmascarar un red local y tener salida hacia internet.

Una vez abordados los conceptos abordados previamente pasamos a dar solución a nuestra
problemática.

PRIMERA SOLUCION PLANTEADA

Utilizando equipos con Sistema Operativo Linux Debian implementamos algunas herramientas
que vienen compiladas en el kernel de Linux tales como Tablas de Ruteo , configuraciones de
firewall NAT (ip tables) , Ruteo basado en políticas (ip rules), el demonio CRON y el comando “ip”
para agregar rutas y modificarlas.

La solución consiste básicamente en contar con un ISP principal y otro ISP de respaldo
controlando el fail over (la caída) del ISP principal y reemplazarlo por ISP de respaldo, evitando
así que la LAN interna se quede sin servicio de internet, todo esto de manera trasparente.

Simulamos los Routers de ambos ISPś con 2 PC´s con sistema operativo Linux Mint utilizando una
red cableada y otra red inalámbrica como salidas a internet, y un router de frontera que cuenta
con SO Debian squeeze 6.0 para aplicar las configuraciones pertinentes.

Diagrama de Red propuesto:

Plan de direcciones

·

·

·

La LAN interna cuenta con este pool de direcciones 172.16.0.0/24, y cabe resaltar que el
Router de frontera funciona como servidor DHCP ipv4.

En el segmento entre el router de frontera y el ISP y RED CABLEADA tenemos la subred:
172.16.1.0/24.

En el segmento entre el router de frontera y el isp RED INALAMBRICA tenemos la subred:
172.16.2.0/24.

PROCEDIMIENTO.

Las configuraciones se realizan en el router de frontera, dejamos a su criterio definir en que
router implementara NAT, para nuestro caso lo colocamos en el router frontera.

Básicamente modificamos los siguientes archivos en los cuales definimos las configuraciones
pertinentes:

1. Configuración de interfaces de red.

Para asignar direcciones ip a las interfaces de red de nuestra pc lo podemos hacer de 2 formas.

I.

Se pueden asignar direcciones a una interfaz escribiendo en la terminal lo siguiente.

ifconfig ethn dirección_ip/marcada_subred up

Donde n es el número de la interfaz que está conectada a nuestra pc, por ejemplo
considere que se quiere asignar la dirección 172.16.1.1 que tiene una máscara de subred
de 24 en la interfaz eth0, la manera de escribirlo sería ifconfig eth0 172.16.1.1/24 up;
con esto se asigna la dirección a la interfaz, pero esta persiste solo mientras está
encendida la pc, una vez se reinicia o se apaga, al configuración se pierde.

II.

Escribir en la terminal nano /etc/network/interfaces y se abrirá un archivo en la que
configuraremos las interfaces a nuestro gusto. Utilizando la dirección e interfaz antes
mencionada el archivo se tendría que configurar de la siguiente manera.

auto eth0

iface eth0 inet static

address 172.16.1.1

netmask 255.255.255.0

Una vez hecho esto damos ctrl+o para guardar y luego ctrl+x para salir. Ahora bien, ya
tenemos asignada la dirección 172.16.1.1/24 a nuestra interfaz eth0 con lo que si la pc se
apaga o se reinicia, la configuración no se pierde. Si quisiéramos recibir una dirección por
DHCP simplemente escribimos iface eth0 inet dhcp, sin dirección ni mascara de subred.

Para nuestro proyecto la forma en que quedarían configuradas las interfaces seria de la
siguiente forma.

#etho sale para tigo

auto eth0

iface eth0 inet static

address 172.16.1.1

netmask 255.255.255.0

#Claro

auto eth1

iface eth1 inet static

address 172.16.2.1

netmask 255.255.255.0

#LAN

auto eth2

iface eth2 inet static

address 172.16.0.1

netmask 255.255.255.0

2. Computadora como router.

Para que nuestra computadora trabaje como router utilizando los sistemas operativos
GNU/Linux es necesario modificar algunos archivos. Hay 2 formas de hacerlo.

I.

Escribir en la terminal “nano /proc/sys/net/ipv4/conf/all/forwarding” y se abrirá un
archivo, por defecto este tiene valor de 0, lo editamos y lo cambiamos por el valor de 1,
presionamos las teclas ctrl+o para guardar y luego ctrl+x para salir; con esto nuestra pc
se convierte en Router mientras está encendida. Una vez se reinicia la PC o se apaga, esta
configuración se pierde.

Escribir en la terminal “nano /etc/sysctl.conf” y se abre un archivo, descomentamos lo
siguiente para que nuestra computadora sea router y que no se pierda la configuración
aunque la pc se reinicie o se apague.

net.ipv4.ip_forward=1

3. Creación de tablas

Ejecutamos en consola sudo nano /etc/iproute2/rt_tables en el cual se definen las tablas de
ruteo del núcleo, por defecto este archivo cuenta con 3 tablas de ruteo, la main donde guarda las
rutas por defecto, una para rutas broadcast y otra para multicast, aquí en este archivo
definiremos 2 nuevas tablas de ruteo, una por cada ISPś.

Las definimos como tabla tigo y tabla claro.

La siguiente figura muestra la manera en la que quedaría el archivo de configuración rt_tables.

II.

4. Regla NAT

Editamos en consola /etc/rc.local.

Este archivo se ejecuta en el arranque de Linux, los comandos colocados aquí se ejecutaran una
vez al inicio del SO, nosotros lo utilizamos para definir las reglas de NAT con las cuales
enmascararemos el tráfico de nuestra LAN con las ip's de los segmentos que se tienen con los
ISPś.

NAT básicamente reemplaza la ip de origen de cada paquete por la ip que nosotros definamos que
puede ser una ip estática o una dinámica. La regla del NAT es como sigue.

Iptables –t nat –A POSTROUTING –s dirección_origen_a convertir/marcara_subred
interfaz_de_salida –j MASQUERADE

Para nuestros propósitos escribimos la siguiente línea para salir a internet.

Iptables –t nat –A POSTROUTING –s 172.16.2.0/24 –o eth0 –j MASQUERADE

MASQUERADE automáticamente convierte nuestra IP de la red local a IP pública.

El archivo queda como se muestra a continuación.

–o

5. Configuración de reglas de navegación

Configuramos las reglas de encaminamiento. Estas son las que escogen qué tabla de rutas se usa.
Las ip rules nos permiten enrutar paquetes en base a su dirección de origen y destino, lo cual
difiere de la forma tradicional de enrutado que solo toma en cuenta la dirección de destino.

Una estructura de una regla seria como sigue.

ip rule add from direccion_origen/mascara_subred priority prioridad_regla table
nombre_tabla.

Ejemplo.

ip rule add from 172.16.0.0/24 priority 100 table tigo

Las reglas de navegación han sido agregadas en el archivo /etc/network/interfaces. La
siguiente se muestra a continuación; esta ira después de la configuración de las interfaces.
Primeramente se definen las rutas y las reglas para la tabla tigo, posteriormente se definen las de
la tabla claro.

6. Fail-Over

Hasta aquí ya tenemos conectividad con internet utilizando el isp principal.

El problema que aún no hemos resuelto tiene que ver con la caída ya sea del enlace con el isp
principal o en su defecto la caída de la conectividad con internet, para explicarlo mejor podemos
definir 2 casos que pueden darse:

·

·

Problemas de conectividad en el enlace con el isp principal (problemas de cableado,
problemas con las interfaces, problemas con el router del isp).

Problemas de conectividad con internet (Puede darse el caso de que el enlace con el isp
funcione bien pero no se tenga conexión con internet).

Para resolver ambos problemas al mismo tiempo creamos un script que ejecuta comandos del
Shell que detecta a través del uso de “ping” el fail-over (caida) ya sea del enlace con los ISPś o la
conectividad con internet.

El script reemplaza las ip rules que conducen el tráfico que viene de la LAN a salir por el
ISPś principal por las ip rules que conducen el tráfico hacia el ISPś de respaldo, solo en
caso de que alguna de las condiciones antes presentadas se den.

El script queda como se detalla a continuación.

7. Script para supervicion de enlaces.

El script /etc/crontab como tal resuelve nuestro problema de fail-over pero para hacerlo de
manera transparente definimos en el archivo crontab que el script conectividad2.sh se ejecute
cada 5 segundos, con este tiempo de retraso logramos detectar las caídas de los enlaces de forma
casi instantánea.

A continuación se muestra la forma en que queda configurado el script. Este script está definido
para que se actualice cada 5 segundos, y que este supervisando los enlaces, de modo que si uno
falla, automáticamente se pasa el tráfico para el otro enlace, siendo transparente para el usuario.

Con los 7 pasos anteriormente descritos tenemos resolvemos al problema planteado, y nos
aseguramos de estar conectados si uno u otro enlace falla.



SEGUNDA SOLUCION

Para nuestro propósito utilizaremos equipos con sistema operativo GNU/Linux y una
distribución de FreeBSD llamada pfSense 2.0.

Utilizamos pfSense para realizar Balanceo de Carga, NAT , reglas de firewall para bloquear
algunas páginas web o determinados protocolos, DNS interno, proxy para filtrado de contenido,
entre otras cosas.

Para descargar pfSense e instalarlo puede visitar los siguientes enlaces.

Descarga de pfSense:

http://files.nyi.pfsense.org/mirror/downloads/

Para conocer la manera de como instalarlo puede visitar el siguiente enlace :

http://alexalvarez0310.wordpress.com/category/portal-cautivo-con-pfsense/instalacion-de-
pfsense/

Nota : Para instalar pfSense es necesario contar con 2 interfaces de red, una para la WAN y
la otra para la LAN. Parar nuestros intereses utilizaremos 3 interfaces, 2 para las WAN y una
para la LAN.

Ingreso a pfSense.

Una vez instalado el pfSense abrimos un navegador, nos conectamos con una computadora a una
interfaz, nos asignamos una ip del mismo rango que la que tiene la interfaz y luego abrimos un
navegador y escribimos la ip que tiene el pfSense en esa interfaz, nos cargara una página en la
que es necesario loguearse. En username escribimos admin y en password escribimos pfSense.

Configuración de interfaces.

Primeramente es necesario configurar nuestras interfaces, para ello comenzamos configurando
la interfaz para la WAN(conexión a internet 1) , nos vamos a la opción interfaces>WAN, la
configuración necesaria para nuestros intereses seria como sigue.

Ip estatica: 172.16.1.1

Gateway:172.16.1.2

Ahora configuramos la WAN2. La configuración queda como sigue.

Ahora configuramos la LAN. La configuración queda como sigue.

Hacemos click en el botón Save.

2. Verificar creación de Gatways.
   Nos vamos a la opción System>Routing>Gateways y verificamos que los gateways hayan
   sido creados correctamente.

3. Creación del grupo de Gateway.

Para implementar el balanceo de carga primero debemos crear un grupo de Gateways, para
ello nos vamos a la opción System>Routing>Groups, damos click en el símbolo + y nos
aparecerá el siguiente menú:

·

·

·

Group Name: Nombre que identificara la unión de las conexiones WAN que se utilizara en
configuraciones posteriores.
Gateway Priority: Se especifica el tipo de prioridad que utilizaremos para cada conexión
WAN, igual prioridad en ambas conexiones significará un balanceo de carga entre los ISP
para la red de área local.
                               Aqui se aplica el fail over
Trigger Level: Momento en el que se aplicara el fail over , puede ser cuando un miembro
s e caiga, cuando hayan paquetes perdidos, cuando haya alta latencia o cuando se de una
combinación de las ultimas 2.

La configuración debe quedar asi.

Paso final para tener balanceo de carga.

4. Agregar regla de firewall “multi_wan” a la LAN.
   Debemos ir a la pestaña firewall>rules>LAN para asignarle a la LAN el grupo de Gateway
   que definimos anteriormente llamado” multi_wan”.Dando doble click que nos aparece por
   defecto.

·

En el menu Advanced features>Gateway agregamos nuestro grupo de Gateway
como se muestra. En nuestro caso es el grupo multi_wan.

5. NAT outbound
   Nat que permite la conversión de las ip´s de origen del tráfico de la LAN por las ips de los
   enlaces con los ISP´s en el mejor de los casos estas serán públicas.
   En la interfaz de pfSense nos vamos a Firewall>NAT>outbound y agregamos 2 reglas
   dando click en el símbolo + y nos aparece la siguiente interfaz..

Lo único que vamos a modificar es en la pestaña interfaces donde vamos a definir la regla del
NAT ya sea para la WAN1 o para la WAN2 y en source agregaremos la subred de la LAN que en
nuestro caso es 172.16.0.0/24. Damos click en Guardar.

Ambas reglas deberían quedar como se muestra a continuación.

6. Reglas de NAT para ser alcanzables desde internet

Para comprobar que somos alcanzables se ha montado un servidor web en la LAN que escucha
peticiones en el puerto 80 de la pc con ip 172.16.0.1

Firewall > NAT > Portforward , damo click en el simbolo + y modificamos el siguiente menu:

Se configurara en la en el menú la interface correspondiente a cada ISP, el protocolo TCP/UDP, e
source la red entre el ISP que se define y el router PFSense, en Destination la ip del puerto WAN y
Destination Port Range HTTP, en Redirect Target ip la ip donde se encuentra el servidor web en
nuestro caso 172.16.0.2 , y en Filter Rule Association Pass.

Ambas reglas quedan como sigue:

Hasta aquí tenemos:

·
·
·
·

Balanceo de carga
Control de fail-over o caída de un ISP.
Reglas de NAT para salir a internet
Reglas de NAT para ser alcanzables desde internet.

Como extra podemos utilizar el sistema operativo PFSense para realizar:

         DNS interno nos permite tener un DNS interno que resuelva las consultas mas
         habituales de forma veloz y al mismo tiempo redireccione hacia los DNS externos
         todas aquellas consultas que no pueda resolver.
     · Proxy Para filtrar contenido y algunas paginas por sus url que no queramos que los
         host en nuestra LAN visiten.
     · Reglas de firewall para bloquear algunos protocolos y algunas ip`s publicas de
         algunos sitios web para evitar que con la navegación segura “https” los usuarios se
         salten el proxy.
1. DNS Interno

Con la ayuda de la herramienta dns forwarder que viene ya incluida en pfsense podemos
implementar un DNS interno, para ello vamos a Service>DNS forwarder donde nos aparece el
siguiente menú:

·

En la parte de las opciones avanzadas vamos a introducir las paginas que queremos que nuestro
DNS interno resuelva de manera instantánea, cabe mencionar que todas aquellas consultas que
nuestro dns no pueda solucionar deberán ser redireccionadas a los dns definidos en
System>General Setup

Damos click en el símbolo + y editamos el menú host overrides donde nos aparecen los campos:

·
·
·
·

Host para ponerle un nombre a la consulta.
Domain donde definimos la consulta que habrá que resolver, por ejemplo “facebook.com.
ip aquí se define la ip que devolverá el dns interno cuando se realice una consulta.
Guardamos.

El menu nos deberia quedar similar a este:

De esta forma incluso se pueden resolver algunas consultas dns con la dirección localhost de la pc
para“Bloquear”el acceso a algunas páginas mediante dns.

2. Proxy filter y proxy server

Con ayuda de ambas herramientas podemos bloquear contenidos e incluso algunas url que sea
necesarias. Para ello debemos descargar los paquetes squid y squidguard llendo a
System>Packege Seleccionamos ambos paquetes y los descargamos.

Despues de esto vamos a Services>proxy filter donde nos encontramos con el siguiente menú:

·

·

Con el proxy filter podremos bloquear paginas por su contenido, para ello habilitamos el
servicio y el uso de la black list que no es mas que un archivo que contiene todas las ips
que queremos bloquea, en la opción Blacklist URL escribimos la dirección de internet
donde se encuentra la blacklist que queremos utilizar, luego vamos a la pestaña BlackList
y la descargamos.
Ahora nos vamos a la pestaña Common ACL donde encontraremos el contenido de
nuestra black list y podemos definir ahí que queremos permitir que se pueda ver y que
quisiéramos bloquear.

Con esto ya estaríamos bloqueando paginas por su contenido, ya se pornografía, drogas, juegos,
redes sociales, y muchísimas cosas mas.

Proxy server Vamos ahora a la pestaña Service>proxy server El cual podemos utilizar para
bloquear paginas atraves del servidor proxy, esta configuración es sencilla y basta con agregar las
url que queramos bloquear en el campo Accesscontrol>blacklist

3. Ahora vamos a utilizar las reglas propias del firewall que ya venimos utilizando
   hasta ahora, como hemos visto pueden ser usadas para muchas aplicaciones,
   trataremos de explicar las siguientes:

Uso de las reglas de firewall para bloquear protocolos específicos en nuestro caso
bloquearemos el protocolo ICMP Fuera de la LAN. Cabe resaltar que el trafico ICMP entre la
LAN si se permitirá.

En vista de la problemática de que el filtro proxy puede ser saltado utilizando navegación
segura https, bloquearemos con reglas de firewall el trafico que vaya hacia ciertas paginas.

·

Vamos a Firewall>Rules y agregamos una regla nueva dando click en +, primero
agregaremos una regla que permita el trafico ICMP entre los host de la LAN y luego
otra regla que bloquee todo el trafico ICMP, en vista de que cuando un paquete ingresa
al firewall este revisa su tabla de reglas en busca de una que concuerde con el paquete,
cuando encuentra dicha regla la ejecuta y hace caso omiso de las siguientes reglas, aquí
el orden de las reglas si importa.
Ahora agregaremos otra regla que bloquee todo el trafico con destino “Las ips de
facebook”en nuestro caso bloquemos todas las ips de facebook del rango de la
173.252.0.0/16 asi inhabilitamos también la navegación segura https.

·
 
Datos archivados del Taringa! original
25puntos
1,624visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
3visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

p
Usuario
Puntos0
Posts12
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.