Tajemne życie sieci wirtualnych
Ostatnia zmiana: 2023-01-21 13:39

VLAN (Virtual Local Area Network / Wirtualna sieć lokalna) - to wydzielony logicznie obszar sieci komputerowej. W routerach wykorzystuje się VLANy do podziału portów przełącznika (switcha) na oddzielne sekcje (w starszych wersjach oprogramowania), można także wykorzystać je do odseparowania kilku sieci od siebie. W pierwszym przypadku mówimy zwykle o VLANach typu port based, w drugim o typie 802.1q. W starszych wersjach OpenWrt VLANy były wykorzystywane m.in do podziału switcha na WAN i LAN w większości modeli routerów; w nowszych wersjach OpenWrt zostało wprowadzone tzw. DSA - Distributed Switch Architecture, czyli krótko mówiąc znikła definicja switcha, a każdy fizyczny port traktowany jest jako oddzielny interfejs. Jednakże obsługa VLANów pozostała, choć robi się to obecnie trochę inaczej.

Przedstawione konfiguracje przetestowano na OpenWrt 21.02-rc4.

Różnice w konfiguracji

Aby zobrazować różnice jakie wprowadza DSA posłużymy się znanym routerem Netgear R6220. W starszych wydaniach OpenWrt konfiguracja sieci wyglądała następująco (pominięto tu mniej istotne elementy konfiguracji takie jak IPv6 czy przypisanie adresów MAC do interfejsów; jest to częściowa zawartość pliku /etc/config/network):


    config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

    config interface 'lan'
        option type 'bridge'
        option ifname 'eth0.1'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'

    config interface 'wan'
        option ifname 'eth0.2'
        option proto 'dhcp'

    config switch
        option name 'switch0'
        option reset '1'
        option enable_vlan '1'

    config switch_vlan
        option device 'switch0'
        option vlan '1'
        option ports '0 1 2 3 6t'

    config switch_vlan
        option device 'switch0'
        option vlan '2'
        option ports '4 6t'

Cały switch był pięcioportowy (wan + cztery lany), podzielony logicznie na wan (fizyczny port wan odpowiadał portowi 4 switcha) oraz cztery lany (fizyczne porty lan odpowiadały odpowiednio portowi 0, 1, 2 i 3 swictha). Aby był możliwy ruch do urządzenia switch połączony był z portem CPU o numerze 6 (tagowany).

Po wprowadzeniu DSA znikła definicja switcha, pojawiły się za to fizyczne interfejsy które nazwano wan, lan1, lan2, lan3 oraz lan4 (dotyczy to konkretnie routera Netgear R6220, w innych modelach mogą być inne nazwy interfejsów):


    config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

    config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'lan1'
        list ports 'lan2'
        list ports 'lan3'
        list ports 'lan4'

    config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'

    config interface 'wan'
        option device 'wan'
        option proto 'dhcp'

Definicja jest prostrza, bardziej przejrzysta i jednoznacznie wskazuje który port jest konkretnie przypisany do jakiej sekcji konfiguracyjnym.
Przy okazji zaprezentowano także nowy sposób tworzenia bridge wprowadzony po wydaniu OpenWrt 21.02-rc2. Obecnie w sekcji nie ma opcji type bridge oraz ifname, jest za to opcja device która może wskazywać albo odpowiedni interfejs (np. wan) albo interfejs bridge (w tym przykładzie - br-lan), którego definicja jest osobnej sekcji typu device. Sekcja ta zawiera listę portów wchodzących w skład tego bridge.

Definiowane VLANów na WAN

Zróbmy klasyczny przykład - potrzebujemy tagowany VLAN 35 na interfejsie wan. Wg starej konfiguracji wyglądało to tak:


    config interface 'wan'
        option ifname 'eth0.35'
        option proto 'dhcp'

    config switch
        option name 'switch0'
        option reset '1'
        option enable_vlan '1'

    config switch_vlan
        option device 'switch0'
        option vlan '1'
        option ports '0 1 2 3 6t'

    config switch_vlan
        option device 'switch0'
        option vlan '35'
        option ports '4t 6t'

lub ostanią sekcję można zamienić na poniższą:


    config switch_vlan
        option device 'switch0'
        option vlan '2'
        option vid 35
        option ports '4t 6t'

co jest taką samą definicją.

Dla DSA VLANy definiuje się przez stworzenie nowej sekcji typu 802.11q


    config interface 'wan'
        option proto 'dhcp'
        option device 'wan.35'

    config device
        option type '8021q'
        option ifname 'wan'
        option vid '35'
        option name 'wan.35'

Sieć WiFi na innym VLAN

Sytuacja często spotykana w "przemysłowych" punktach dostępowych, gdzie mamy rozdzieloną sieć do zarządzenia AP oraz ruch dla klientów. W przypadku AP Ubiquiti konfiguracja można wyglądać następująco:

image

AP mamy dołączony kablem do portu LAN1. Musimy teraz ustawić nasz router. Tworzymy sieć gościnną a następnie modyfikujemy konfigurację sieci, a właściwie bridge do następującej postaci:


    config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'lan1'
        list ports 'lan2'
        list ports 'lan3'
        list ports 'lan4'

    config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option netmask '255.255.255.0'
        option ipaddr '192.168.1.1'

    config interface 'guest'
        option device 'br-guest'
        option proto 'static'
        option ipaddr '172.16.0.1'
        option netmask '255.240.0.0'

    config device
        option name 'br-guest'
        option type 'bridge'
        list ports lan1.7

Po restarcie utworzy się VLAN 7 na interfejsie LAN1, będzie dostęp do panelu zarządzenia AP (w tym przypadku: 192.168.1.20) oraz klient podłączony do wifi dostanie adres z sieci gościnnej.

Inne konfiguracje

Inne możliwości definiowana VLANów dla DSA można znaleźć na forum OpenWrt.