Router-On-A-Stick на Keenetic с помощью VLAN

от автора

Всем привет, эта небольшая инструкция посвещается моим коллегам и всем тем, кому нужно реализовать сценарий Router-On-A-Stick на устройствах с интернет-центром Keenetic. Делаете все на свой страх и риск, хотя ничего сломаться не должно.

Проблема

Хотел бы начать со своего варианта использования. Есть два помещения, в которых требуется WiFi покрытие для комфортной работы в Интернете. В первое помещение заходит WAN кабель от провайдера, в этом же помещении находится роутер. Во втором помещении этот сигнал очень слабый из-за металлических стенок, иногда даже к сети не удается подключиться. Сразу на ум приходит желание усилить WiFi сигнал каким-нибудь репитером или вторым роутером, однако и второй роутер не может подцепиться к первому. Сразу приходит на ум прокладка кабеля между первым и вторым роутером для объединения их в LAN-сеть, вариант этот стопроцентный, но зная про существование VLANов, можно чутка упроситить задачу.

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

В подключении дополнительного роутера к коммутатору нет ничего сложного, провайдер прокладывает витую пару, выделяет для вашей локалки VLAN ID и он назначется на порт коммутатора (UNTAGGED, ACCESS MODE). Однако, тянуть второй кабель от основного роутера до коммутатора по тому же маршртуту может быть затратно и не всегда имеется техническая возможность. Конечно можно раздвоить кабель на два RJ-45 с обеих концов как на риснуках 1 и 2, но мы так делать конечно же не будем.

Рисунок 1. Раздвоенный витой кабель.

Рисунок 1. Раздвоенный витой кабель.
Рисунок 2. Распиновка этого зла.

Рисунок 2. Распиновка этого зла.

Решение с использованием VLAN

Если оборудование клиента поддерживает работу с VLAN (802.1Q или 802.1ad), то имеет смысл настроить его таким образом, чтобы порт на основном роутере клиента стал транковым и оперировал тегированными пакетами при работе с WAN и LAN. Это позволить избежать проятяжки второго кабеля до коммутатора и сэкономить порт. Будет очень хорошо, если клиент имеет роутер на RouterOS, OpenWRT или других прошивках, где можно работать с мостами, VLANами и сетевыми интерфейсами. Но к сожалению для нас, потребитель делает выбор в пользу более простого оборудования с большим количеством абстракций, коим является Keenetic.

Будем использовать VLAN ID 1000 для выхода в интернет, а VLAN ID 2000 для локалки. Основной роутер — Keenetic Giant, второй — Keenetic Air.

В настройках вебке Keenetic есть настройка VLAN, которая позволяет принимать теггированный трафик на порт для WAN подключения, позволяет разбить локальную сеть на сегменты включая и исключая порты. Однако нельзя в настройках сегмента с заданным VLANом включить в сегмент порт, который считается WANом (см. Рисунок 3).

Рисунок 3. Попытка присвоить WAN порту VLAN ID локальной сети.

Рисунок 3. Попытка присвоить WAN порту VLAN ID локальной сети.

К счастью, весь этот веб-интерфейс это абстракция над Keenetic CLI, опыт работы с которым похож на работу с консолью Cisco. Через Keenetic CLI можно настроить всё, а вводить команды можно через вебку, ssh (надо доставить пакет), telnet. Стоит отметить, что инициализация роутера — это последовательное исполнение операторов в Keenetic CLI из файла startup-config, который можно скачать и просмотреть.

Рисунок 4. Загрузка startup-config

Рисунок 4. Загрузка startup-config

Ниже представлен упрощенный файл конфигурации после настройки роутера через вебку (настройка статики от провайдера, назначен VLAN 1000 на WAN порт и т.д.).

interface GigabitEthernet0     up ! interface GigabitEthernet0/0     rename 1     switchport mode access     switchport mode trunk     switchport access vlan 1     up ! interface GigabitEthernet0/1     rename 2     switchport mode access     switchport access vlan 1     up ! interface GigabitEthernet0/2     rename 3     switchport mode access     switchport access vlan 1     up ! interface GigabitEthernet0/3     rename 4     switchport mode access     switchport access vlan 1     up ! interface GigabitEthernet0/Vlan1     description "Home VLAN"     security-level private     ip dhcp client dns-routes     ip name-servers     up ! interface GigabitEthernet1     rename ISP     description "Ethernet-подключение"     mac address factory wan     security-level public     ip dhcp client dns-routes     ip name-servers     ipv6 no name-servers     up ! interface GigabitEthernet1/0     rename 0     up ! interface GigabitEthernet1/Vlan1000     description "Ethernet-подключение"     mac address factory wan     security-level public     ip address <IP от провайдера> <маска от провайдера>     ip dhcp client hostname Keenetic-1234     ip dhcp client dns-routes     ip mtu 1500     ip global 700     ip name-servers     igmp upstream     ipv6 no name-servers     up ! interface WifiMaster0     country-code RU     compatibility BGN     tx-burst     rekey-interval 86400     vht     up ! interface WifiMaster0/AccessPoint0й     rename AccessPoint     description "Wi-Fi access point"     mac access-list type none     security-level private     wps     wps no auto-self-pin     authentication wpa-psk ns3 secret     encryption enable     encryption wpa2     ip dhcp client dns-routes     ip name-servers     ssid secret     wmm     rrm     ft mdid 11     ft enable     up ! interface WifiMaster0/AccessPoint1     rename GuestWiFi     description "Guest access point"     mac access-list type none     security-level private     encryption disable     ip dhcp client dns-routes     ip name-servers     down ! interface Bridge0     rename Home     description "Home network"     inherit GigabitEthernet0/Vlan1     include AccessPoint     include AccessPoint_5G     mac access-list type none     security-level private     ip address 192.168.1.1 255.255.255.0     ip dhcp client dns-routes     ip name-servers     igmp downstream     iapp key ns3 secret     up !

