Z aktualizacjami jest trochę tak jak z robieniem backup’ów, istnieją dwie grupy ludzi. Ci co robią aktualizacje i ci którzy będą je robić. W tym artykule przestawię poprawny proces aktualizacji systemu MikroTik RouterOS, pokaże kilka najczęstszych błędów oraz wprowadzę trochę automatyki 🙂
Wybranie kanału aktualizacji
W RouterOS mamy 3 wersje systemu które możemy zainstalować:
- Bugfix-only (aktualnie Long-term) – jest to najstabilniejsza i za razem najstarsza wersja RouterOS oferowana na dany moment przez producenta. Nie oferuje ona najnowszych funkcji dołączanych do systemu i nie dostaje aktualizacji poza krytycznymi poprawkami bezpieczeństwa. Powinna być wykorzystywana w bardzo wrażliwych miejscach sieci gdzie liczy się wysoka stabilność i dostępność usług.
- Current (aktualnie Stable) – jest to wydanie aktualne które zawiera nowo opracowane funkcje. Jednak może zawierać specyficzne błędy które nie wyszły w testach wersji „release candidate”. Wersja dobra do routera domowego, biurowego gdzie nic się nie stanie gdy przez parę minut usługi będą niedostępne.
- Release candidate (aktualnie Testing) – czyli dokładnie tłumacząc „kandydat do wydania”. To jest wersja która de facto nie przeszła żadnych głębszych testów jedynie została skompilowała i zadziałała na kilku testowych urządzeniach. Testy tej wersji tak na prawdę robią ludzie jej używający. Często bywa że urządzenia z tą wersją same się restartują lub w najgorszym przypadku nie przeżyją aktualizacji. Jednak gdy ktoś bardzo oczekuje jakieś funkcjonalności kosztem stabilności może pomyśleć nad tą wersją. Zdarza się nawet kilka aktualizacji w tygodniu.
Po każdej aktualizacji na oficjalnym forum MikroTik’a tworzony jest wątek gdzie można skłaszać i dyskutować i nowościach i problemach.
Link do forum: https://forum.mikrotik.com/
Aktualizacja systemu
Na początku warto wykonać backup i export konfiguracji który pomoże nam w razie niepowodzenia. Praktycznie w wersjach stabilnych takie sytuacje się nie zdarzają ale lepiej dmuchać na zimne. Jak to zrobić przestawiam w tym artykule.
Aby sprawdzić dostępność aktualizacji wchodzimy w menu System->Packages.
Przy okazji warto zastanowić się nad wyłączeniem (przyciskiem disable) niepotrzebnych pakietów. Bo po co nam np. pakiet Wirelles gdy nasz router nie ma karty WLAN, lub po co IPv6 gdy jeszcze z niego nie korzystamy, itp. Do tej operacji konieczny jest reboot urządzenia.
W oknie klikamy „Check For Updates”, wybieramy interesujący nas kanał aktualizacji.
Jeżeli mowa wersja jest dostępna albo ją pobrać i zainstalować ręcznie wykonując reboot (Download) lub pobrać i od razu zainstalować automatycznie (Download & Install).
Aktualizacja firmware
Wiele osób tego nie wie ale aktualizacja samego RouterOS to nie wszystko. Równie ważne jest aby mieć firmware zgodny z Router’OS w przeciwnym wypadku cały system może działać niestabilnie.
Aby sprawdzić aktualność firware’u wchodzimy w System->Routerboard. Jeżeli „Current Firmware” jest inny od „Upgrade Firmware” (tak jak na screenie obok) wówczas wykonujemy aktualizację. Klikamy Upgrade, czekamy kilka sekund i wykonujemy reboot urządzenia.
Skrypt sprawdzający dostępność nowych aktualizacji
Oczywiście nie byłbym sobą gdybym nie dorzucił do tego tematu trochę „MikroTik’owej skryptologii”.
Poniższy skrypt sprawdzi czy jest dostępna nowa wersja oprogramowania i jeśli tak to wyślę maila z krótką informacją.
Utworzy pomocniczy plik SoftChecker.txt, nie należy go usuwać spowoduje. Przy pierwszym wykonaniu mail zostanie wysłany bez względu na stan wersji softa.
Skrypt wymaga uprawnień: ftp, read, write, policy, test.
:local ActualChannel ""; :local ActualCurrentVersion ""; :local ActualLatestVersion ""; /system package update check-for-updates do={ :set $ActualChannel $"channel"; :set $ActualCurrentVersion $"current-version"; :set $ActualLatestVersion $"latest-version"; } :local DataFile "SoftChecker.txt"; :if ([:len [/file find name=$DataFile]] = 0) do={ /file print file=$DataFile; :delay 3s; /file set $DataFile contents=""; :delay 2s; } :local OldSoftwareVersion [/file get $DataFile contents]; :delay 2s; :if ($ActualLatestVersion != $OldSoftwareVersion) do={ /file set $DataFile contents=$ActualLatestVersion; :delay 2s; /tool e-mail send to="adres_docelowy@change.me" subject="Dostępna jest nowa wersja RouterOS $ActualLatestVersion dla urządzenia $[/system identity get name]" body="Channel: $ActualChannel\r\nActual version: $ActualCurrentVersion\r\nNew version: $ActualLatestVersion\r\nDate: $[/system clock get date] $[/system clock get time]" }