Mostrando entradas con la etiqueta balanceo. Mostrar todas las entradas
Mostrando entradas con la etiqueta balanceo. Mostrar todas las entradas

miércoles, 12 de septiembre de 2018

Mikrotik, queue tree basado en L7

En entradas anteriores compartí distintas formas de regular el tráfico a traves de queue simple y queue tree.
Ahora, experimentando con un nuevo router, el ccr 1009 (creedence) encontré este script para la versión 6 de ROS basado en Layer 7.

Como se puede observar, definir las reglas de layer 7 es a primera vista algo sencillo, sin embargo hay que comprobar luego que estas funcionen de acuerdo a nuestras necesidades.
Por el momento yo dejé el script tal como lo programó el autor y estoy monitoreando el tráfico observando la actividad en cada una de las ramas del queue tree.
Solo faltaría agregar una rama más que le dé baja prioridad al resto del tráfico desconocido.

El tráfico considerado es el siguiente:


VoIP
VPN
Tráfico de juegos (red xbox, red PS Wii, WoW, LoL, etc.)
Transmisión de video (netflix, youtube, etc.)
Navegación Http (conexiones de menos de 5 MB)
Protocolos de administración (ssh, telnet, etc.)
Servicios de administración (DNS, ICMP, etc.)
Todo lo que sobra se considera basura y lucha por lo que queda.



Agregamos dos clases nuevas de queue:
 /queue type
add kind=pfifo name=streaming-video-in pfifo-limit=500
add kind=pcq name=games-in-pcq pcq-classifier=dst-address \
    pcq-dst-address6-mask=64 pcq-rate=100k pcq-src-address6-mask=64 \
    pcq-total-limit=750000KiB
 creamos los filtros regex según nuestras necesidades:
/ip firewall layer7-protocol
add name=speedtest-servers regexp="^.*(get|GET).+speedtest.*\$"
add name=torrent-wwws regexp="^.*(get|GET).+(torrent|thepiratebay|isohunt|ente\
    rtane|demonoid|btjunkie|mininova|flixflux|vertor|h33t|zoozle|bitnova|bitso\
    up|meganova|fulldls|btbot|fenopy|gpirate|commonbits).*\$"
add name=torrent-dns regexp="^.+(torrent|thepiratebay|isohunt|entertane|demono\
    id|btjunkie|mininova|flixflux|vertor|h33t|zoozle|bitnova|bitsoup|meganova|\
    fulldls|btbot|fenopy|gpirate|commonbits).*\$"
add name=netflix regexp="^.*(get|GET).+(netflix).*\$"
add name=mp4 regexp="^.*(get|GET).+\\.mp4.*\$"
add name=swf regexp="^.*(get|GET).+\\.swf.*\$"
add name=flv regexp="^.*(get|GET).+\\.flv.*\$"
add name=video regexp="^.*(get|GET).+(\\.flv|\\.mp4|netflix|\\.swf).*\$"
Creamos las listas de direcciones de la salida a Internet y la red interna:
 /ip firewall address-list
add address=192.168.0.0/16 list=internal-nets
add address=138.121.228.0/24 list=external-nets
add address=192.168.254.90 comment="cliente 1" list=customer-servers
 creamos las reglas del firewall para marcar el tráfico conocido:
/ip firewall mangle
add action=mark-packet chain=prerouting comment=\
    "internal-traffic packet mark" dst-address-list=internal-nets \
    new-packet-mark=internal-traffic passthrough=no src-address-list=\
    internal-nets
add action=mark-packet chain=prerouting comment=\
    "customer-servers-out packet mark" new-packet-mark=customer-servers-out \
    passthrough=no src-address-list=customer-servers
add action=mark-packet chain=prerouting comment=\
    "customer-servers-in packet mark" dst-address-list=customer-servers \
    new-packet-mark=customer-servers-in passthrough=no
add action=mark-packet chain=prerouting comment="admin-in packet mark DNS" \
    in-interface=!ISP new-packet-mark=admin-in passthrough=no protocol=udp \
    src-port=53
add action=mark-packet chain=prerouting comment="admin-in packet mark snmp" \
    dst-port=161 in-interface=ISP new-packet-mark=admin-in passthrough=no \
    protocol=udp
add action=mark-connection chain=prerouting comment=\
    "Remote Protocols admin connection mark" new-connection-mark=admin port=\
    20,21,22,23,3389,8291 protocol=tcp
add action=mark-connection chain=prerouting comment=\
    "icmp connection mark as admin" new-connection-mark=admin protocol=icmp \
    src-address-list=internal-nets
add action=mark-packet chain=prerouting comment="admin-in packet mark" \
    connection-mark=admin in-interface=ISP new-packet-mark=admin-in \
    passthrough=no
add action=mark-packet chain=prerouting comment="admin-out packet mark" \
    connection-mark=admin new-packet-mark=admin-out passthrough=no
add action=mark-connection chain=prerouting comment=\
    "streaming video connection mark" dst-port=80 layer7-protocol=video \
    new-connection-mark=streaming-video protocol=tcp src-address-list=\
    internal-nets
add action=mark-packet chain=prerouting comment=\
    "streaming video in packet mark" connection-mark=streaming-video \
    in-interface=ISP new-packet-mark=streaming-video-in passthrough=no