Конечно же, можно сделать все необходимые настройки для работы принципа Router-On-A-Stick через консоль если у вас есть опыт, однако это равносильно настройке роутера с нуля. Поскольку надо будет создавать новый интерфейс GigabitEthernet1/Vlan2000, создать под него новый Bridge (потому что в существующий Bridge не получилось включить новый интерфейс, операторы include и inherit не сработают), также непонятно как этот новый бридж и интерфейсы будут работать с вебкой и не сломается ли сама вебка (как бывает с OpenWRT и интерфейсом LuCi). Поэтому для настройки будем править только конфиг, эти действия должны привести к успеху.

Правим startup-config

Поскольку в конфиге везде фигурирует VLAN ID 1 под локалку, логично предположить, что все единицы нужно заменить на число VLAN ID под локалку, полученный от провайдера, в нашем случае 2000. Советую открыть конфиг в VSCode или другом редакторе и воспользоваться инструментом замены.

Для начала, нужно на всех портах роутера настроить Untagged VLAN ID. Для этого нужно заменить все строки «switchport access vlan 1» на «switchport access vlan x», где x — номер желаемого VLANа. На рисунке 4 показано как это делается, а на рисунке 5 результат (слева — до, справа — после)

Рисунок 4. Замена всех строк.

Рисунок 4. Замена всех строк.
Рисунок 5. Просмотр результата и сравнение со старым файлом через VSCode.

Рисунок 5. Просмотр результата и сравнение со старым файлом через VSCode.

Вторым шагом надо переименовать интерфейс для локалки, найдите GigabitEthernet0/Vlan1, он должен выглядить следующим образом:

interface GigabitEthernet0/Vlan1     description "Home VLAN"     security-level private     ip dhcp client dns-routes     ip name-servers     up

Его надо переименовать, но только сделать это надо с заменой всех совпадений, это для того, чтобы заменить все ссылки в файле на этот интерфейс и не было проблем. Переименуйте его в GigabitEthernet1/VlanX, где X — VLAN ID для локалки, полученный от провайдера. На рисунке 6 показано как это можно сделать.

Рисунок 6. Переименовывание интерферса для локальной сети.

Рисунок 6. Переименовывание интерферса для локальной сети.

Третьим действием убедиться, что существует GigabitEthernet1/VlanX, где X — VLAN ID для выхода в интернет от провайдера. Если вы настроили WAN через веб-интерфейс и правильно указали VLAN ID, то будет примерно так:

interface GigabitEthernet1/Vlan1000     description "Ethernet-подключение"     mac address factory wan     security-level public     ip address <IP от провайдера> <маска от провайдера>     ip dhcp client hostname Keenetic-1234     ip dhcp client dns-routes     ip mtu 1500     ip global 700     ip name-servers     igmp upstream     ipv6 no name-servers     up !

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

После таких действий, интерфейс работает как ни в чем не бывало. Поскольку настройка была произведена правя конфиг не могу дать гарантий, будет ли работать должным образом добавление новых сегментов (например Гостевая сеть или др.), другие пункты настроек роутера должны нормально работать.

Настройка второго роутера

Второй роутер у нас является тоже кинетиком, однако его можно настроить в режим точки доступа, переключив физический переключатель на корпусе или выставить в настройках его режим на «Ретранслятор» и подключить второй роутер к коммутатору. На первом роутере зайти в настройки Mesh и подключить второй роутер как ретранслятор, после этого заработает интернет на втором роутере, автоматом подятянутся названия сетей и паролей, а также заработает бесшовный роуминг 802.1r/k/v.

Рисунок 7. Привязка доп. роутера к основному.

Рисунок 7. Привязка доп. роутера к основному.

Если второй роутер не является Keenetic’ом, то на нем нужно сменить статический IP на отличный от основного роутера (в моем случае на 192.168.1.2), чтобы не было конфликтов в сети, также отключить DHCP-сервер, NAT, Firewall и настроить роутер под себя. Тем самым, сделать из него обычную точку доступа без функций маршрутизатора.

Заключение

Это мой первый опыт написания статей, также с Keenetic’ами опыт работы тоже небольшой у меня. К этой настройке я пришел методом тыка, сначала пытался через Web, затем через CLI, полезной информации для себя в Интернете по этому поводу я не нашел, да и документация по CLI не совсем понятная для меня, поэтому родилось мое собственное решение, которое оказалось простым.

Надеюсь что ничего не упустил, потому что сейчас не имею возможность все это провернуть еще раз и проверить из-за отстствия железок, имею только конфиги.


ссылка на оригинал статьи https://habr.com/ru/articles/850532/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *