Добър ден на всички!
Този път реших да опиша ситуация, която изглежда не е особено описана в интернет, въпреки че има някои намеци за нея, но по-голямата част от информацията идва от продължително и методично разглеждане на кода и вики страницата на Mikrotik.
По същество задачата е: да реализираме управление на няколко устройства чрез SMS, за примера с включване и изключване на портове.
Има:
- Вторичен маршрутизатор CRS317-1G-16S+
- Точка за достъп Mikrotik NETMETAL 5
- LTE модем R11e-LTE
Започваме с това, че чудесната точка за достъп Netmetal 5 разполага с инсталиран слот за SIM карта и порт за инсталиране на LTE модем. Затова за тази точка беше закупен по същество най-добрият модем, който беше наличен и поддържан от операционната система на точката, а именно R11e-LTE. Точката беше разглобена, всичко беше монтирано на място (въпреки че трябва да знаете, че SIM картата е разположена под модема и без свалянето на основната платка не може да бъде извадена), затова проверете SIM картата за работоспособност, в противен случай ще трябва да разглобявате точката за достъп няколко пъти.
След това пробихме няколко отвора в корпуса, инсталирахме 2 пигтейла и закрепихме краищата на модема. За съжаление, снимки от процеса не бяха запазени. От друга страна, на пигтейлите бяха закрепени универсални антени с магнитно основа.
Основните етапи на настройката са описани в интернет доста добре, освен малките грешки в взаимодействието. Например, модемът спира да получава SMS съобщения, когато постъпят 5 съобщения и те остават в Inbox; почистването на съобщенията и рестартирането на модема не винаги решават проблема. Но в версия 6.44.1 приемането на съобщения работи по-стабилно. В Inbox се показват 4 последни SMS, а останалите автоматично се изтриват и не пречат на функционирането.
Основната цел на експеримента е да се изключват и включват интерфейси на два маршрутизатора в една физическа мрежа. Основната трудност беше, че Mikrotik не поддържа управление чрез SNMP и позволява само четене на стойности. Затова трябваше да се насочим към друг подход, а именно Mikrotik API.
Ясна документация за управлението няма, затова трябваше да експериментираме и за бъдещи опити направихме това ръководство.
За управлението на няколко устройства ще е необходим достъпен и работещ уеб сървър в локалната мрежа, на който ще се възлага управлението по командите на Mikrotik.
1. На Netmetal 5 трябва да се създадат няколко скрипта за активиране и деактивиране съответно
system script
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. Да се създадат 2 скрипта на уеб сървър (разбира се, php трябва да бъде инсталиран в системата):
debug=true;
if ($API->connect('IP на управлявания Mikrotik', 'логин на администратора', 'парола на администратора')) {
$API->comm("\/interface\/ethernet\/enable", array(
"numbers"=>"sfp-sfpplus16",));
}
$API->disconnect();
?>
debug=true;
if ($API->connect('IP на управлявания Mikrotik', 'логин на администратора', 'парола на администратора')) {
$API->comm("\/interface\/ethernet\/disable", array(
"numbers"=>"sfp-sfpplus16",));
}
$API->disconnect();
?>
3. Изтеглете routeros_api.class.php от форума Mikrotik и го поставете в достъпен каталог на сървър.
вместо sfp-sfpplus16 трябва да се посочи името на деактивирания/активирания интерфейс.
Сега при изпращане на съобщение на номер във формата
:cmd СЕКРЕТНИКОД script enableiface
или
:cmd СЕКРЕТНИКОД script disableiface
NETMETAL ще стартира съответния скрипт, а той от своя страна ще изпълни командата на уеб сървъра.
Скоростта на изпълнение на операциите при получаване на sms е част от секундата. Работи стабилно.
Освен това има функционалност за изпращане на SMS на телефоните от системата за мониторинг Zabbix и за отваряне на резервна изходна точка в интернет при падане на оптиката. Може би това излиза извън обхвата на тази статия, но ще кажа веднага, че при изпращане на sms дължината им трябва да бъде в рамките на стандартния размер на едно съобщение, тъй като Mikrotik не ги разделя на части, а при получаване на дълго съобщение просто не го изпраща, освен това трябва да се филтрират знаците, предавани в съобщенията, в противен случай смс-ът няма да бъде изпратен.
Източник: habr.com
