Маршрутизаторы MikroTik

Smartecs

Админ
14.12.2018
84
428
115
Устройство
Huawei P30 Pro
Маршрутизаторы MikroTik - Обсуждение
800px-Mikrotik_logo.svg.png

Mikrotīkls Ltd (торговая марка MikroTik; читается «Микротик», в переводе с латышского "маленькая сеть"(mikro tīkls) — Латвийский производитель компьютерного сетевого оборудования. MikroTik разрабатывает, устанавливает и продает проводные и беспроводные маршрутизаторы, операционные системы к ним и сопутствующее оборудование. Компания была основана в 1995 году с целью продажи оборудования на развивающихся рынках. В 2007 году в компании работало более 70 сотрудников.
RouterBOARD — аппаратная платформа от MikroTik, представляющая собой линейку маршрутизаторов под управлением операционной системы RouterOS. Различные варианты RouterBOARD платформ позволяют решать на их основе различные варианты сетевых задач: от простой беспроводной точки доступа и управляемого коммутатора до мощного маршрутизатора с брандмауэром и QoS. Практически все модели RouterBOARD устройств питаются с помощью PoE, хотя и имеют разъем для подключения внешнего источника питания. Модели, предназначенные для работы с беспроводными технологиями, имеют слот (miniPCI) для подключения радиомодулей. Большинство моделей также имеет разъем для подключения к COM-порту ПК. В бюджетных моделях или в зависимости от конкретного предназначения модели, те или иные элементы могут отсутствовать.
RouterOS Одним из продуктов MikroTik является RouterOS - сетевая операционная система на базе Linux. Данная операционная система предназначена для установки на аппаратные маршрутизаторы Mikrotik RouterBoard. Также данная система может быть установлена на ПК, превращая его в маршрутизатор, предоставляющий такие услуги, как правила брандмауэра, VPN сервер и клиент, формирование качественной пропускной способности, беспроводную точку доступа и другие часто используемые функции маршрутизации и подключения сетей. Система также может служить в качестве Captive-портала на основе системы беспроводного доступа. RouterOS поддерживает множество сервисов, которые могут быть использованы средним или крупным провайдером - например OSPF, BGP, VPLS/MPLS. RouterOS это универсальная система, и очень хорошо поддерживается Mikrotik, как в рамках форума и предоставления различных Wiki-материалов, так и тематических примеров конфигураций.
Программное обеспечение обеспечивает поддержку практически всех сетевых интерфейсов на ядре Linux 2.6.16, кроме беспроводных, где Atheros и Prism являются единственными поддерживаемыми чипсетами (по состоянию RouterOS версии 3.x). Mikrotik также работает над модернизацией программного обеспечения, которая обеспечит полную совместимость между сервисами Mikrotik и новыми сетевыми разработками, такими как IPv6.
Официальная вики:

 
  • Спасибо
Благодарности: zhyk_magadan

Smartecs

Админ
14.12.2018
84
428
115
Устройство
Huawei P30 Pro
Скрипт для автоматического обновления ПО роутера.
Скрипт проверяет наличие обновлений, если обновление есть, то перед прошивкой присылает оповещение на почту с информацией о новой версии, полным бекапом и выгрузкой конфиг файла во вложении.
После установки RouterOS, скрипт обновляет прошивку (загрузчик?) RouterBoard и затем снова перезагружает микротик.
В финале вы получаете второе письмо (примерно через пару минут) с информацией о том что обновление установлено.

Скрипт следуюет прописать в планировщик и запускать его например раз в день, в удобное для вас время.

Важно! Имя скрипта должно быть следующим: firmware-updater
Для отправки оповещений на почту укажите необходимые параметры в Tools > Email, или отключите оповещения в скрипте (переменная emailEnabled)
Код:
# Script name: firmware-updater

########## Set variables
## Notification e-mail
:local emailEnabled true
:local emailAddress "Ваш адрес для информирования"
:local sendBackupToEmail true
##########
## https://github.com/beeyev/mikrotik/
##########


## !!!! DO NOT CHANGE ANYTHING BELOW THIS LINE !!!! ##

:global beeUpdateStep;

## Check for update
/system package update
set channel=stable
check-for-updates

## Wait on slow connections
:delay 15s;

## First step, check for new updates
:if ([:len $beeUpdateStep] = 0 && [get installed-version] != [get latest-version]) do={
    ## New version of RouterOS available, let's upgrade
    :log info ("Upgrading RouterOS on router $[/system identity get name], board name: $[/system resource get board-name], serial number: $[/system routerboard get serial-number] | From $[/system package update get installed-version] to $[/system package update get latest-version] (channel:$[/system package update get channel])") 

    :if ($emailEnabled = true) do={
        :local attachments;
    
        :if ($sendBackupToEmail = true) do={
            ## date and time in format: 2018aug06-215139
            :local dtame ([:pick [/system clock get date] 7 11] . [:pick [/system clock get date] 0 3] . [:pick [/system clock get date] 4 6] . "-" . [:pick [/system clock get time] 0 2] . [:pick [/system clock get time] 3 5] . [:pick [/system clock get time] 6 8]);
            ## unified backup file name without extension
            :local bname "$[/system identity get name].$[/system routerboard get serial-number].v$[/system package update get installed-version]_$dtame"
            :local sysFileBackup "$bname.backup"
            :local configFileBackup "$bname.rsc"
            :set attachments {$sysFileBackup;$configFileBackup}

            ## Make system backup
            /system backup save dont-encrypt=yes name=$bname
            ## Export config file
            /export compact file=$bname

            ## Wait until bakup is done
            :delay 15s;
        }
    
        /tool e-mail send to=$emailAddress subject="Upgrade router: $[/system identity get name] FW has been started" body="Upgrading RouterOS on router $[/system identity get name] from $[/system package update get installed-version] to $[/system package update get latest-version] \r\nYou will recieve final report with detailed information when upgrade process is finished. If you have not got second email in next 5 minutes, then probably something went wrong." file=$attachments
    
        ## Wait for mail to be send & upgrade
        :delay 15s;
    
        ## Remove backups which we have already sent
        :if ($sendBackupToEmail = true && [/tool e-mail get last-status] = "succeeded") do={
            /file remove $attachments;
        }
    }


    ## Set scheduled task to upgrade routerboard firmware on the next boot, task will be deleted when upgrade is done. (That is why you should keep original script name)
    /system schedule add name=BEE-UPGRADE-NEXT-BOOT on-event=":global beeUpdateStep \"routerboardUpgrade\"; :delay 1s; /system script run firmware-updater;" start-time=startup interval=0

    ## "install" command is reincarnation of the "upgrade" command - doing exactly the same but under a different name
    install
}

## Second step (after first reboot) routerboard firmware upgrade
:if ( $beeUpdateStep = "routerboardUpgrade") do={

    ## Remove global variable for this step
    /system script environment remove beeUpdateStep;
    ## Remove task because we need it just once, right after reboot next to RouterOS install
    /system scheduler remove BEE-UPGRADE-NEXT-BOOT

    ## RouterOS latest, let's check for updated firmware
    /system routerboard

    :if ( [get current-firmware] != [get upgrade-firmware]) do={        
        ## New version of firmware available, let's upgrade
        :log info ("Upgrading firmware on router $[/system identity get name], board name: $[/system resource get board-name], serial number: $[/system routerboard get serial-number] | From $[/system routerboard get current-firmware] to $[/system routerboard get upgrade-firmware]")
        
        ## Start the upgrading process
        upgrade
    
        ## Wait until the upgrade is finished
        :delay 60s;
    
        ## Set scheduled task to send final report on the next boot, task will be deleted when is is done. (That is why you should keep original script name)
        /system schedule add name=BEE-FINAL-REPORT-NEXT-BOOT on-event=":global beeUpdateStep \"finalReport\"; :delay 1s; /system script run firmware-updater;" start-time=startup interval=0

        ## Reboot system to boot with new firmware
        /system reboot
    }
}

## Last step (after second reboot) sending final report
:if ( $beeUpdateStep = "finalReport") do={
    ## Remove global variable for this step
    /system script environment remove beeUpdateStep;
    ## Remove task because we need it just once
    /system scheduler remove BEE-FINAL-REPORT-NEXT-BOOT

    :log info "Upgrading RouterOS and routerboard firmware finished. Current RouterOS version: $[/system package update get installed-version], routerboard firmware: $[/system routerboard get current-firmware]."

    :if ($emailEnabled = true) do={
        /tool e-mail send to="$emailAddress" subject="Router: $[/system identity get name] has been upgraded with new FW!" body="Upgrading RouterOS and routerboard firmware finished. \r\n\r\nRouter name: $[/system identity get name]\r\nCurrent RouterOS version: $[/system package update get installed-version]; Routerboard firmware: $[/system routerboard get current-firmware]; Update channel: $[/system package update get channel]; \r\nBoard name: $[/system resource get board-name]; Serial number: $[/system routerboard get serial-number]; \r\n\r\n Changelog: https://mikrotik.com/download/changelogs/current-release-tree"
    }
}
Пример конфига планировщика:
Код:
/system scheduler
add interval=1d name="run firmware updater script" on-event=firmware-updater \
    policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \
    start-date=aug/07/2018 start-time=4:00:00
 
Последнее редактирование:
  • Спасибо
Благодарности: zhyk_magadan и master_lee