Mikrotik - Cuarta Parte [ UnderTik - QoS ]

Iniciado por xyz, Marzo 28, 2017, 12:08:24 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

En esta cuarta entrega de la saga Mikrotik para Underc0de, abarcaré configuraciones para entender el porqué de un QoS, establecer dias y horas para navegar como tambien bloquear o reducir la velocidad de navegación.
Trabajando con el Firewall en la mayoría de sus prestaciones.

La configuración esta adaptada a una solución solicitada, el lector/entusiasta/administrador debe elaborar un plan antes de comenzar con QoS, algunas consideraciones y preguntas que debe realizarse son:

       
  • ¿ Qué Protocolos son los principales para el uso del sitio ?
  •    SSH / FTP / HTTP / POP3 / SMTP / DNS / RDP
  • ¿ Cúales son prioritarios ?
  • ¿ Se deben restringir descargas ?
  • ¿ Deben poder conectarse desde fuera de la empresa ?
  • ¿ Hay enlaces VPN o PTP que deban priorizarse ?

El plan a elaborar es algo que debe ser considerado como prioritario. Luego de haber agotado todas las preguntas y situaciones, proceda a realizar las configuraciones necesarias.
Concluida esa etapa, procedere a mostrar el resultado final de las configuraciones con scripts de ejemplo.

QoS - Configuraciones y Resultados

La siguiente imagen tiene por objetivo mostrar el trabajo de parametrización.

Debe establecer un PCQ-DOWN con el total del ancho de banda asignado por el ISP (o estimado) donde:

       
  • Kind= PCQ (algoritmo propio de Mikrotik para Colas)
  • Rate= Velocidad máxima de bajada
  • Classifier= Dst. Address

Debe establecer un PCQ-UP con el total del ancho de banda asignado por el ISP (o estimado) donde:

       
  • Kind= PCQ (algoritmo propio de Mikrotik para Colas)
  • Rate= Velocidad máxima de subida
  • Classifier= Src. Address



Al establecer un Tipo de colas mediante PCQ, debe tener especial cuidado ya que en las proximas configuraciones  utilizará éstos parametros.

Luego, debe proceder a configurar y setear los paramtros en Firewall --> Mangle la siguente imagen muestra como quedará con el código correspondiente.
Por lo general primero se marca la conexión luego el paquete, depende el servicio y rendimiento que se quiera ofrecer ya que hay protocolos que es mejor dejar fuera de un QoS


Código: php

/ip firewall mangle
add action=mark-packet chain=output comment=":: DNS" connection-state=new \
    dst-port=53 new-packet-mark=DNS_PACKET out-interface=pppoe-out1 protocol=\
    udp
add action=mark-packet chain=output dst-port=53 new-packet-mark=dns-tcp \
    out-interface=pppoe-out1 protocol=tcp
add action=mark-connection chain=forward comment="PPTP - VPN" \
    connection-state=new dst-port=1723 new-connection-mark=PPTP protocol=tcp \
    src-address="Segmento LAN en forma x.y.z.r/mascara en bits"
add action=mark-packet chain=forward connection-mark=PPTP new-packet-mark=\
    pptp-tcp passthrough=no
add action=mark-connection chain=forward connection-state=new \
    new-connection-mark=PPTP-gre protocol=gre src-address="Segmento LAN en forma x.y.z.r/mascara en bits"
add action=mark-packet chain=forward connection-mark=PPTP-gre \
    new-packet-mark=Pptp-Up passthrough=no
add action=mark-connection chain=forward comment="Correos Electr\F3nicos" \
    connection-state=new dst-port=25,110,143,465,993,995 new-connection-mark=\
    CORREO protocol=tcp src-address="Segmento LAN en forma x.y.z.r/mascara en bits"
add action=mark-packet chain=forward connection-mark=CORREO new-packet-mark=\
    Correo-PKT passthrough=no
add action=mark-connection chain=forward comment=":: FTP" connection-state=\
    new dst-port=21 new-connection-mark=FTP protocol=tcp src-address=\
    "Segmento LAN en forma x.y.z.r/mascara en bits"
add action=mark-packet chain=forward connection-mark=FTP new-packet-mark=\
    Ftp-PKT passthrough=no
add action=mark-connection chain=forward comment=RDP connection-state=new \
    dst-port=3389 new-connection-mark=RDP protocol=tcp
add action=mark-packet chain=forward connection-mark=RDP new-packet-mark=\
    Rdp-PKT passthrough=no
add action=mark-connection chain=forward comment=RTSP connection-state=new \
    dst-port=554 new-connection-mark=rtsp protocol=tcp
add action=mark-packet chain=forward connection-mark=rtsp new-packet-mark=\
    Rtsp-PKT passthrough=no
add action=mark-connection chain=prerouting comment="Web Proxy" dst-port=80 \
    new-connection-mark=webproxy protocol=tcp src-address="Segmento LAN en forma x.y.z.r/mascara en bits"
add action=mark-packet chain=prerouting connection-mark=webproxy \
    new-packet-mark=webproxy-pkt passthrough=no
add action=mark-connection chain=forward comment="Conexion HTTP" \
    connection-state=new dst-port=443,8080 new-connection-mark=Web protocol=\
    tcp src-address="Segmento LAN en forma x.y.z.r/mascara en bits"
add action=mark-connection chain=forward connection-state=new dst-port=\
    443,8080 new-connection-mark=WEB-UDP protocol=udp src-address=\
    "Segmento LAN en forma x.y.z.r/mascara en bits"
add action=mark-packet chain=forward comment=WEB connection-mark=Web \
    new-packet-mark=Web-PKT passthrough=no
add action=mark-packet chain=forward connection-mark=WEB-UDP new-packet-mark=\
    WEB-UDP-PKT passthrough=no
add action=mark-connection chain=forward comment=WhatsApp connection-state=\
    new dst-port=5222,5228 new-connection-mark=WHATSAPP protocol=tcp \
    src-address="Segmento LAN en forma x.y.z.r/mascara en bits"
add action=mark-packet chain=forward connection-mark=WHATSAPP \
    new-packet-mark=Ws-pkt passthrough=no
add action=mark-connection chain=forward comment=Otros connection-state=new \
    new-connection-mark=Otros protocol=tcp src-address="Segmento LAN en forma x.y.z.r/mascara en bits"
add action=mark-connection chain=forward connection-state=new \
    new-connection-mark=OTROS-UDP protocol=udp src-address="Segmento LAN en forma x.y.z.r/mascara en bits"
add action=mark-packet chain=forward connection-mark=Otros new-packet-mark=\
    Otros-PKT passthrough=no
add action=mark-packet chain=forward connection-mark=OTROS-UDP \
    new-packet-mark=OTROS-UDP-PKT passthrough=no
add action=mark-connection chain=forward comment="ALL P2P" \
    new-connection-mark=P2P_ p2p=all-p2p protocol=tcp src-address=\
    "Segmento LAN en forma x.y.z.r/mascara en bits"
add action=mark-packet chain=forward connection-mark=P2P_ new-packet-mark=\
    p2p-PKT passthrough=no


Los SRC-ADDRESS van sin comillas dobles, solo el segmento con su mascara correspondiente en bits

A continuación, debe ir a Queue --> Queue Tree la imagen siguiente muestra el resultado final y debajo el script correspondiente.


Código: php


/queue tree
add name=Download parent=Eth2-Wan priority=1 queue=pcq-DOWN
add name=Upload parent=Eth1-WAN priority=1 queue=pcq-UP
add name="P\E1ginas-Web-Down" parent=Download priority=5 queue=default
add name=Correos-D packet-mark=Correo-PKT parent=Download priority=1 queue=\
    pcq-DOWN
add name=Navegar-D packet-mark=Web-PKT parent="P\E1ginas-Web-Down" queue=\
    pcq-DOWN
add name=Rdp-D packet-mark=Rdp-PKT parent=Download priority=2 queue=pcq-DOWN
add name=Otros-D packet-mark=Otros-PKT parent=Download queue=pcq-DOWN
add name=Ftp-D packet-mark=Ftp-PKT parent=Download priority=2 queue=pcq-DOWN
add name=pptp-D packet-mark=Pptp-Down parent=Download priority=3 queue=\
    pcq-DOWN
