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

в 15:16, , рубрики: 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 не совсем понятная для меня, поэтому родилось мое собственное решение, которое оказалось простым.

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

Автор: S4sh4W4lk3r

Источник

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


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