add action=mark-packet chain=prerouting comment=\
    "streaming video out packet mark" connection-mark=streaming-video \
    new-packet-mark=streaming-video-out passthrough=no
add action=mark-connection chain=prerouting comment=\
    "http traffic connection mark" dst-port=80,443 new-connection-mark=http \
    protocol=tcp src-address-list=internal-nets
add action=mark-connection chain=prerouting comment=\
    "http traffic connection mark" connection-bytes=5000000-4294967295 \
    dst-port=80,443 new-connection-mark=http-download protocol=tcp \
    src-address-list=internal-nets
add action=mark-packet chain=prerouting comment="http in packet mark" \
    connection-mark=http in-interface=ISP new-packet-mark=http-in \
    passthrough=no
add action=mark-packet chain=prerouting comment="http out packet mark" \
    connection-mark=http new-packet-mark=http-out passthrough=no
add action=mark-connection chain=prerouting comment=\
    "wow connetion mark as gaming" dst-port=\
    1119,3724,6112-6114,4000,6881-6999 new-connection-mark=games protocol=tcp \
    src-address-list=internal-nets
add action=mark-connection chain=prerouting comment=\
    "eve online connetion mark as gaming" dst-address=87.237.38.200 \
    new-connection-mark=games src-address-list=internal-nets
add action=mark-connection chain=prerouting comment=\
    "starcraft 2 connetion mark as gaming" dst-port=1119 new-connection-mark=\
    games protocol=tcp src-address-list=internal-nets
add action=mark-connection chain=prerouting comment=\
    "heros of newerth connetion mark as gaming" dst-port=11031,11235-11335 \
    new-connection-mark=games protocol=tcp src-address-list=internal-nets
add action=mark-connection chain=prerouting comment=\
    "steam connetion mark as gaming" dst-port=27014-27050 \
    new-connection-mark=games protocol=tcp src-address-list=internal-nets
add action=mark-connection chain=prerouting comment=\
    "xbox live connetion mark as gaming" dst-port=3074 new-connection-mark=\
    games protocol=tcp src-address-list=internal-nets
add action=mark-connection chain=prerouting comment=\
    "ps3 online connetion mark as gaming" dst-port=5223 new-connection-mark=\
    games protocol=tcp src-address-list=internal-nets
add action=mark-connection chain=prerouting comment=\
    "wii online connetion mark as gaming" dst-port=28910,29900,29901,29920 \
    new-connection-mark=games protocol=tcp src-address-list=internal-nets
add action=mark-packet chain=prerouting comment=\
    "games packet mark forever-saken-game" dst-address-list=external-nets \
    new-packet-mark=games-in passthrough=no src-address-list=\
    forever-saken-game
add action=mark-packet chain=prerouting comment="games packet mark wow" \
    dst-address-list=external-nets new-packet-mark=games-in passthrough=no \
    protocol=udp src-port=53,3724
add action=mark-packet chain=prerouting comment=\
    "games packet mark starcraft2" dst-address-list=external-nets \
    new-packet-mark=games-in passthrough=no protocol=udp src-port=1119,6113
add action=mark-packet chain=prerouting comment="games packet mark HoN" \
    dst-address-list=external-nets new-packet-mark=games-in passthrough=no \
    protocol=udp src-port=11031,11235-11335
add action=mark-packet chain=prerouting comment="games packet mark steam in" \
    dst-address-list=external-nets new-packet-mark=games-in passthrough=no \
    port=4380,28960,27000-27030 protocol=udp
add action=mark-packet chain=prerouting comment="games packet mark steam out" \
    dst-port=53,1500,3005,3101,3478,4379-4380,4380,28960,27000-27030,28960 \
    new-packet-mark=games-out passthrough=no protocol=udp src-address-list=\
    internal-nets
add action=mark-packet chain=prerouting comment="games packet mark xbox live" \
    dst-address-list=external-nets new-packet-mark=games-in passthrough=no \
    protocol=udp src-port=88,3074,3544,4500
add action=mark-packet chain=prerouting comment=\
    "games packet mark ps3 online" dst-address-list=external-nets \
    new-packet-mark=games-in passthrough=no protocol=udp src-port=\
    3478,3479,3658
add action=mark-packet chain=prerouting comment="games packet mark in" \
    connection-mark=games dst-address-list=external-nets new-packet-mark=\
    games-in passthrough=no
add action=mark-packet chain=prerouting comment="games packet mark out" \
    connection-mark=games new-packet-mark=games-out passthrough=no
add action=mark-packet chain=prerouting comment=\
    "voip-in packet mark teamspeak" dst-address-list=external-nets \
    new-packet-mark=voip-in passthrough=no protocol=udp src-port=9987
add action=mark-packet chain=prerouting comment=\
    "voip-out packet mark teamspeak" dst-port=9987 new-packet-mark=voip-out \
    passthrough=no protocol=udp src-address-list=internal-nets
add action=mark-packet chain=prerouting comment=\
    "voip-out packet mark teamspeak" dst-address-list=external-nets \
    new-packet-mark=voip-in passthrough=no protocol=udp src-port=9987
add action=mark-packet chain=prerouting comment=\
    "voip-in packet mark ventrilo" dst-address-list=external-nets \
    new-packet-mark=voip-in passthrough=no protocol=udp src-port=3784
