Домашній Мікротік (hAP ac³) роками сумлінно працював на RouterOS 6 і натякав, що його краще не чіпати. Але довелося.
Чому не просто “Check for Updates”#
Здавалося б: натиснув кнопку, почекав, готово - але дзузьки.
По-перше, вбудований апдейтер на каналі stable із шостої версії на сьому не переходить взагалі — він запропонував мені 6.49.21 і на цьому все. Шоста і сьома — це окремі “гілки”, і перестрибувати між ними треба вручну, заливаючи пакети.
По-друге, Інтернет радить спочатку оновитися на якусь проміжну 7.12.1, а вже потім далі. Виявляється, ця порада застаріла: якщо ти вже на 6.49.19 (остання шістка), проміжна версія не потрібна — можна стрибати відразу на найсвіжішу 7.24.1.
По-третє — і це головна проблема — починаючи з 7.13 драйвери WiFi винесли із основного пакета в окремий. Тобто якщо залити тільки routeros і ребутнутися, отримаєш сьому версію без радіо взагалі. Для hAP ac³ потрібен ще пакет wireless тої самої версії — тоді вся конфігурація вайфаю переїжджає як була, без переналаштування.
Несподіванка перша: не пускає SSH#
Пароль від WebFig працює, а по SSH — “Permission denied”. Довге розслідування показало комбо:
always-allow-password-login: no- для юзера
adminвже колись були імпортовані SSH-ключі
У RouterOS така комбінація означає “тільки по ключу, пароль іди гуляй”. А чому ключ не спрацьовував сам? Бо стара шістка вміє тільки легасі ssh-rsa (SHA-1), який сучасний macOS мовчки ігнорує — і падає назад на пароль, який вимкнено.
Лікується явним дозволом старого алгоритму:
ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa \
-i ~/.ssh/id_rsa admin@10.10.200.0Бонусна несподіванка: у логах роутера жодних слідів невдалих логінів. Чому?…
Несподіванка друга: fetch бреше#
Пакети завантажуються прямо самим роутером на роутер:
/tool fetch url="https://download.mikrotik.com/routeros/7.24.1/routeros-7.24.1-arm.npk"
/tool fetch url="https://download.mikrotik.com/routeros/7.24.1/wireless-7.24.1-arm.npk"Перший фетч головного пакета відрапортував status: finished. От тільки скачалося 9 мегабайт із майже 12 — зʼєднання обірвалося посеред передачі, а RouterOS все одно сказав “готово”. Якби я в такому стані ребутнувся — було б весело.
Мораль: після завантаження перевіряти файли за розміром (/file print), а не за статусом. Перекачав — стало 11.7 MiB як належить.
Як воно робилося#
Сумарний план вийшов такий:
/system backup save name=pre-v7-upgrade
/export file=pre-v7-configОбидва бекапи витягнув із роутера до себе — бінарний .backup відновлюється тільки на шістці, тому це квиток назад на випадок повного фіаско (назад із сімки штатно відкотитися не можна, тільки netinstall + бекап).
Далі: скачати обидва .npk, перевірити розміри, і
/system rebootХвилини дві-три тиші — і роутер піднявся вже на 7.24.1. Довгий список пакетів шостої версії схлопнувся у два: routeros та wireless. Вся конфігурація на місці, всі SSID працюють.
Наостанок — прошивка завантажувача:
/system routerboard upgrade
/system rebootРезультат#
- RouterOS: 6.49.19 → 7.24.1
- RouterBOOT: 6.49.19 → 7.24.1
- WiFi та Home Assistant: працюють, руками нічого не переналаштовував
- SSH: на сімці вже нормальне крипто, легасі-опції з конфіга можна викинути
Із реальних граблів — тільки той SSH із його ssh-rsa та мовчки обрізаний фетч. Як для стрибка через мажорну версію на роутері, який тримає весь дім — бідненько, але чистенько (: