klink0v (klink0v) wrote,
klink0v
klink0v

Прошивка Mikrotik-ов в LEDE (часть 1)

Пишу этот мануал больше для самого себя, чтоб потом не забыть, как я это делал и на какие грабли наступал.

Предыстория. В своё время на контору было закуплено довольно много Mikrotik-ов имени RB951G-2HnD. Помаявшись с ними год-два, я окончательно в них разочаровался. Основные причины: нет Split DNS (от слова "совсем"), крайне нестабильный и глючный IPSec (загрузка процессора приводит к тому, что тоннели сами по себе рвутся), непереносимость конфигурации (хоть это и заявлено производителем), отсутствие поддержки UDP в OpenVPN, да и много чего ещё. Полный список моих чертыханий можно посмотреть по тегу "Mikrotik". В какой-то момент абсолютно все роутеры данного производителя были мной демонтированы.

Но не выбрасывать же их. В конце концов внутри распаяно более чем неплохое железо. Плюс 128 МБ оперативной памяти и 128 МБ на внутренней флешке. Мало где ещё встречается такое боХатство. Благо, добрые энтузиасты запилили под сиё устройство открытую прошивку OpenWRT, которая впоследствии форкнулась в LEDE. Первая собиралась и заливалась в сабжевый маршрутизатор весьма неочевидными способами. Со второй всё много проще. Единственное, "из коробки" оно не подхватывает гигабитные порты в модели 951G: надо патчить один из модулей и пересобирать. Если же используется модификация 951Ui со 100-мбитными портами, то там всё работает и так.

Собственно, переделка микротика состоит из двух частей: пересборка и заливка. Пойду "сзаду наперёд": сначала про заливку, потом про сборку.

Для осуществления магии понадобятся: дистрибутив с прошивкой, DHCP-сервер, TFTP-сервер. Из дистрибутива потребуются два файла: "nand-large-squashfs-sysupgrade.bin" — образ прошивки и "vmlinux-initramfs.elf" — копия виртуальной файловой системы для загрузки по сети. В качестве DHCP и TFTP сервера можно использовать DNSMasq. Но подойдёт что угодно.

Тут важно помнить вот какой момент. Начиная с какой-то версии фирмвари в микротиках в качестве "аварийной загрузки" используется не DHCP, а BOOTP. Последний имеет одну особенность: клиент получит IP-адрес только в том случае, если в конфиге сервера жёстко задана привязка "MAC-IP". Поэтому придётся проводить некоторое шаманство. Итак.


  1. Поднимаем DHCP-сервер, TFTP-сервер. В качестве загрузочного образа указываем "vmlinux-initramfs.elf".

  2. Втыкаем сетевой патч-корд в WAN-порт микротика (обычно это порт номер 1), второй конец в DHCP-сервер.

  3. Открываем логи DHCP-сервера так, чтобы видеть изменения в режиме реального времени.

  4. Выключаем питание микротика (выдергиваем провод).

  5. Зубочисткой нажимаем на кнопку "Factory Reset", и не отпускаем её, втыкаем провод питания.

  6. Дожидаемся, когда роутер начнет просить IP-адрес (видно по логам, см. пункт 3).

  7. Выключаем питание роутера.

  8. Копируем из логов MAC-адрес, прописываем его в конфиге DHCP-сервера как fixed. В случае DNSMasq это будет директива вида "dhcp-host=00:11:22:33:44:55,192.168.1.2,mikrotik01,1h".

  9. Повторяем пункты с 4го по 6ой включительно.

  10. Смотрим по логам, запросил ли микротик "vmlinux-initramfs.elf". Если да, то всё в порядке. Если нет, то проверяем настройки DHCP-сервера.

  11. По логам TFTP-сервера проверяем, отдал ли он микротику упомянутый initramfs. Если да, то всё в порядке. Если нет, проверяем настройки TFTP-сервера.

  12. Если микротик подключен к DHCP-серверу напрямую, "морда-в-морду", то можно по логам отследить момент когда он загрузился: он опустит и поднимет Ethernet-линк. Если не напрямую, то по индикатору на свитче.

  13. Перетыкаем патч-корд из WAN-порта микротика в LAN-порт.

  14. Выставляем на сервере либо тестовом десктопе IP-адрес интерфейса "192.168.1.2".

  15. Ломимся SSH-ем на адрес "192.168.1.1". Логин root, пароль пустой.

  16. При помощи wget-а либо scp загружаем файл "nand-large-squashfs-sysupgrade.bin" в директорию "/tmp" на роутере.

  17. Произносим заклинание "sysupgrade -n /tmp/nand-large-squashfs-sysupgrade.bin".

  18. Он может выматериться странными ошибками, после чего принудительно оборвёт соединение. Это нормально.

  19. Внимание!!! После этого не отключать питание роутера до завершения процесса его самостоятельной перезагрузки!!!11 Факт перезагрузки можно отследить по индикаторам. Но лучше терпеливо подождать с запасом минут пять, чтобы с гарантией не окирпичить неплохую железку.

  20. После перезагрузки подключиться SSH-ем на адрес 192.168.1.1 и наблюдать в консоли LEDE-шный промпт.

Вот такой геморрой, ага. Утешает лишь то, что OpenWRT прошивалась в микротики ещё сложнее.
Tags: it, linux, mikrotik, openwrt, администрирование, ссылки
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 17 comments