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.
W wersji rozwojowej OpenWrt oraz wydaniu 21.02 tylko dla niektórych architektur zostało wprowadzone DSA. Dla pozostałych nadal istnieje pojęcia switcha i VLANy konfiguruje się z wykorzystaniem
swconfig.
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
**Scenariusz*: mamy AP pracujący z adresem 192.168.1.1 (adres na management interface), chcemy żeby WiFi rozgłaszało sieć gościnną skojarzoną z VLAN 7.
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:

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.