Первое и естественное желание - выбросить это барахло.
Второе - отправить туда, откуда эти 2000 роутеров пришли. Пусть китайцы сами шьют.
К сожалению, ни один из вариантов не подошел нам по временным рамкам. На нашем складе имелось несколько десятков роутеров, а склад на юге страны был в дефиците уже неделю. Нам необходимо было найти быстрое решение для этой проблемы. Вот несколько методов, которыми можно воспользоваться, если вы столкнетесь с подобной ситуацией и имеете схожие вводные.
Перед тем как начнем, немного вводных о самих устройствах
Я работаю в интернет-провайдере, который заводит оптику до абонента.
Соответственно роутер с GPON-WAN-входом. Роутер без Wi-Fi интерфейса и имеет 2 выхода: RJ-45 и Аналоговый для телевидения. После нашего роутера ставится любой роутер с WI-FI интерфейсом от абонента. Настройки роутер абонента получает по DHCP. Это делает управление сетью для нас более унифицированным процессом (мы знаем, как работать с каждой из наших железок, поэтому если у абонента проблема с сетью, а на нашем роутере все ок - значит проблема у абонента на роутере), и защищает нашу сеть от абонентов.
Итак, у нас есть вводные
Задача такова: в офисе Бишкека 1400 роутеров, в офисе Оша - 600. Нужно за адекватное время сделать так, чтобы роутеры, оказавшись у абонентов в домах, были на нужной нам прошивке. Вот несколько способов, как это можно сделать:
Вариант А. Он же самый простой
Каждый монтажник, получающий роутер из промаркированной коробки, будет прошивать его самостоятельно по месту у абонента.
В нашем случае у монтажников отсутствуют ноутбуки. Это небольшая проблема, так как есть USB-сетевые карты, которые можно подключать к телефонам, и это тоже решение.
Но в нашем случае это сработало не на всех мобильных телефонах. Такой план выглядел как крайне ненадежный, и от него мы отказались.
Вариант B. Чуть посложнее
На каждый из новоподключаемых роутеров по SSH подключается Ansible, выполняет команду загрузки с FTP сервера прошивки, и устанавливает ее на устройстве. Все выглядело просто, но было 2 момента.
-
У наших роутеров не было SSH, только Telnet. Что в целом не страшно. Ансибл все так же мог бы подключаться к каждому новому роутеру, обновлять прошивку, после чего убивать телнет для безопасности. Но тут то мы и получили 2 проблему.
-
Роутеры по дефолту закрыты по телнет из WAN-порта. Но открыт с порта локальной сети.
А значит...
Еще один вариант. То же самое, что и в предыдущем, но для локальной сети
-
Берем самую большую по портам Cisco. У нас это было 48 портов. Сверху берем любой Микротик, желательно хотя бы из роутерной HEX-серии.
-
У нас 47 роутеров, у каждого из которых для локальной сети одинаковый IP-адрес: 192.168.1.1
-
Чтобы решить эту проблему, берем коммутатор из пункта 1, и создаем на нем 47 VLAN-ов.
-
Коммутатор втыкаем в микротик. Дальше начинается магия с VRF, которую я не реализовывал, но так точно можно делать. Вопрос только в том, вытащит ли такое Микротик HEX-серии, или нужно что-то посерьезнее.
-
Итак, на каждый из 47 виртуальных роутеров мы приземляем по VLAN-у. Поднимаем на каждом из этих роутеров NAT, и делаем проброс портов до наших роутеров из внешней сети.
-
Микротику, FTP-серверу и Серверу со скриптом для обновления даем адреса из подсети, которую виртуальные роутеры считают внешней. Допустим это будет сеть 10.0.0.0/26 (чтобы оперировать 62 IP-адресами).
-
После конфигурирования сети напишем небольшой скрипт, который:
• Откроет telnet сессию через каждый виртуальный роутер на роутер, который мы собрались прошивать
• Отдаст команду на скачивание прошивки
• После того, как прошивка будет скачана, отдаст команду на ее установку. Но на деле я просто собирался написать "sleep 1m", чтобы прошивка точно была скачана.
Все это звучало как отличный план, но наши китайские друзья любезно предоставили нам утилиту для бродкаст прошивки своих роутеров, и план немного упростился.
Самый последний вариант. Теперь уже точно
-
Достал 48-портовую Cisco и 24-портовый и самый тупой TP-Link.
-
Все порты на Cisco переводим в ацесс мод. На TP-Link-е можно ничего не трогать.
-
Процесс работы с утилитой достаточно прост:
-
питание на роутерах отключается
-
активируется утилита
-
начинает кидать широковещательные пакеты по какому-то из своих протоколов. Я не уточнял этот момент, работает и ладно
-
Подаем питание на роутеры, и первое, что они видят - пакеты от утилиты
-
Роутеры переходят в режим прошивки.
-
на роутерах видим индикацию о прошивке
-
ждем 5 минут
-
Отключаем утилиту
-
Отключаем-включаем питание на роутерах для перезагрузки
-
Получаем готовые роутеры.
-
-
Каждый из портов Cisco настраивается следующим образом:
interface GigabitEthernet <номер порта> switchport access vlan <номер влана> / Все порты в один влан switchport mode access spanning-tree portfast / Отключаем STP на порту. Пока циска согласует порты, модемы выйдут из режима готовности к прошивке, и утилита не отработает.
В остальном ничего специфичного, можно брать дефолтную циску.
На этом процесс настройки можно считать завершенным. Перейдем к процессу построения конвейера.
-
Питание. После того, как все сконфигурировано, нужно как-то запитать условные 70 роутеров. И вот это уже проблема. Достав все пилоты, что были в запасах на складе, у меня получилось организовать только 52 гнезда на 220. 2 пилона были "мэнеджмент", чтобы удобно включать/отключать питание на роутерах. Все это выглядело вот так:
-
Питание для питания. Посчитав максимальную нагрузку, получил цифру в 3,4 киловатта для всей этой фермы. Нагрузка не запредельная, как 2 чайника, но безопасности ради пришлось тыкнуть это все в отдельную розетку от щитка. Лучше держать этот момент в уме, когда захотите прошить 100 модемов за раз.
-
Очень желательно было после прошивки вернуть каждый модем в родную коробку, так как на коробке была маркировка с серийным номером, который нужно прописывать при активации роутера в биллинге. Вопрос был решен вот такой "матрицей". Коробки брались последовательно, ставились на нужную позицию. Допустим это позиция 5. После чего роутер из 5 коробки втыкался в 5 порт. После прошивки роутер с 5 порта возвращался в 5 коробку.
-
Для того, чтобы каждый раз не искать, из какого порта идет кабель, я промаркировал каждый кабель цифрами от 1 до 52, воткнув каждый кабель в соответствующий порт.
Как итог получился следующий процесс
-
Взять коробку с 60 роутерами. В коробке 5 столбцов по 4 ряда и 3 слоя в высоту
-
Достать и распаковать один ряд роутеров
-
Поставить 5 коробок из ряда к стене, каждую на свою позицию
-
Воткнуть роутеры в порты, согласно номерам позиций
-
Провести процесс прошивки
-
Вернуть 52 роутера в соответствующие коробки.
В теории все просто и быстро, на практике процесс прошивки одной "партии" из 52 роутеров занимал от 40 минут до 1 часа, что за 8-часовую смену давало 400 прошитых роутеров. На практике выходило 200, что тоже результат.
В Бишкекском офисе было 1400 роутеров, так что с перерывами и неспеша с этой работой мы справились примерно за 2 недели.
В город Ош отправили 600 роутеров, и они предсказуемо сделали все за 3 дня.
Не пытаюсь развести на комментарии, но мне было бы интересно узнать, как вы бы решили такую задачу. Можете писать свои варианты.
Автор: Сергей