Пишу этот мануал больше для самого себя, чтоб потом не забыть, как я это делал и на какие грабли наступал.
Предыстория. В своё время на контору было закуплено довольно много Mikrotik-ов имени RB951G-2HnD. Помаявшись с ними год-два, я окончательно в них разочаровался. Основные причины: нет Split DNS (от слова "совсем"), крайне нестабильный и глючный IPSec (загрузка процессора приводит к тому, что тоннели сами по себе рвутся), непереносимость конфигурации (хоть это и заявлено производителем), отсутствие поддержки UDP в OpenVPN, да и много чего ещё. Полный список моих чертыханий можно посмотреть по тегу "Mikrotik". В какой-то момент абсолютно все роутеры данного производителя были мной демонтированы.
Но не выбрасывать же их. В конце концов внутри распаяно более чем неплохое железо. Плюс 128 МБ оперативной памяти и 128 МБ на внутренней флешке. Мало где ещё встречается такое боХатство. Благо, добрые энтузиасты запилили под сиё устройство открытую прошивку OpenWRT, которая впоследствии форкнулась в LEDE. Первая собиралась и заливалась в сабжевый маршрутизатор весьма неочевидными способами. Со второй всё много проще. Единственное, "из коробки" оно не подхватывает гигабитные порты в модели 951G: надо патчить один из модулей и пересобирать. Если же используется модификация 951Ui со 100-мбитными портами, то там всё работает и так.
Собственно, переделка микротика состоит из двух частей: пересборка и заливка. Пойду "сзаду наперёд": сначала про заливку, потом про сборку.
Для осуществления магии понадобятся: дистрибутив с прошивкой, DHCP-сервер, TFTP-сервер. Из дистрибутива потребуются два файла: "nand-large-squashfs-sysupgrade.bin"
Тут важно помнить вот какой момент. Начиная с какой-то версии фирмвари в микротиках в качестве "аварийной загрузки" используется не DHCP, а BOOTP. Последний имеет одну особенность: клиент получит IP-адрес только в том случае, если в конфиге сервера жёстко задана привязка "MAC-IP". Поэтому придётся проводить некоторое шаманство. Итак.
- Поднимаем DHCP-сервер, TFTP-сервер. В качестве загрузочного образа указываем "vmlinux-initramfs.elf".
- Втыкаем сетевой патч-корд в WAN-порт микротика (обычно это порт номер 1), второй конец в DHCP-сервер.
- Открываем логи DHCP-сервера так, чтобы видеть изменения в режиме реального времени.
- Выключаем питание микротика (выдергиваем провод).
- Зубочисткой нажимаем на кнопку "Factory Reset", и не отпускаем её, втыкаем провод питания.
- Дожидаемся, когда роутер начнет просить IP-адрес (видно по логам, см. пункт 3).
- Выключаем питание роутера.
- Копируем из логов MAC-адрес, прописываем его в конфиге DHCP-сервера как fixed. В случае DNSMasq это будет директива вида "dhcp-host=00:11:22:33:44:55,192.168.1.2,m
ikrotik01,1h". - Повторяем пункты с 4го по 6ой включительно.
- Смотрим по логам, запросил ли микротик "vmlinux-initramfs.elf". Если да, то всё в порядке. Если нет, то проверяем настройки DHCP-сервера.
- По логам TFTP-сервера проверяем, отдал ли он микротику упомянутый initramfs. Если да, то всё в порядке. Если нет, проверяем настройки TFTP-сервера.
- Если микротик подключен к DHCP-серверу напрямую, "морда-в-морду", то можно по логам отследить момент когда он загрузился: он опустит и поднимет Ethernet-линк. Если не напрямую, то по индикатору на свитче.
- Перетыкаем патч-корд из WAN-порта микротика в LAN-порт.
- Выставляем на сервере либо тестовом десктопе IP-адрес интерфейса "192.168.1.2".
- Ломимся SSH-ем на адрес "192.168.1.1". Логин root, пароль пустой.
- При помощи wget-а либо scp загружаем файл "nand-large-squashfs-sysupgrade.bin"
в директорию "/tmp" на роутере. - Произносим заклинание "sysupgrade -n /tmp/nand-large-squashfs-sysupgrade.bin"
. - Он может выматериться странными ошибками, после чего принудительно оборвёт соединение. Это нормально.
- Внимание!!! После этого не отключать питание роутера до завершения процесса его самостоятельной перезагрузки!!!11 Факт перезагрузки можно отследить по индикаторам. Но лучше терпеливо подождать с запасом минут пять, чтобы с гарантией не окирпичить неплохую железку.
- После перезагрузки подключиться SSH-ем на адрес 192.168.1.1 и наблюдать в консоли LEDE-шный промпт.