add action=mark-packet chain=prerouting comment=\
    "voip-out packet mark ventrilo" dst-port=3784 new-packet-mark=voip-out \
    passthrough=no protocol=udp src-address-list=internal-nets
add action=mark-packet chain=prerouting comment=\
    "voip-in packet mark ventrilo" dst-address-list=external-nets \
    new-packet-mark=voip-in passthrough=no protocol=tcp src-port=3784
add action=mark-packet chain=prerouting comment=\
    "voip-out packet mark ventrilo" dst-port=3784 new-packet-mark=voip-out \
    passthrough=no protocol=tcp src-address-list=internal-nets
add action=mark-packet chain=prerouting comment="voip-in packet mark SIP" \
    dst-address-list=internal-nets new-packet-mark=voip-in passthrough=no \
    port=5060 protocol=tcp
add action=mark-packet chain=prerouting comment="voip-out packet mark SIP" \
    new-packet-mark=voip-out passthrough=no port=5060 protocol=tcp \
    src-address-list=internal-nets
add action=mark-packet chain=prerouting comment="voip-in packet mark udp SIP" \
    dst-address-list=internal-nets new-packet-mark=voip-in passthrough=no \
    port=5004,5060 protocol=udp
add action=mark-packet chain=prerouting comment=\
    "voip-out packet mark udp SIP" new-packet-mark=voip-out passthrough=no \
    port=5004,5060 protocol=udp src-address-list=internal-nets
add action=mark-packet chain=prerouting comment="voip-in packet mark RTP" \
    dst-address-list=internal-nets new-packet-mark=voip-in packet-size=\
    100-400 passthrough=no port=16348-32768 protocol=udp
add action=mark-packet chain=prerouting comment="voip-out packet mark RTP" \
    new-packet-mark=voip-in packet-size=100-400 passthrough=no port=\
    16348-32768 protocol=udp src-address-list=internal-nets
add action=mark-packet chain=prerouting comment="vpn-in packet mark GRE" \
    in-interface=ISP new-packet-mark=vpn-in passthrough=no protocol=gre
add action=mark-packet chain=prerouting comment="vpn-out packet mark GRE" \
    new-packet-mark=vpn-out passthrough=no protocol=gre
add action=mark-packet chain=prerouting comment="vpn-in packet mark ESP" \
    in-interface=ISP new-packet-mark=vpn-in passthrough=no protocol=ipsec-esp
add action=mark-packet chain=prerouting comment="vpn-out packet mark ESP" \
    new-packet-mark=vpn-out passthrough=no protocol=ipsec-esp
add action=mark-packet chain=prerouting comment=\
    "vpn-in packet mark VPN UDP ports" in-interface=ISP new-packet-mark=\
    vpn-in passthrough=no protocol=udp src-port=500,1701,4500
add action=mark-packet chain=prerouting comment=\
    "vpn-out packet mark VPN UDP ports" new-packet-mark=vpn-out passthrough=\
    no protocol=udp src-port=500,1701,4500
add action=mark-packet chain=prerouting comment="vpn-in packet mark PPTP" \
    in-interface=ISP new-packet-mark=vpn-in passthrough=no protocol=tcp \
    src-port=1723
add action=mark-packet chain=prerouting comment="vpn-out packet mark PPTP" \
    new-packet-mark=vpn-out passthrough=no protocol=tcp src-port=1723
add action=mark-packet chain=prerouting comment="all in" in-interface=ISP \
    new-packet-mark=in passthrough=no
add action=mark-packet chain=prerouting comment="all out" new-packet-mark=out \
    passthrough=no
 Finalmente creamos el queue tree:
/queue tree
add max-limit=10M name=in parent=global
add max-limit=10M name=out parent=global
add limit-at=3M max-limit=10M name=http-in packet-mark=http-in parent=in \
    priority=4 queue=default
add limit-at=4M max-limit=10M name=streaming-In packet-mark=\
    streaming-video-in parent=in priority=3 queue=streaming-video-in
add limit-at=500k max-limit=10M name=gaming-in packet-mark=games-in parent=in \
    priority=2 queue=games-in-pcq
add max-limit=10M name=download-in packet-mark=in parent=in queue=default
add max-limit=10M name=upload-out packet-mark=out parent=out queue=default
add limit-at=500k max-limit=10M name=gaming-out packet-mark=games-out parent=\
    out priority=2 queue=default
add limit-at=3M max-limit=10M name=http-out packet-mark=http-out parent=out \
    priority=4 queue=default
add limit-at=4M max-limit=10M name=streaming-Out packet-mark=\
    streaming-video-out parent=out priority=3 queue=default
add limit-at=1M max-limit=10M name=Clientes-In packet-mark=\
    customer-servers-in parent=in priority=1 queue=default
add limit-at=1M max-limit=10M name=Clientes-Out packet-mark=\
    customer-servers-out parent=out priority=1 queue=default
add limit-at=500k max-limit=10M name=voip-in packet-mark=voip-in parent=in \
    priority=1 queue=default
add limit-at=500k max-limit=10M name=vpn-in packet-mark=vpn-in parent=in \
    priority=2 queue=default
add limit-at=500k max-limit=10M name=voip-out packet-mark=voip-out parent=out \
    priority=1 queue=default
