Мікротік: сикс-сееевен

Домашній Мікротік (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 та мовчки обрізаний фетч. Як для стрибка через мажорну версію на роутері, який тримає весь дім — бідненько, але чистенько (:

comments powered by Disqus