[RouterOS] leiniercs-renovarConcesionesDHCP-0.5

 Leinier Cruz Salfran     13/Feb/2019
DHCP, IPv4, Mikrotik, Recetas, RouterOS


Tabla de contenidos

Introducción

Esta receta trata sobre el mecanismo a implementar para renovar, de forma automática, las concesiones DHCP de todas las interfaces inalámbricas en ejecución cuyo modo de operación sea estación, en nuestro RouterOS. Con ello lograremos que no se pause el flujo de transmisión de datos en el enlace inalámbrico establecido a puntos de acceso que liberan las direcciones IP de los dispositivos clientes que no transmiten datos durante determinado tiempo.

Procedimiento de instalación

Se utilizará Winbox para implementar esta receta en nuestro RouterOS. Lo primero que se debe hacer es iniciar sesión, una vez completado este paso, procedemos a la implementación.

WinBox

  1. Abrir la ventana System->Scripts
  2. Crear un nuevo guión
  3. Asignar el nombre leiniercs-renovarConcesionesDHCP-0.5
  4. Establecer permisos de lectura y escritura
  5. Pegar todo el texto del guión en el campo Source
  6. Guardar los cambios
  7. Abrir System->Scheduler
  8. Crear una nueva planificación
  9. Asignar el nombre leiniercs-renovarConcesionesDHCP-0.5
  10. Asignar la fecha de incio a Jan/01/1970
  11. Asignar la hora de incio a 00:00:00
  12. Especificar el intervalo a 00:01:00
  13. Establecer permisos de lectura y escritura
  14. Escribir en el campo Evento:
    /system script run leiniercs-renovarConcesionesDHCP-0.5

Guión

# Fecha: 13-feb-2019 11:54 am
# Autor: Leinier Cruz Salfran <leiniercs@gmail.com>
# Nombre: renovarConcesionesDHCP
# Version: 0.5
# Licencia: GPLv3
# Grupo en Telegram: https://t.me/ccari_grupo
#
# Como instalar:
#   - Pegar todo el texto de este archivo en un nuevo guion con las siguientes
#     caracteristicas:
#     * Nombre: leiniercs-renovarConcesionesDHCP-0.5
#     * Permisos: lectura, escritura
#   - Crear una planificacion con las siguientes caracteristicas:
#     * Nombre: leiniercs-renovarConcesionesDHCP-0.5
#     * Fecha de inicio: Jan/01/1970
#     * Hora de inicio: 00:00:00
#     * Intervalo: 00:01:00
#     * Permisos: lectura, escritura
#     * Evento: /system script run leiniercs-renovarConcesionesDHCP-0.5
#
# Logica:
#   Forzar la recuperacion/renovacion de la concesion DHCP de todas las interfaces inalambricas
#   en modo estacion tomando en consideracion de su ratio de transmision.
#

##
# Variables no modificables para uso en el guion
#
:local nombreInterfaz
:local rxRate

:foreach interfazInalambrica in=[/interface wireless find where (mode=station || mode=station-bridge || mode=station-pseudobridge || mode=station-pseudobridge-clone || mode=station-wds) && running=yes && disabled=no] do={
  :set nombreInterfaz [/interface wireless get $interfazInalambrica name]

  do {
    :set rxRate [/interface wireless registration-table get [find interface="$nombreInterfaz"] rx-rate]

    :if ($rxRate = "---") do={
      /ip dhcp-client release [find interface="$nombreInterfaz" disabled=no]
    } else={
      /ip dhcp-client renew [find interface="$nombreInterfaz" disabled=no]
    }
  } on-error { }
}