Pf Sense

16
Amigos haber los que tienen confusiones o han tenido experiencias desagradables, les explico algo acontinuacion y si despues de esto no les parece coherente retiro el post con honores porque a mi me esta funcionando y tan amigos como siempre: VEAMOS Cuantas veces hemos comprado un servicio o un producto con la finalidad de hacer algo o que lovenden para un fin y luego nosotros con nuestro ingenio le descubrimos un potencial y vemos en estos otras posibles aplicaciones u otros usos. tambien cuantas veces se nos ha dañado algun equipo o maquinaria y no encontramos repuesto o recambio y con la inteligencia humana encontranos algo que haga la funcion o que solucione el problema de lo que se ha dañado. Espero que con esto puedan comprender lo siguiente: en alusion a la verdad, siendo totalmente sincero y sin animos de ofender a nadie y mucho menos querer hacer negocio de este tema, El bonding de Mikrotik fue consevido para LINK BONDING o sea para lo que explican el amigo RYO y el amigo ROJOCESAR, por eso ellos dicen que tiene que haber una integracion en el enrrutamiento de los datos tanto del proveedor ISP como del usuario que quiere realizar el bonding, en buen cristiano debe programarse cada extremo de la linea. En esa parte los amigos RYO y ROJOCESAR tienen toda la razon. Ahora biene lo bueno existe CHANNEL BONDING en este se suman las capacidades de dos o mas frecuencias para crear un mayor tubo de ancho de banda para la transmision de data, como es el caso de la tegnologia 4G LTE que necesita la suma de dos frecuencias para que los moviles y celulares puedan alcanzar velocidades de navegacion nunca antes vistas. Asi tambien es el caso del SUPER WIFI este para

Transcript of Pf Sense

Page 1: Pf Sense

Amigos haber los que tienen confusiones o han tenido experiencias desagradables, les explico algo acontinuacion y si despues de esto no les parece coherente retiro el post con honores porque a mi me esta funcionando y tan amigos como siempre:

VEAMOS

Cuantas veces hemos comprado un servicio o un producto con la finalidad de hacer algo o que lovenden para un fin y luego nosotros con nuestro ingenio le descubrimos un potencial y vemos en estos otras posibles aplicaciones u otros usos. tambien cuantas veces se nos ha dañado algun equipo o maquinaria y no encontramos repuesto o recambio y con la inteligencia humana encontranos algo que haga la funcion o que solucione el problema de lo que se ha dañado.

Espero que con esto puedan comprender lo siguiente: en alusion a la verdad, siendo totalmente sincero y sin animos de ofender a nadie y mucho menos querer hacer negocio de este tema,

El bonding de Mikrotik fue consevido para LINK BONDING o sea para lo que explican el amigo RYO y el amigo ROJOCESAR, por eso ellos dicen que tiene que haber una integracion en el enrrutamiento de los datos tanto del proveedor ISP como del usuario que quiere realizar el bonding, en buen cristiano debe programarse cada extremo de la linea.En esa parte los amigos RYO y ROJOCESAR tienen toda la razon.

Ahora biene lo bueno existe CHANNEL BONDING en este se suman las capacidades de dos o mas frecuencias para crear un mayor tubo de ancho de banda para la transmision de data, como es el caso de la tegnologia 4G LTE que necesita la suma de dos frecuencias para que los moviles y celulares puedan alcanzar velocidades de navegacion nunca antes vistas. Asi tambien es el caso del SUPER WIFI este para funcionar necesita la suma de todas las frecuencias de la television analogica convencional para crear un tubo capaz de llebar internet a usuarios que esten hasta 100 km de la estacion base, para esto se aprovechara el apagon de la television analogica con el paso de esta a digital.

Ahora lo que nos interesa a nosotros BANDWICH BONDING este consiste en la suma del ancho de banda disponible y no necesariamente tiene que haber un equipo en cada extremo ( compañia de telefonos------WISP) ni mucho menos un enrrutamiento especial en las telefonicas.

Esas son las diferencias basicas con palabras mas o menos entendibles entre LINK BONDING, CHANNEL BONDING y BANDWICH BONDING.