add limit-at=500k max-limit=10M name=vpn-out packet-mark=vpn-out parent=out \
    priority=2 queue=default
add limit-at=500k max-limit=10M name=admin-in packet-mark=admin-in parent=in \
    priority=1 queue=default
add limit-at=500k max-limit=10M name=admin-out packet-mark=admin-out parent=\
    out priority=1 queue=default

Aqui se puede observar un exceso en el trafico marcado como descargas:

 alarma en el tráfico http:

Tráfico total:

Fuente: http://gregsowell.com/?p=4665

sábado, 16 de febrero de 2013

Mikrotik - Balanceo de carga a dos conexiones WAN con QoS Queue Tree


Mikrotik en un sistema operativo de router que puede ser instalado en una PC o comprar directamente un routerboad con el ROS instalado. El software esta en permanente actualización por lo que a partir de la versión 3.2 realizar un balanceo de carga entre dos o más conexiones a internet es mas sencillo con la opción PC
PCC (Per Connection Classifier) es el método por el cual se divide en porcentajes las conexiones de los usuarios al router asignando el mismo a las distintas conexiones wan disponibles. Asi, al tener dos conexiones a internet irá el 50% a cada una.
en la siguiente guía vamos a balancear dos conexiones de 2MB y 6Mb respectivamente por lo que para que el equilibrio sea más equitativo a la de mayor ancho de banda le asignaremos un 66% de las conexiones y a la otra el restante 33%.
Para el efecto consideramos que el router esta en producción por lo que en esta guía no se desarrolla la configuración inicial.

Balancear las conexiones de internet disponibles consta de cuatro procedimientos:
Configurar los gateway
Marcar el trafico
Asignar porcentajes a las conexiones (PCC)
Enrutar las conexiones

ingresamos nuestros gateway:
/ip route
add gateway=pppoe-out1 distance=1
add gateway=192.168.1.1 check-gateway=ping distance=2

Marcamos el tráfico para que todo lo que entra por una WAN salga por esa misma WAN:
/ip firewall mangle
add chain=prerouting in-interface=pppoe-out1 connection-state=new new-connection-mark=pppoe-out1_conn action=mark-connection passthrough=yes
add chain=prerouting in-interface=eth1-Arnet connection-state=new new-connection-mark=eth1_conn action=mark-connection passthrough=yes
add chain=output connection-mark=pppoe-out1_conn new-routing-mark=to_pppoe-out1 action=mark-routing passthrough=yes
add chain=output connection-mark=eth1_conn new-routing-mark=to_eth1-Arnet action=mark-routing passthrough=yes
Configuramos PCC, como dijimos 2/3 para una y el resto para la otra:
primero marcamos las conexiones:
/ip firewall mangle
add chain=prerouting in-interface=eth3-LAN connection-state=new dst-address-type=!local per-connection-classifier=both-addresses:3/0 action=mark-connection new-connection-mark=pppoe-out1_conn passthrough=yes
add chain=prerouting in-interface=eth3-LAN connection-state=new dst-address-type=!local per-connection-classifier=both-addresses:3/1 action=mark-connection new-connection-mark=eth1_conn passthrough=yes
add chain=prerouting in-interface=eth3-LAN connection-state=new dst-address-type=!local per-connection-classifier=both-addresses:3/2 action=mark-connection new-connection-mark=eth1_conn passthrough=yes
Luego marcamos las rutas:
/ip firewall mangle
add chain=prerouting in-interface=eth3-LAN connection-mark=pppoe-out1_conn action=mark-routing new-routing-mark=to_pppoe-out1 passthrough=yes
add chain=prerouting in-interface=eth3-LAN connection-mark=eth1_conn action=mark-routing new-routing-mark=to_eth1-Arnet passthrough=yes

Finalmente utilizamos esas marcas de ruta para enviarlas a cada conexion:
/ip route
add gateway=pppoe-out1 routing-mark=to_pppoe-out1
add gateway=192.168.1.1 routing-mark=to_eth1-Arnet check-gateway=ping

Observamos las marcas de conexiones y rutas en el mangle del firewall y el balanceo que se produce en connections:


