готовые скрипты для mikrotik
Полезные скрипты для MikroTik RouterOS
Перезагрузка роутера, при зигрузке CPU
Копирование и применение последней актуальной понфигурации
То есть забираем по FTP lastconfig.backup и восстанавливаемся с него. FTP пользователь должен быть настроен, желательно с ограничением доступа по IP. Обратите внимание, что к FTP подключаемся по IP-адресу локального физического интерфейса, который доступен только между роутерами.
Этот скрипт ставим в планировщик на несколько минут позже выполнения скрипта резервного копирования.
И последний скрипт — применение настроек на резервном сервере. В нем также используется МАС для идентификации роутера.
Здесь меняем имя роутера, ip-адрес LAN-интерфейса и приоритет VRRP на меньший, чтобы роутер сделать слейвом. Запуск этого скрипта нужно поставить в автозагрузку. Изменения будут происходить на резервном сервере после копирования и применения последней актуальной конфигурации.
Резервное копирование
Проверка статуса роутера и выключение интерфейса
Подключение к динамическим серверам или сервисам, на примере pptp-соединения
Проверка синтаксиса скрипта
Настройка на 2 провайдера:
Блокировка трафика по времени:
Если нужно запретить трафик по времени ночью, скажем с 22:00 до 10:00 утра:
0) Стандартный способ – использовать два правила с временными промежутками 22:00:00-23:59:59 и 00:00:00-10:00:00
1) Использовать через запрет – Где-то в конце есть правило, которое запрещает, а конкретным правилом разрешать.
2) Использовать шедулер –
также создаём правило в файрволе, но не указываем конкретное время –
Mikrotik
Полезные скрипты и полезности для роутеров Mikrotik
Подключение Mikrotik как клиента к Centos 6 (Strongswan) IKEv2
В прошлой статье мы настраивали сервер Strongswan на Centos 6. Вот если с подключением с телефона проблем нет, то с подключением Mikrotik как клиента, вызывает определённые вопросы. Помимо самого подключения, я столкнулся с проблемой работы yandex почты и передачи файлов через SmartFTP, другие сайты и всё остальное работало нормально. Как победить этот недуг, я расскажу ниже. Купить виртуалку под VPN …
Проброс локального порта Mikrotik на Centos 6 через l2tp
С пробросом локального порта на внешний белый ip адрес роутера Mikrotik, это вполне решаемая задача. Но что делатьл если необходимо пробросить локальный порт на сервер Centos через l2tp соединение. Ведь по умолчанию Mikrotik будет отдавать пакеты через дефолтный шлюз.Зачем пробрасывать порт?Например, у нас есть подключение к сети интернет с серым ip адресом и нам необходимо предоставить серверу на Centos подключаться …
MikroTik. Правильный dst nat при использовании 2-х и более провайдеров
Приступая к выполнению задачи я рассчитывал на легкую прогулку в тени дубового парка, созерцая природу и предаваясь размышлениям… Однако позже стало понятно, что это будет тернистый и сложный поход сквозь горные реки с подводными камнями, обледеневшими скалами и глубокими пещерами. Через медитации, борьбу со стихиями и собственной тупостью преодоление себя я, все таки, достиг желанной нирваны. В этой статье я не только …
Отправка уведомлений из Mikrotik RouterOS прямо на мобильный при помощи Telegram
Хотелось поговорить об альтернативе классическим SMS-уведомлениям. В частности, о варианте с отправкой Push-уведомлений прямо на смартфон, планшет или даже ПК (PC, Mac, macOS, Linux). Все это без использования платных сервисов-посредников с минимальными затратами времени. В данном варианте реализации речь пойдет о сервисе Telegram у которого есть удобный API для управления ботами. Начинаем работу с Telegram Первым делом качаем официальное мобильное …
Готовые скрипты для mikrotik
RouterOS is the operating system developed by MikroTik for networking tasks. This repository holds a number of scripts to manage RouterOS devices or extend their functionality.
Use at your own risk, pay attention to license and warranty!
Latest version of the scripts require recent RouterOS to function properly. Make sure to install latest updates before you begin.
Specific scripts may require even newer RouterOS version.
Want to see it in action? I’ve had a presentation Repository based RouterOS script distribution including demonstation recorded live at MUM Europe 2019 in Vienna.
Be warned! Some details changed. So see the presentation, then follow the steps below for up-to-date commands.
The long way in detail
The update script does server certificate verification, so first step is to download the certificates. If you intend to download the scripts from a different location (for example from github.com) install the corresponding certificate chain.
Note that the commands above do not verify server certificate, so if you want to be safe download with your workstations’s browser and transfer the files to your MikroTik device.
Then we import the certificates.
For basic verification we rename the certificates and print their count. Make sure the certificate count is two.
Always make sure there are no certificates installed you do not know or want!
All following commands will verify the server certificate. For validity the certificate’s lifetime is checked with local time, so make sure the device’s date and time is set correctly!
Now let’s download the main scripts and add them in configuration on the fly.
And finally load configuration and functions and add the scheduler.
The last step is optional: Add this scheduler only if you want the scripts to be updated automatically!
Scheduler and events
Some events can run a script. If you want your DHCP hostnames to be available in DNS use dhcp-to-dns with the events from dhcp server. For a regular cleanup add a scheduler entry.
There’s much more to explore. Have fun!
Patches, issues and whishlist
Feel free to contact me via e-mail or open an issue at github.
This project is developed in private spare time and usage is free of charge for you. If you like the scripts and think this is of value for you or your business please consider to donate with PayPal.
Thanks a lot for your support!
License and warranty
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
root@unix.ck.ua:/#
Делаем бекап конфигов микрота и отправляем на удаленный FTP сервер:
<
local username «никнейм»
#ftp account
local ftphost «имя сервера»
local ftpuser «логин»
local ftppassword «пароль»
local ftppath «/pub/mikrotik»
Бекап по частям
Микротик1 (экспорт):
Добавляем автоматически 254 маршрута:
Указываем мост одной командой для всех интерфейсов:
Меняем MAC на интерфейсе на свой:
:global ispgw [ ip dhcp-client get [ / ip dhcp-client find interface =ether1-gateway ] gateway ] ;
:global ispgwstat [ ip route get [ / ip route find comment = «ISP1» ] gateway ] ;
#:log info («$ispgw» )
#:log info («$ispgwstat» )
Если через PPPOE соединение некоторые сайты не открываются.
Необходимо сделать изменения в Firewall > Mangle.
Удалить динамические правила change MSS all ppp.
Добавить правило:
Локальное перенаправление портов:
Прикручиваем клиент DDNS сервиса no-ip.org #2
:local NOIPUser «логин_ноип»
:local NOIPPass «пароль_ноип»
:local WANInter «интерфейс_в_инет»
Дописать текст в файл:
Проверка средней скорости интернет и запись в log файл:
:local txAvg 0
:local rxAvg 0
Цвет лога:
Проверка баланса, оператор Life (автор AHouse):
Скрипт проверяет смену IP домена DDNS и меняет IP в поле «Host:» NetWatch
:global dnshostname «alik.no-ip.org»
Сброс повисших сессий на порту 5060:
Реконект активного соединения ppp:
Комментарии:
/tool sms set receive-enabled=yes
:delay 30s
:local InBoxSMSArray [:toarray [/tool sms inbox find]]
:foreach CurrentSMS in=$InBoxSMSArray do=<
Скрипт простой, но провозился несколько часиков.
Писать скрипты для Mikrotik RouterOS — это просто
блокировать все TCP соединения на порт 80 по адресу example.com
блокировать все TCP соединения на порт 80 по любому адресу из списка с именем DenyThis
Текст скрипта нужно добавить в репозиторий скриптов, находящийся в разделе /system scripts.
Скрипт выполняется построчно. Каждая строка имеет следующий синтаксис:
[prefix] — «:» — для глобальных комманд, с символа «/» начинается командная строка, которая будет выполняться относительно корня конфигурации, префикс может отсутствовать, тогда командная строка выполняется относительно текущего раздела конфигурации;
[path] — путь до требуемого раздела конфигурации, по которому происходит переход перед выполнением команды;
command — непосредственно действие, выполняемое командной строкой;
[uparam] — безымянный параметр команды;
[param=[value]] — именованные параметры и их значения.
Итак, первым делом, определим параметры работы скрипта в виде переменных. Переменная объявляется командами :local и :global, соответственно получаем локальную переменную, доступную только внутри своей зоны видимости, или глобальную, которая добавляется в список переменных окружения ОС и будет доступна откуда угодно. Локальные переменные живут, пока выполняется их зона видимости, глобальные — пока мы не удалим их.
Переменная DNSList содержит массив доменов, с которым мы хотим работать. Переменная ListName содержит строку, которой будет называться полученный address-list. Переменная DNSServers — содержит массив адресов DNS-серверов, прописанных на роутере или полученных от провайдера при подключении, плюс «восьмёрки» на случай, если на роутере не используется служба DNS, который будет использоваться для получения информации о записях доменов.
В цикле «для каждого» обойдём массив доменов и отрезолвим их IP-адреса на каждом DNS-сервере на случай, если разные DNS отдают разные IP. Конструкцияслужит для отлова runtime-ошибок. Если не использовать её, то скрипт может прервётся при ошибке резолва несуществующего или ошибочного адреса.
перейдём в раздел конфигурации /ip dns cahe all. Там содержатся DNS-кэш роутера в виде таблицы Name — Type — Data — TTL. Выполним отбор по типу — нам требуются только A-записи. И результат отбора обойдём в цикле «для каждого». Это и будет главным циклом нашего скрипта.
Создадим переменные, обновляемые в каждом цикле: два флага — bNew, исключающий дублирования, match, показывающий, входит ли текущая запись кэша в наш список доменов; переменная cacheName содержит поле Name текущей записи кэша, то есть домен.
Обойдём список доменов и для каждого проверим, содержится ли в строке cacheName подстрока в виде домена из этого списка.
Если содержится, установим значение флага match в true.
В заключающем этапе если текущий адрес требует добавления (match установлен в true), то мы его добавляем в список адресов. Коментарий к добавляемой записи будет содержать домен, к которому она относится. При этом выполняем несколько проверок. Если address-list пустой, то добавляем сразу, если что-то там есть, проверяем, нет ли там уже записи с таким IP-адресом и если нет — добавляем.
Список адресов нужно периодически обновлять. Для этого в RouterOS есть диспетчер заданий. Задание можно добавить из консоли или из графического интерфейса winbox
Сценарии работы со списком адресов не ограничиваются созданием правил в фаерволе. Поэтому приведу несколько примеров. Можно выполнять в консоли, можно добавлять мышкой в winbox’е.
Чёрный список:
Статический маршрут до данных узлов
Сбор информации о клиентах
UPD: специально по просьбе turone внёс изменения в скрипт, чтобы адреса DNS-серверов брались из системы.
UPD 24.08.2016: заметил, что в новых версиях RouterOS (начиная с 6.36) появилась возможность указывать в адрес-листах DNS-имена. Так что теперь ценность данного скрипта лишь образовательная.