Porque mi comentario del principio es porque hemos podido explotar otras opciones del MIKROTIK convirtiendo su LINK BONDING en un funcional BANDWICH BONDING que suma el ancho de banda a la perfeccion el truco esta en poner la

Page 2: Pf Sense

programacion que normalmente iria en dos mikrotik uno en cada extremo de la linea en solo un mikrotik en nuestro extremo de la linea.

Al igual que con el load balancing se recomienda que el mikrotik sea dedicado para este uso.

Ha nadie se le esta obligando a que lo haga toda esta informacion es gratis y sin fines de lucro.

Page 3: Pf Sense

Bien voy a explicar que en el mikrotik en interfaces list en la paleta bonding vamos a utilizar la opcion balance rr, la doble rr significa que estamos haciendo bonding en modo Round-robin, pondremos lo siguiente:

[admin@MikroTik] > / interface bonding add slaves=eoip-tunnel1,eoip-tunnel2 mode=balance-rr

claro que cada uno de nosotros debe ajustar el nombre de las interfaces con los nonbres que las tengamosdeclarada en interfaces por ejemplo si tenemos eth1, entonces sustituimos eoip-tunnel1 por eth1 y asisustituimos eoip-tunnel2 por eth2.Con este script lo que hacemos es hacer esclavas las interfaces que queremos vincular en el bondingque en este ejemplo son dos.

Luego de esto podremos verificar que automaticamente en la paleta interfaces sehacreado la interface llamada bonding1.

el siguiente paso es declarar una ip en address para dicha interface

[admin@MikroTik] > / ip address add address 192.168.0.1/24 interface=bonding1

Esta ip la pueden poner a su gusto pues esa seria la salida sumada.

Mas adelante continuremos explicando los otros pasos a seguir.

Page 4: Pf Sense

Conceptos previos, conceptos erróneos y funcionamiento del protocolo de Internet

Cuando alguien entra a su casa , generalmente entra por la puerta , o si es medio paranoico, tal vez por la ventana. Pero nunca por las dos a la vez, ya que un cuerpo partido a la mitad no puede sobrevivir.

En el modelo TCP/IP pasa exactamente lo mismo. Un paquete sale (petición) y entra (respuesta) "obligadamente" siempre por la misma gateway y mismo DNS.

Si un paquete saliera por una puerta de enlace "1", deberia volver por la misma, porque sino se perdería. (time to live, traceo , etc)

Resumiendo, se puede sumar y aumentar la velocidad global de descargas, pero no la de un archivo en particular.

Teóricamente no es posible descargar 1 solo archivo con dos conexiones diferentes. La razón de esto, es que cuando uno empieza a descargar un archivo de un servidor, el servidor estable una espiece de "tunel" entre tu direccion IP y el para asi poder comunicarse. Dado que las dos conexiones de internet tienen diferentes direcciones IP, el servidor sólo establecera conexión con alguna de las dos. En teorçoa es posible hacerle creer al servidor que las dos conexiones estan bajo 1 sola IP, pero eso causaria un caos al tratar de recibir los paquetes de datos, porque no existe ningún protocolo que regule este tipo de transferencia de datos.

Pero si podemos hacer que este archivo se descargue por segmentos y posteariormente unimos los trozos, con lo que al final el resultado que obtendremos será la suma de bambas conexiones.

Por lo tanto no resulta tan sencillo "sumar" dos conexiones a internet, porque el protocolo tcp/ip tiene ciertas limitaciones. Pero si podremos hacerlo por hardware rápidamente tal y como veremos más adelante.

Lo que normalmente se hace es repartir (que no es lo mismo que sumar a la vez dos conexiones) 2+2 = 4, pero a veces es mejor que unos usen 2 y los otros 2 y no que todos usen 4 a la vez.

Podemos repartir el ancho de banda de varias maneras (QoS) (Calidad del servicio)

- Podemos usar una conexión para navegar y otra para bajar ficheros (por el tipo de tráfico, http, ftp, smtp, pop3, skype, youtube, escritorio remoto), por rangos de ip (por departamentos de trabajo, etc) que unas salga por una conexión y otras por otra)