add limit-at=1024k max-limit=1040k name=p2p-Down packet-mark=p2p-PKT parent=\
    Download queue=pcq-DOWN
add name="P\E1ginas-Web-Up" parent=Upload priority=5 queue=default
add limit-at=400k max-limit=500k name=Navegar-U packet-mark=Web-PKT parent=\
    "P\E1ginas-Web-Up" queue=pcq-UP
add name=Correos-U packet-mark=Correo-PKT parent=Upload priority=1 queue=\
    pcq-UP
add name=Otros-U packet-mark=Otros-PKT parent=Upload queue=pcq-UP
add limit-at=412k max-limit=512k name=Ftp-Up packet-mark=Ftp-PKT parent=\
    Upload priority=2 queue=pcq-UP
add name=Rdp-U packet-mark=Rdp-PKT parent=Upload priority=2 queue=pcq-UP
add name=pptp-up packet-mark=Pptp-Up parent=Upload priority=3 queue=pcq-UP
add name=Rtsp-Down packet-mark=Rtsp-PKT parent=Download priority=4 queue=\
    pcq-DOWN
add name=Rtsp-Up packet-mark=Rtsp-PKT parent=Upload priority=4 queue=pcq-UP
add name=Navegar-Udp packet-mark=WEB-UDP-PKT parent="P\E1ginas-Web-Down" \
    priority=5 queue=pcq-DOWN
add name=Navegar-Udp-D packet-mark=WEB-UDP-PKT parent="P\E1ginas-Web-Up" \
    priority=4 queue=pcq-UP



Estas configuraciones permiten establecer un plan de QoS mediante la priorización de protocolos.
La siguiente imagen muestra las conexiones establecidas desde el interior de la red e informa las marcas de paquetes que se están utilizando.



Colas Simples para uso Horario Laboral

En anteriores entregas ha visto que las parametrizaciones permiten establecer franjas de horas para trabajar, ejemplificando:

  • De 08:00 a 12:00 --> Velocidad Máxima Download/Upload
  • De 12:01 a 13:00 --> Velocidad media de Download/Upload
  • De 13:01 a 17:59 --> Velocidad Máxima de Download/upload
  • De 18:00 a 07:50 --> Velocidad mínima de Download/Upload

La siguiente imagen y correspondiente código son el ejemplo.



Código: php

/queue simple
add comment="[HORARIO] 01:00 a 07:59" max-limit=10k/10k name=\
    Horario-Laboral-4 queue=pcq-UP/pcq-DOWN target="Segmento LAN en forma x.y.z.r/mascara en bits" time=\
    1s-7h59m,mon,tue,wed,thu,fri
add comment="[HORARIO] 08:00 a 13:00" limit-at=400k/5M max-limit=512k/7M \
    name=Horario-Laboral priority=4/4 queue=pcq-UP/pcq-DOWN target=\
    "Segmento LAN en forma x.y.z.r/mascara en bits" time=8h-13h,mon,tue,wed,thu,fri total-queue=default
add comment="[HORARIO] 12:01 a 13:59" max-limit=10k/10k name=\
    "[ HORARIO ] Medio dia" parent=Horario-Laboral-4 priority=4/4 queue=\
    pcq-UP/pcq-DOWN target="Segmento LAN en forma x.y.z.r/mascara en bits" time=\
    12h1m-13h59m59s,mon,tue,wed,thu,fri
add comment="[HORARIO] 14:00 a 18:00" limit-at=400k/5M max-limit=512k/7M \
    name=Horario-Laboral2 priority=4/4 queue=pcq-UP/pcq-DOWN target=\
    "Segmento LAN en forma x.y.z.r/mascara en bits" time=14h-18h,mon,tue,wed,thu,fri total-queue=default
add comment="[ HORARIO ] 18:01 a 00:00" max-limit=512k/1M name=\
    Horario-Laboral3 queue=pcq-UP/pcq-DOWN target="Segmento LAN en forma x.y.z.r/mascara en bits" time=\
    18h30m-23h59m,mon,tue,wed,thu,fri total-queue=default


\\ ==>> FIN <<== //

Gracias por tomarse el tiempo en leer el post y a la comunidad de UNDERC0DE por brindarme el espacio.

Aclaración: Aún falta la última entrega de la saga....