Finalmente vamos a diseñar un nuevo queue tree para que actue con nuestro balanceo de carga:
marcamos los paquetes:
A diferencia de los QoS que comentamos en otros post, aqui solo marcaremos los paquetes, sin considerar las conexiones
/ip firewall mangle
add action=mark-packet chain=prerouting comment="Lista de Archivos" disabled=\
no in-interface=!eth3-LAN new-packet-mark=download-packet passthrough=no \
protocol=tcp src-address-list=download
add action=mark-packet chain=prerouting comment="ICMP (ping)" disabled=no \
new-packet-mark=interactivo passthrough=no protocol=icmp
add action=mark-packet chain=prerouting comment=DNS disabled=no \
new-packet-mark=interactivo passthrough=no protocol=tcp src-port=53
add action=mark-packet chain=postrouting disabled=no dst-port=53 \
new-packet-mark=dns_out passthrough=no protocol=tcp
add action=mark-packet chain=prerouting disabled=no new-packet-mark=\
interactivo passthrough=no protocol=udp src-port=53
add action=mark-packet chain=postrouting disabled=no dst-port=53 \
new-packet-mark=dns_out_udp passthrough=no protocol=udp
add action=mark-packet chain=prerouting comment="http Conexion" \
connection-bytes=0-500000 disabled=no new-packet-mark=http_in \
passthrough=no protocol=tcp src-port=80
add action=mark-packet chain=postrouting connection-bytes=0-500000 disabled=\
no dst-port=80 new-packet-mark=http_out passthrough=no protocol=tcp
add action=mark-packet chain=prerouting comment="http Descargas" \
connection-bytes=500000-2000000 disabled=no new-packet-mark=http_dwn \
passthrough=no protocol=tcp src-port=80
add action=mark-packet chain=prerouting comment="https conexion" \
connection-bytes=0-500000 disabled=no new-packet-mark=https_in \
passthrough=no protocol=tcp src-port=443
add action=mark-packet chain=postrouting connection-bytes=0-500000 disabled=\
no dst-port=443 new-packet-mark=https_out passthrough=no protocol=tcp
add action=mark-packet chain=prerouting comment="https Descargas" \
connection-bytes=500000-2000000 disabled=no new-packet-mark=https_dwn \
passthrough=no protocol=tcp src-port=443
add action=mark-packet chain=prerouting comment="Otras conexiones" disabled=\
no new-packet-mark=Otras_in passthrough=no
add action=mark-packet chain=postrouting disabled=no new-packet-mark=\
Otras_out passthrough=no
add action=mark-packet chain=prerouting comment="SIP and RTP" disabled=no \
dscp=46 new-packet-mark=interactivo passthrough=no
add action=mark-packet chain=prerouting comment="SIP and RTP control" \
disabled=no dscp=26 new-packet-mark=interactivo passthrough=no
add action=mark-packet chain=prerouting comment=ospf disabled=no dscp=48 \
new-packet-mark=interactivo passthrough=no protocol=ospf

Finalmente configuramos el Queue Tree:
con un parent max limit de 80% en Download_all y Upload_all
/queue tree
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=1768k name=Download-All packet-mark="" parent=global-in \
priority=1
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=400k name=Upload-All packet-mark="" parent=global-out priority=\
1
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=yes limit-at=0 \
max-limit=0 name=Descargas packet-mark=download-packet parent=global-in \
priority=8 queue=PCQ_download
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=descargas packet-mark=download-packet parent=\
Download-All priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=www-descargas packet-mark=http_dwn parent=Download-All \
priority=6 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=www-conexion packet-mark=http_in parent=Download-All \
priority=4 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=https-conexion packet-mark=https_in parent=Download-All \
priority=3 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=https-descargas packet-mark=https_dwn parent=\
Download-All priority=6 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=otras packet-mark=Otras_in parent=Download-All priority=\
7 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name="icmp (ping) Up" packet-mark=icmp parent=Upload-All \
priority=1 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=dns-Up packet-mark=dns_out parent=Upload-All priority=2 \
queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=dns_udp-Up packet-mark=dns_out_udp parent=Upload-All \
priority=2 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=www-conexion-Up packet-mark=http_out parent=Upload-All \
priority=4 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=https-Up packet-mark=https_out parent=Upload-All \
priority=4 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=yes limit-at=0 \
max-limit=0 name=otras-up packet-mark=Otras_out parent=Upload-All \
priority=7 queue=PCQ_upload
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=0 name=Interactivos packet-mark=interactivo parent=Download-All \
priority=1 queue=default

Vemos cómo quedaron el mangle del firewall y el queue tree:


Fuentes:
http://forum.mikrotik.com/

martes, 13 de noviembre de 2012

Servidor Ubuntu con interface web zentyal



Zentyal es un conjunto de modulos administrados desde una interface web que permite a profesionales TIC administrar todos los servicios de una red informática, tales como el acceso a Internet, la seguridad de la red, la compartición de recursos, la infraestructura de la red o las comunicaciones, de forma sencilla y a través de una única plataforma.
se lo puede instalar directamente desde un CD que se obtiene en la página de los desarrolladores del software o mejor aun se puede instalar un servidor ubuntu server y luego desde los repositorios de zentyal instalar las partes o modulos que necesitemos. Si bien zentyal esta pensado para usuarios con poco o nada de conocimiento en GNU/Linux y como una alternativa libre a windows Small Business Server, aqui vamos a instalar un ubuntu server y zential para, sin dejar de administrar un servidor linux desde consola, tener a mano esta interesante herramienta visual.

Bajamos e instalamos la versión 32 ó 64 de ubuntu server 12.04 LTS

http://releases.ubuntu.com/precise/

No es necesario instalar ninguno de los servicios de servidor ya que estos se irán instalando a medida que seleccionamos los modulos de zentyal. Configuramos los repositorios de zentyal junto con la llave gpg y actualizamos.
apt-get install -y python-software-properties && sudo add-apt-repository ppa:zentyal/3.0 && sudo apt-get update

Instalamos el core de zentyal
sudo apt-get install zentyal
Y a partir de aqui ya podemos empezar a usar la interface de zentyal ingresando a:
https://localhost

si no estamos físicamente en el servidor, cambiamos localhost por la IP del mismo. El usuario y clave es el mismo que usamos en nuestro servidor Ubuntu