- Podemos configurar cuánto saldrá por cada WAN y cuantó entrará (kbps) así si abres en tu PC youtube saldra por WAN1 y si entras a otras webs por WAN2, igual puedes deperminar

Page 5: Pf Sense

dominios que salgan por determinada WAN

- Podemos distrubir las solicitudes procedentes de la LAN a través de una politica "round-robin" (por peso) a través de múltiples pasarelas de Internet. En otras palabras, si en un determinado momento sólo hay un usuario de internet haciendo sólo una conexión TCP (por ejemplo, se ejecuta sólo una descarga desde la web), su tráfico se derivará a traves de una única pasarela, por lo que no habría beneficio en el equilibrado de conexiones. En cambio, si la LAN está repleta de usuarios, cada uno ejecutando múltiples solicitudes al mismo tiempo, como un todo, sus conexiones tendrán acceso a un mayor ancho de banda, lo que equivale a la suma de los anchos de banda de acceso único.

IP Failover (fail over, a prueba de fallas)

Failover es cuando tenemos una o más conexiones y cuando falla una salimos automáticamente por la otra que si que funcione. También llamado conexión redundante. Si una de las líneas falla, el router continua automáticamente la conexión utilizando exclusivamente la segunda.

a) Balanceo de Carga (Load balancing)¿Qué es?Repartir ancho de banda

El balanceo no suma, reparte.

b) Sumar ancho de banda (Bonding)Juntar conexiones, unir conexiones, sumar dos conexiones o más

Bonding: ip network multipathing con LINUX

¿Qué es el bonding? Es un driver que originalmente venía con los parches para clusters beowulf, desde hace un tiempo se puede implementar en un kernel 2.2X, 2.4X y 2.6x ¿Pero qué hace realmente?¿Para que sirve? Es la forma de tener dos tarjetas de red funcionando como una sola y aprovechando el ancho de banda de las dos a la vez En definitiva con bonding (ip network multipathing) tendríamos dos tarjetas de red físicas y por encima una virtual que suministra el servicio.

El bonding es una técnica que permite agregar varios interfaces de red físicos en uno único virtual. A cada interfaz físico se le denominará slave (esclavo). Con esto podemos realizar un balanceo de carga entre las dos interfaces y conseguir un ancho de banda final igual a la suma de los anchos de banda de cada slave.

Necesitamos al menos dos conexiones a internet para hacer bonding.

Page 6: Pf Sense

Tipos de Balanceos de Carga con bonding:

Round Robin balance-rr (modo 0)Va repartiendo el tráfico (entrante) asignando de forma rotatoria cada conexión a una entrada WAN distinta, es decir, la primera a la WAN 01, la siguiente a la WAN 02, la tercera de nuevo a la WAN 01, ...

Se emplea un algoritmo round robin entre la cola virtual y las de los esclavos. Es algo así como: un paquetillo para un esclavo, otro para otro esclavo, un paquetillo para un esclavo, otro para el otro... etc. Es el algoritmo que se usa por defecto.

active-backup (modo 1):

Realmente no balancea la carga, usa sólo un esclavo y en caso de fallar, usa el siguiente disponible. Si falla el activo, pasa al slave (pasivo)

balance-xor (modo 2):

Para transmitir una trama lo hace basado en el siguiente calculo: (MAC de origen XOR MAC destino)%numero de interfaces slaves. De esta manera para cada MAC de destino se selecciona una interfaz en concreto. Este modo nos ofrece balanceo de carga y tolerancia a fallos.

broadcast (modo 3):

se transmite todo por todas las interfaces. Este método no balancea tampoco, pero provee tolerancia a fallos.

802.3ad (modo 4):

Se trata del estandard IEEE 802.3ad (Dynamic link aggregation) también llamado “port trunking“. Permite la definición de agregados ofreciendo alta disponibilidad

balance-tlb (modo 5):

balancea la carga de transmisión entre los esclavos dependiendo de la velocidad de estos y de la carga total. El tráfico es recibido por un esclavo, en caso de fallar otro esclavo toma su MAC y continúa recibiendo tráfico.

balance-alb (modo 6)

