Что делать с двумя тысячами роутеров, на которых корявая прошивка, если ты — провайдер?

в 13:44, , рубрики: Cisco, DIY, инженерные системы, прошивка, сетевая инфраструктура, сетевое администрирование, Сетевое оборудование, Сетевые технологии

Первое и естественное желание - выбросить это барахло.

Второе - отправить туда, откуда эти 2000 роутеров пришли. Пусть китайцы сами шьют.

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

Перед тем как начнем, немного вводных о самих устройствах

Я работаю в интернет-провайдере, который заводит оптику до абонента.

Соответственно роутер с GPON-WAN-входом. Роутер без Wi-Fi интерфейса и имеет 2 выхода: RJ-45 и Аналоговый для телевидения. После нашего роутера ставится любой роутер с WI-FI интерфейсом от абонента. Настройки роутер абонента получает по DHCP. Это делает управление сетью для нас более унифицированным процессом (мы знаем, как работать с каждой из наших железок, поэтому если у абонента проблема с сетью, а на нашем роутере все ок - значит проблема у абонента на роутере), и защищает нашу сеть от абонентов.

Итак, у нас есть вводные

Задача такова: в офисе Бишкека 1400 роутеров, в офисе Оша - 600. Нужно за адекватное время сделать так, чтобы роутеры, оказавшись у абонентов в домах, были на нужной нам прошивке. Вот несколько способов, как это можно сделать:

Вариант А. Он же самый простой

Каждый монтажник, получающий роутер из промаркированной коробки, будет прошивать его самостоятельно по месту у абонента.

В нашем случае у монтажников отсутствуют ноутбуки. Это небольшая проблема, так как есть USB-сетевые карты, которые можно подключать к телефонам, и это тоже решение.

Но в нашем случае это сработало не на всех мобильных телефонах. Такой план выглядел как крайне ненадежный, и от него мы отказались.

Вариант B. Чуть посложнее

На каждый из новоподключаемых роутеров по SSH подключается Ansible, выполняет команду загрузки с FTP сервера прошивки, и устанавливает ее на устройстве. Все выглядело просто, но было 2 момента.

  1. У наших роутеров не было SSH, только Telnet. Что в целом не страшно. Ансибл все так же мог бы подключаться к каждому новому роутеру, обновлять прошивку, после чего убивать телнет для безопасности. Но тут то мы и получили 2 проблему.

  2. Роутеры по дефолту закрыты по телнет из WAN-порта. Но открыт с порта локальной сети.

А значит...

Еще один вариант. То же самое, что и в предыдущем, но для локальной сети

  1. Берем самую большую по портам Cisco. У нас это было 48 портов. Сверху берем любой Микротик, желательно хотя бы из роутерной HEX-серии.

  2. У нас 47 роутеров, у каждого из которых для локальной сети одинаковый IP-адрес: 192.168.1.1

  3. Чтобы решить эту проблему, берем коммутатор из пункта 1, и создаем на нем 47 VLAN-ов.

  4. Коммутатор втыкаем в микротик. Дальше начинается магия с VRF, которую я не реализовывал, но так точно можно делать. Вопрос только в том, вытащит ли такое Микротик HEX-серии, или нужно что-то посерьезнее.

  5. Итак, на каждый из 47 виртуальных роутеров мы приземляем по VLAN-у. Поднимаем на каждом из этих роутеров NAT, и делаем проброс портов до наших роутеров из внешней сети.

  6. Микротику, FTP-серверу и Серверу со скриптом для обновления даем адреса из подсети, которую виртуальные роутеры считают внешней. Допустим это будет сеть 10.0.0.0/26 (чтобы оперировать 62 IP-адресами).

  7. После конфигурирования сети напишем небольшой скрипт, который:
    • Откроет telnet сессию через каждый виртуальный роутер на роутер, который мы собрались прошивать
    • Отдаст команду на скачивание прошивки
    • После того, как прошивка будет скачана, отдаст команду на ее установку. Но на деле я просто собирался написать "sleep 1m", чтобы прошивка точно была скачана.

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