Comenzamos la instalacion
Seleccionamos los modulos que queremos instalar
Finalmente se nos muestra en iconos la lista de modulos a instalar Y comienza la descarga e instalación de los mismos
configuramos las interfaces y con esto damos por finalizado el proceso pudiendo comenzar a utilizar esta poderosa herramienta
Referencias:
  http://trac.zentyal.org/wiki/Documentation/Community/Installation/InstallationGuide http://doc.zentyal.org/es/presentation.html
  http://www.lapipaplena.net/foro/index.php?topic=37.0

miércoles, 26 de septiembre de 2012

Mikrotik - Queue tree - QoS estático

Vamos a mejorar un poco nuestra calidad de servicio planteada en el anterior post.
En este caso utilizaremos queue tree, separamos nuestro ancho de banda en tres categorías (por el momento solo utilizaremos dos) y limitaremos las descargas de archivos a la mínima prioridad.
contamos con una conexion adsl 2Mx512 y un promedio de 300 usuarios.
nos basamos en esta guia para realizarlo.

Lo más importante, dado el escaso ancho de banda, es limitar el consumo indiscriminado por parte de usuarios que descargan archivos de todo tipo y tamaño, o de procesos en background (updates) que raramente el usuario sabe la cantidad de recursos que le "roba". Para ello establecemos tres filtros para el puerto 80 y 443:
1) navegación (hasta 500b)
2) navegación descargas (de 500-5000000)
3) y la prioridad más baja, la descarga de archivos

empezamos en la tabla mangle marcando conexiones y luego marcando los paquetes que usaran esas conexiones:


/ip firewall mangle
add action=mark-packet chain=forward comment="" disabled=no new-packet-mark=\
    download-packet passthrough=no protocol=tcp src-address-list=download
add action=mark-connection chain=prerouting comment=DNS disabled=no dst-port=\
    53 new-connection-mark=dns_conn passthrough=yes protocol=udp
add action=mark-packet chain=prerouting comment="" connection-mark=dns_conn \
    disabled=no new-packet-mark=dns passthrough=no
add action=mark-connection chain=prerouting comment=Http connection-bytes=\
    0-500000 disabled=no dst-port=80 new-connection-mark=http_conn \
    passthrough=yes protocol=tcp
add action=mark-packet chain=prerouting comment="" connection-mark=http_conn \
    disabled=no new-packet-mark=http passthrough=no
add action=mark-connection chain=prerouting comment="Http Descarga" \
    connection-bytes=500000-5000000 disabled=no dst-port=80 \
    new-connection-mark=http_conn_descarga passthrough=yes protocol=tcp
add action=mark-packet chain=prerouting comment="" connection-mark=\
    http_conn_descarga disabled=no new-packet-mark=http_descarga passthrough=\
    no
add action=mark-connection chain=prerouting comment=Https connection-bytes=\
    0-500000 disabled=no dst-port=443 new-connection-mark=https_conn \
    passthrough=yes protocol=tcp
add action=mark-packet chain=prerouting comment="" connection-mark=https_conn \
    disabled=no new-packet-mark=https passthrough=no
add action=mark-connection chain=prerouting comment="Https Descarga" \
    connection-bytes=500000-5000000 disabled=no dst-port=443 \
    new-connection-mark=https_conn_descarga passthrough=yes protocol=tcp
add action=mark-packet chain=prerouting comment="" connection-mark=\
    https_conn_descarga disabled=no new-packet-mark=https_descarga \
    passthrough=no
add action=mark-connection chain=prerouting comment=Otros disabled=no \
    new-connection-mark=otras_conn passthrough=yes
add action=mark-packet chain=prerouting comment="" connection-mark=otras_conn \
    disabled=no new-packet-mark=other passthrough=no
add action=mark-connection chain=prerouting comment="ICMP (Ping)" disabled=no \
    new-connection-mark=icmp_conn passthrough=yes protocol=icmp
add action=mark-packet chain=prerouting comment="" connection-mark=icmp_conn \
    disabled=no new-packet-mark=icmp passthrough=no


Finalmente en queue tree creamos los parent y asignamos nuestras conexiones y paquetes marcados a las colas de prioridades


/queue tree
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
    max-limit=0 name=QoS_down packet-mark="" parent=eth3-LAN priority=1 \
    queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=\
    1024000 max-limit=1768000 name=3QoS_down_Web packet-mark="" parent=\
    QoS_down priority=5 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
    max-limit=0 name=2QoS_down_Games packet-mark="" parent=QoS_down priority=\
    2 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
    max-limit=0 name=1QoS_down_VoIP packet-mark="" parent=QoS_down priority=1 \
    queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
    max-limit=0 name=QoS_up packet-mark="" parent=pppoe-out1 priority=1 \
    queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
    max-limit=0 name=1QoS_up_VoIP packet-mark="" parent=QoS_up priority=1 \
    queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
    max-limit=0 name=2QoS_up_Games packet-mark="" parent=QoS_up priority=2 \
    queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=400000 \
    max-limit=512000 name=3QoS_up_Web packet-mark="" parent=QoS_up priority=5 \
    queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
    max-limit=0 name=DNS_up packet-mark=dns parent=3QoS_up_Web priority=5 \
    queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
    max-limit=0 name=Http_up packet-mark=http parent=3QoS_up_Web priority=5 \
    queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
    max-limit=0 name=Https_up packet-mark=https parent=3QoS_up_Web priority=5 \
    queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
    max-limit=0 name=Otros_up packet-mark=other parent=3QoS_up_Web priority=6 \
    queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
    max-limit=0 name=Http_Descarga packet-mark=http_descarga parent=\
    3QoS_down_Web priority=6 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
    max-limit=0 name=DNS packet-mark=dns parent=3QoS_down_Web priority=5 \
    queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
    max-limit=0 name=Http packet-mark=http parent=3QoS_down_Web priority=5 \
    queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
    max-limit=0 name=Https packet-mark=https parent=3QoS_down_Web priority=5 \
    queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
    max-limit=0 name=Otros packet-mark=other parent=3QoS_down_Web priority=7 \
    queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
    max-limit=0 name=Https_Descarga packet-mark=https_descarga parent=\
    3QoS_down_Web priority=6 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
    max-limit=0 name=download-files packet-mark=download-packet parent=\
    3QoS_down_Web priority=7 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
    max-limit=0 name="ICMP_(Ping)_up" packet-mark=icmp parent=1QoS_up_VoIP \
    priority=1 queue=default