realiza el balanceo anterior además de un balanceo también en la recepción.

Otros tipos de balanceo de carga en aparatos de hardware:

Page 7: Pf Sense

Basado en sesionesCada conexión de salida se compone de varias conexiones TCP/IP, el router reparte las conexiones de cada sesión entre los dos puertos WAN. Un ejemplo, una página de Internet tiene una sesión TCP/IP por cada elemento de la misma, cuando un usuario se conecta a esa página Web a través del router XiNCOM, los elementos de la página se descargan paralelamente y a la vez utilizando las dos líneas WAN de forma simultanea, es decir, repartiendo los elementos entre las dos líneas de conexión.

Basado en paquetesEn lugar de repartir las conexiones TCP/IP de una sesión, el balanceo de carga basado en paquetes reparte los paquetes de cada conexión TCP/IP entre los dos puertos WAN.

Funcionamiento

¿Cómo lo hacemos?

- Mediante Software

En Windows con el programa WinGate, Double surfer, mobile net switchvirtualwifi, BVRP Connection Manager, MultiNetwork Manager, WiFi Hopper 1.2Midpoint Internet LoadBalancer, etc

Con el comando "route" (modificando la tabla de rutas, la ruta de encaminamiento, cambiando la puerta de enlace (gateway))

En Linux con pfsense (una distrbución liviana basada en FreeBSD derivada de m0n0wall), Brazilfw, o Mikrotik

pfSense permite balanceo de carga (load balancing) con detección de fallo (fail-over)con fail-over. Permite además añadir un Portal Cautivo o captivo (hotspot), OpenVPN, gestión del ancho de banda (limitar y repartir ancho de banda) (Traffic Shape), tráfico por prioridades, etc

Con los comandos iproute2

Ejemplos

________+------------+ /| | |+-------------+ Provider 1 +-------__ | | | /___/ \_ +------+-------+ +------------+ |

Page 8: Pf Sense

_/ \__ | if1 | // \ | | || Local network -----+ Linux router | | Internet\_ __/ | | |\__ __/ | if2 | \\___/ +------+-------+ +------------+ || | | \+-------------+ Provider 2 +-------| | |+------------+ \________

Datos previos

Si suponemos los siguientes datos:

Citareth0: Interfaz conectado a un ADSLeth1: Interfaz conectado a otro ADSLIP0: Dirección IP de la máquina en eth0IP1: Dirección IP de la máquina en eth1GW0: Dirección IP del gateway en el interfaz eth0GW1: Dirección IP del gateway en el interfaz eth1NET0: Subred de la salida ADSL 0NET1: Subred de la salida ADSL 1

Definir tablas de rutas

Definir dos tablas de routing auxiliares en elfichero /etc/iproute2/rt_tables, simplemente añade estas dos lí*neas:

Código:2 T03 T1

Page 9: Pf Sense

Añadir rutas de encaminamiento

Añadir información a las dos tablas auxiliares con información derouting de cada una de las dos salidas:

Código:ip route add default via GW0 dev table T0ip route add NET0 dev eth0 src IP0 table T0ip route add default via GW1 dev table T1ip route add NET1 dev eth1 src IP1 table T1

Añadir las reglas de encaminamiento

Añadir las reglas necesarias para utilizar cada una de las dos tablasauxiliares:

Código:ip rule add from IP0/32 table T0ip rule add from IP1/32 table T1

Añadir la ruta por defecto

Añadir la ruta por defecto en la tabla principal, que se encarga derepartir la carga. Puedes cambiar el peso de cada enlace después delparámetro weight:

Código:ip route add default scope global nexthop via GW0 dev eth0 weight 1nexthop via GW1 dev eth1 weight 1

Ejemplo 2:

Cómo juntar dos ADSL

Nomenclatura:

Citareth0 -> primer interfaz conectado a la ADSL1192.168.1.1 -> IP asociada a eth0192.168.1.2 -> IP del router ADSL1192.168.1.0/24 -> subred donde hay ADSL1

eth1 -> primer interfaz conectado a la ADSL2192.168.2.1 -> IP asociada a eth1192.168.2.2 -> IP del router ADSL2

