¡Buen día a todos!
Esta vez decidí describir una situación que parece no estar muy bien documentada en internet, aunque hay algunas pistas al respecto; sin embargo, la mayor parte se obtuvo mediante una larga y metódica exploración del código y la wiki de Mikrotik.
La tarea es: implementar el control de varios dispositivos a través de SMS, usando como ejemplo la activación y desactivación de puertos.
Se tiene:
- Router secundario CRS317-1G-16S+
- Punto de acceso Mikrotik NETMETAL 5
- Módem LTE R11e-LTE
Empezamos con el hecho de que el maravilloso punto de acceso Netmetal 5 tiene un conector soldado para SIM y un puerto para instalar un módem LTE. Por lo tanto, para este punto se compró, en esencia, el mejor módem que estaba disponible y que era compatible con el sistema operativo del propio punto, a saber, el R11e-LTE. El punto fue desarmado, todo se instaló en su lugar (aunque hay que saber que la tarjeta SIM está ubicada debajo del módem y no se puede sacar sin quitar la placa principal), así que verifiquen que la tarjeta SIM funcione, de lo contrario tendrán que desmontar el punto de acceso varias veces.
Luego perforamos un par de agujeros en el chasis, instalamos 2 pigtails y aseguramos los extremos en el módem. Desafortunadamente, no se conservó ninguna foto del proceso. Por otro lado, fijamos antenas universales con base magnética en los pigtails.
Los pasos básicos de configuración están bastante bien documentados en internet, excepto por algunos pequeños errores de interacción. Por ejemplo, el módem deja de recibir mensajes SMS cuando llegan 5 y se quedan en la bandeja de entrada, limpiar los mensajes y reiniciar el módem no siempre resuelve el problema. Pero en la versión 6.44.1, la recepción es más estable. En la bandeja de entrada se muestran los 4 últimos SMS, los demás se borran automáticamente y no interfieren.
El objetivo principal del experimento es apagar y encender interfaces en dos enrutadores en una misma red física. La principal dificultad radicaba en que Mikrotik no soporta control a través de SNMP, solo permite leer los valores. Por lo tanto, tuvimos que explorar otra dirección, específicamente el API de Mikrotik.
No hay documentación clara sobre cómo gestionar esto, así que tuvimos que experimentar y se creó esta guía para futuros intentos.
Para controlar varios dispositivos, se necesitará un servidor WEB accesible y operativo en la red local, que tendrá la responsabilidad de gestionar mediante los comandos de Mikrotik.
1. En Netmetal 5 se necesitan hacer un par de scripts para encender y apagar respectivamente.
script del sistema
add dont-require-permissions=no name=disableiface owner=admin policy=
ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=
"\/tool fetch http:\/\/WEB_SERVER_IP\/di.php "
add dont-require-permissions=no name=enableiface owner=admin policy=
ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=
"\/tool fetch http:\/\/WEB_SERVER_IP\/en.php "
2. Crear 2 scripts en la web servidor (por supuesto, en este sistema se debe tener php instalado):
debug=true;
if ($API->connect('IP del Mikrotik administrado', 'login del administrador', 'contraseña del administrador')) {
$API->comm("\/interface\/ethernet\/enable", array(
"numbers"=>"sfp-sfpplus16",));
}
$API->disconnect();
?>
debug=true;
if ($API->connect('IP del Mikrotik administrado', 'login del administrador', 'contraseña del administrador')) {
$API->comm("\/interface\/ethernet\/disable", array(
"numbers"=>"sfp-sfpplus16",));
}
$API->disconnect();
?>
3. Descargar el archivo routeros_api.class.php del foro de Mikrotik y colocarlo en un directorio accesible en servidor.
en lugar de sfp-sfpplus16 se debe indicar el nombre de la interfaz a desactivar/activar.
Ahora, al enviar un mensaje al número en forma de
:cmd CÓDIGOSECRET0 script enableiface
o
:cmd CÓDIGOSECRET0 script disableiface
NETMETAL ejecutará el script correspondiente, y este a su vez ejecutará el comando en el servidor WEB.
La velocidad de ejecución de las operaciones al recibir el SMS es de fracciones de segundo. Funciona de manera estable.
Además, hay funcionalidad para enviar SMS a teléfonos a través del sistema de monitoreo Zabbix y abrir una conexión a Internet de reserva en caso de caída de la fibra óptica. Quizás esto excede el alcance de este artículo, pero debo decir que al enviar SMS, su longitud debe ajustarse al tamaño estándar de un solo mensaje, ya que Mikrotik no los divide y al recibir un mensaje largo, simplemente no lo envía. Además, se deben filtrar los caracteres transmitidos en los mensajes, de lo contrario, el SMS no se enviará.
Fuente: habr.com