lunes, 10 de septiembre de 2012

Mikrotik - Limitar ancho de banda por archivos

/ip firewall filter
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.dat disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.exe disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.cab disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.msi disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.gz disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.bin disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.mp3 disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.mp4 disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.mpeg disabled=\
    no protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.zip disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.rar disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.flv disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.swf disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.deb disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.avi disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.iso disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.rm disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.wav disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.wma disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.wmv disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.bz2 disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.rmvb disabled=\
    no protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.z disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.mpg disabled=no \
    protocol=tcp src-address=192.168.0.0/24
add action=add-dst-to-address-list address-list=download \
    address-list-timeout=1h chain=forward comment="" content=.divx disabled=\
    no protocol=tcp src-address=192.168.0.0/24


/ip firewall mangle
add action=mark-packet chain=forward comment="" disabled=no new-packet-mark=\
    download-packet passthrough=no protocol=tcp src-address-list=download

/queue simple
add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s comment="" \
    direction=both disabled=no dst-address=0.0.0.0/0 interface=all limit-at=\
    64000/64000 max-limit=64000/64000 name=download-file packet-marks=\
    download-packet parent=none priority=8 queue=default-small/default-small \
    total-queue=default-small



Guia:
http://alfaqiir-net.blogspot.com.ar/2008/04/delay-pool-di-mikrotik.html

jueves, 30 de agosto de 2012

VirtualBox máquina virtual Mikrotik 5.20

Mikrotik RouterOS es un sistema operativo privativo basado en GNU Linux. A traves de una aplicación que corre bajo windows (Winbox.exe) se administra completamente el mismo. Desde la versión 5.3 incorpora "Webfig" con el que se lo puede administrar directamente desde el web browser

En esta oportunidad vamos a instalarlo en una maquina virtual sobre un sistema Linux Centos 6.2
VirtualBox es un software de virtualizacion GPL que permite crear y administrar máquinas virtuales desde la linea de comandos de linux, y ser ejecutadas en servidores sin ventanas.

Para instalar virtualBox ejecutamos lo siguiente

cd /etc/yum.repos.d/
wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo
yum update
yum install VirtualBox-4.2.i686

Luego, para compilar el modulo del kernel ejecutamos lo siguiente:
/etc/init.d/vboxdrv setup

ya estamos en condiciones de operar nuestro virtualizador. Para aprender cómo podemos leer estas ayudas:


http://hotfixed.net/2011/01/24/virtualbox-desde-la-consola/
http://www.improvisa.com/02-03-2009/virtualbox-desde-consola/
http://www.esdebian.org/wiki/creando-maquinas-virtuales-consola-servidor-virtualbox




En nuestro caso vamos a bajar la máquina virtual Mk5.20.ova

y ejecutamos:
vboxmanage import Mk5.2.ova --vsys 0 -vmname Mk5.20
con esto hemos importado en nuestro sistema la maquina con el sistema mikrotik 5.20
para verla listada:
[root@Centos62 ~]# vboxmanage list vms
"Mk5.20" {89b07fa2-07cb-4f29-94d5-e8ff89ebcec8}

vamos a cambiar la configuración de la red del mikrotik para poder ejecutarla:
vboxmanage modifyvm "Mk5.20" --nic1 bridged --bridgeadapter1 eth0
vboxmanage modifyvm "Mk5.20" --nic2 bridged --bridgeadapter2 eth3
vboxmanage startvm Mk5.20  -type headless

el primer comando crea un puente con la interface eth0 del centos, el segundo con la eth3. (fijarse la configuración del servidor para colocar el nombre eth correcto). Finalmente el tercer comando ejecuta nuestra maquina virtual y ya podemos conectarnos con el winbox.exe para definir las IP de las interfaces del mikrotik y comenzar a configurar el router/firewall

[root@Centos62 ~]# vboxmanage startvm Mk5.20  -type headless
Waiting for VM "Mk5.20" to power on...
VM "Mk5.20" has been successfully started.



https://forums.virtualbox.org/viewtopic.php?f=7&t=44337

Instalar la extensiones de virtualbox

Creamos un archivo basados en este script