Page 10: Pf Sense

192.168.2.0/24 -> subred donde hay ADSL2

Primero:Crear dos tablas de rutas adicionales al fichero /etc/iproute2/rt_#tables/.Es tan sencillo como abrir el fichero con un editor de texto y añadir las dos líneas siguientes:200 ADSL1201 ADSL2

Segundo:Asignamos cada subred a la tabla e interfaz correspondiente.Desde el prompt del sistema:Código:# ip route add 192.168.1.0/24 dev eth0 src 192.168.1.1 table ADSL1# ip route add default via 192.168.1.2 table ADSL1# ip route add 192.168.2.0/24 dev eth1 src 192.168.2.1 table ADSL2# ip route add default via 192.168.2.2 table ADSL2

Tercero:Ahora hace falta asegurar que el servidor contesta por la misma interfaz que se ha hecho la petición.Código:# ip route add 192.168.1.0/24 dev eth0 src 192.168.1.1# ip route add 192.168.2.0/24 dev eth1 src 192.168.2.1

Quarto:Sólo hace falta crear la ruta por defecto balanceada.Código:# ip route add default scope global netxhop via 192.168.1.2 dev eth0 weight 1 nexthop via 192.168.2.2 dev eth1 weight 1

- Mediante Hardware

Routers de doble Wan (Dual Wan) "Multihomed" o "Multiwan".

Balanceador de carga con el protocolo CARP (Common Address Redundancy Protocol), básicamente es proporciona redundancia. Es decir que si tu internet falla, el software lo detecta en decimas de segundo y te hace el switch hacia el enlace bueno, el usuario nunca se da cuenta cuando falla el servicio.

Muxing, multiplexar líneas ADSL.

Sólo es posible por hardware.

Limitar y Repartir ancho de banda

Page 11: Pf Sense

Palabras claves: Traffic Shapper o Traffic Shapping, QoS, fair queuing

QoS (Quality of Service o Calidad de Servicio) es un conjunto de protocolos y tecnologías que garantizan la entrega de datos a través de la red en un momento dado. Una de las principales metas de QoS es la priorización.

Por defecto, cuando enviamos información por una interfaz (tarjeta de red en este caso) las tramas de datos se encolan en una pila FIFO: la primera trama en entrar, es la primera en salir.

Configurar QoS (Quality of Service) en el router.

Los routers Zyxel llevan la opción "Media Bandwidth Management"http://www.adslzone.net/tutorial-20.18.html

Los routers CT Comtrend para configurar el QoS debes ir a Advanced Setup => Quality of Service dentro de la configuración del router.

Con Mikrotik PCQ (Queues)

Con PfSense y su opción de Traffic Shape.

Con un router que acepte firmware dd-wrt

Programas para Windows como el NetPeeker que permite repartir el ancho de banda (tanto de subida como de bajada) para cada aplicación.

Más programas:

El NetLimiter o el DU Super Controler, o el WebScout, y el Bandwidth Speed Balancer, el Bandwidth Controller, WinTC,DU Meter, Net Peeker,

Para limitar el ancho de banda en Linu hace bastante tiempo que se puede usar:

- iproute2 (TC, traffic control)- cbq.init

Y para controlar el ancho de banda no, pero para medirlo y controlar mucha más información está el ntop,

Page 12: Pf Sense

http://www.openxtra.com/products/ntop-xtra.htm

Referencias, fuenteshttp://www.zeroshell.net/eng/net-balancer-spanish/http://multingles.net/docs/jmt/2isps.htmhttp://crysol.org/es/node/811http://www.openbsd.org/faq/pf/es/queueing.htmlhttp://www.openbsd.org/faq/pf/index.htmlhttp://bulma.net/body.phtml?nIdNoticia=1759http://redesteleco.com/balanceo_de_cargahttp://guifi.net/es/node/10643http://gnulinuxtips.blogspot.com/201...n-pfsense.htmlhttp://doc.pfsense.org/index.php/MultiWanVersion1.2http://www.openbsd.org/faq/pf/es/queueing.htmlhttp://www.bellera.cat/josep/pfsense/cabal_cs.html

Page 13: Pf Sense