Самый последний вариант. Теперь уже точно

  1. Достал 48-портовую Cisco и 24-портовый и самый тупой TP-Link.

  2. Все порты на Cisco переводим в ацесс мод. На TP-Link-е можно ничего не трогать.

  3. Процесс работы с утилитой достаточно прост:

    • питание на роутерах отключается

    • активируется утилита

    • начинает кидать широковещательные пакеты по какому-то из своих протоколов. Я не уточнял этот момент, работает и ладно

    • Подаем питание на роутеры, и первое, что они видят - пакеты от утилиты

    • Роутеры переходят в режим прошивки.

    • на роутерах видим индикацию о прошивке

    • ждем 5 минут

    • Отключаем утилиту

    • Отключаем-включаем питание на роутерах для перезагрузки

    • Получаем готовые роутеры.

  4. Каждый из портов Cisco настраивается следующим образом:

    interface GigabitEthernet <номер порта>
      switchport access vlan <номер влана> / Все порты в один влан
      switchport mode access
      spanning-tree portfast / Отключаем STP на порту. Пока циска согласует порты,
                              модемы выйдут из режима готовности к прошивке, и утилита
                              не отработает.

В остальном ничего специфичного, можно брать дефолтную циску.


На этом процесс настройки можно считать завершенным. Перейдем к процессу построения конвейера.

  1. Питание. После того, как все сконфигурировано, нужно как-то запитать условные 70 роутеров. И вот это уже проблема. Достав все пилоты, что были в запасах на складе, у меня получилось организовать только 52 гнезда на 220. 2 пилона были "мэнеджмент", чтобы удобно включать/отключать питание на роутерах. Все это выглядело вот так:

    Подключаем 52 блока питания для роутеров. Крайний левый и крайний правый пилон - для управления питанием.

    Подключаем 52 блока питания для роутеров. Крайний левый и крайний правый пилон - для управления питанием.
  2. Питание для питания. Посчитав максимальную нагрузку, получил цифру в 3,4 киловатта для всей этой фермы. Нагрузка не запредельная, как 2 чайника, но безопасности ради пришлось тыкнуть это все в отдельную розетку от щитка. Лучше держать этот момент в уме, когда захотите прошить 100 модемов за раз.

  3. Очень желательно было после прошивки вернуть каждый модем в родную коробку, так как на коробке была маркировка с серийным номером, который нужно прописывать при активации роутера в биллинге. Вопрос был решен вот такой "матрицей". Коробки брались последовательно, ставились на нужную позицию. Допустим это позиция 5. После чего роутер из 5 коробки втыкался в 5 порт. После прошивки роутер с 5 порта возвращался в 5 коробку.

    Пустой массив для коробок

    Пустой массив для коробок
    Массив заполнен коробкамиц

    Массив заполнен коробкамиц
  4. Для того, чтобы каждый раз не искать, из какого порта идет кабель, я промаркировал каждый кабель цифрами от 1 до 52, воткнув каждый кабель в соответствующий порт.

    Подпишите каждый кабель по номеру порта на циске, чтобы потом не искать

    Подпишите каждый кабель по номеру порта на циске, чтобы потом не искать
Просто красивая картиночка для фактуры.

Просто красивая картиночка для фактуры.

Как итог получился следующий процесс

  • Взять коробку с 60 роутерами. В коробке 5 столбцов по 4 ряда и 3 слоя в высоту

  • Достать и распаковать один ряд роутеров

  • Поставить 5 коробок из ряда к стене, каждую на свою позицию

  • Воткнуть роутеры в порты, согласно номерам позиций

  • Провести процесс прошивки

  • Вернуть 52 роутера в соответствующие коробки.

В теории все просто и быстро, на практике процесс прошивки одной "партии" из 52 роутеров занимал от 40 минут до 1 часа, что за 8-часовую смену давало 400 прошитых роутеров. На практике выходило 200, что тоже результат.

В Бишкекском офисе было 1400 роутеров, так что с перерывами и неспеша с этой работой мы справились примерно за 2 недели.

В город Ош отправили 600 роутеров, и они предсказуемо сделали все за 3 дня.


Не пытаюсь развести на комментарии, но мне было бы интересно узнать, как вы бы решили такую задачу. Можете писать свои варианты.

Автор: Сергей

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js