[root@Centos62 ~]# vi vboxUpdate.sh 
#!/bin/bash -x
version=$(vboxmanage -v)
echo $version
var1=$(echo $version | cut -d 'r' -f 1)
echo $var1
var2=$(echo $version | cut -d 'r' -f 2)
echo $var2
file="Oracle_VM_VirtualBox_Extension_Pack-$var1-$var2.vbox-extpack"
echo $file
wget http://download.virtualbox.org/virtualbox/$var1/$file -O /tmp/$file
VBoxManage extpack install /tmp/$file --replace

lo ejecutamos:

[root@Centos62 ~]# ./vboxUpdate.sh 
Resolviendo download.virtualbox.org... 137.254.16.69
Connecting to download.virtualbox.org|137.254.16.69|:80... conectado.
Petición HTTP enviada, esperando respuesta... 302 Moved Temporarily
Localización: http://dlc.sun.com.edgesuite.net/virtualbox/4.2.0_RC3/Oracle_VM_VirtualBox_Extension_Pack-4.2.0_RC3-80444.vbox-extpack [siguiendo]
--2012-08-31 10:21:30--  http://dlc.sun.com.edgesuite.net/virtualbox/4.2.0_RC3/Oracle_VM_VirtualBox_Extension_Pack-4.2.0_RC3-80444.vbox-extpack
Resolviendo dlc.sun.com.edgesuite.net... 204.2.243.244, 204.2.243.245
Connecting to dlc.sun.com.edgesuite.net|204.2.243.244|:80... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 10829080 (10M) [application/x-virtualbox-vbox-extpack]
Saving to: `/tmp/Oracle_VM_VirtualBox_Extension_Pack-4.2.0_RC3-80444.vbox-extpack'

100%[======================================>] 10.829.080  31,2K/s   in 5m 58s  

2012-08-31 10:27:33 (29,5 KB/s) - `/tmp/Oracle_VM_VirtualBox_Extension_Pack-4.2.0_RC3-80444.vbox-extpack' saved [10829080/10829080]

+ VBoxManage extpack install /tmp/Oracle_VM_VirtualBox_Extension_Pack-4.2.0_RC3-80444.vbox-extpack --replace
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Successfully installed "Oracle VM VirtualBox Extension Pack".


miércoles, 4 de julio de 2012

QoS - WebHTB - Control de ancho de banda

http://www.webhtb.ro/features/
http://www.webhtb.ro/how-to/details/q/1/
http://www.webhtb.ro/how-to/details/q/2/

http://es.scribd.com/doc/80856181/117/D-1-Instalacion-de-la-aplicacion-WebHTB
www.linux-magazine.es/issue/52/047-049_WebHTBLM52.pdf


WebHTB es una interfaz web muy sencilla, construida en PHP, Java Script / Ajax, y trabaja con MySQL.

WebHTB es una suite de software que ayuda a simplificar el difícil proceso de asignación de ancho de banda, tanto para el tráfico de carga como descarga. Genera y comprueba los archivos de configuración y muestra  el tráfico en tiempo real para cada cliente.



QoS - Control de ancho de banda con Prometheus


http://freecode.com/projects/prometheus-qos

http://www.ecualug.org/2009/05/17/blog/razametal/limitar_ancho_de_banda_con_prometheusqos?page=1

Prometeo QoS (Quality of Service) es una herramienta orientada a ISPs para la administracion  fácil del tráfico IP. Genera múltiples clases HTB de control de tráfico con valores de techo y ajuste fino. Es compatible con NAT (asimétrica y simétrica), ofrece una buena clasificacion de paquetes (shaping) en ambos sentidos y da prioridad  tanto para cargas como descargas.


lunes, 25 de junio de 2012

SEQUREISP ¿el Mejor Software de Gestión de ISPs?


SequreISP es un software de gestión de ISP (Proveedores de Servicios de Internet).
El software permite gestionar el acceso a Internet garantizando calidad de servicio para los clientes
y maximizando la rentabilidad para el proveedor.



https://github.com/sequre/sequreisp


sequreisp

sequreisp is an ISP management software.
  • Has a really nice and powerful web interface
  • Can handle up to 3000 or more clients in a single server, thus it is oriented to small/medium ISPs
  • Can group multiple internet providers and do load balancing and failover between them (current record is 32 DSL lines balanced in a single server)
  • Supports all kind of internet providers, dedicated, DSL lines, cable-modem, etc.
  • Does a meticulous bandwidth control and traffic prioritization
    • Allows to set maximum and minimum(guaranteed) for download/upload traffic
    • Efficiently detects P2P traffic and allows to set a maximum as a percent of client’s bandwidth
    • Prioritization can be customized even to a per client basis
  • Integrates with Squid proxy to do transparent web cache(optional)
  • Has a plug-in interface, you can write your custom functionality in top of sequreisp
  • It is written in Ruby on Rails
  • And a lot more
    • Instant and historical graphs
    • Backup & restore from the web interface with a single and lightweight file
    • Port forwarding, full DNAT, and proxy ARP to clients
    • VLAN support
    • E-mail notifications
    • Role based authentication, with audit system
    • Multilingual support (currently Spanish and English, contributions are welcome)

Demo

There is an online demo of the application available
Url: http://demo.sequreisp.com/
User: admin@sequre.com.ar
Pass: 1234