L1 a L2 - Ethernet, WiFi a PPP

VLAN a Linux

V Linuxu jsou síťové karty - eth0, nebo třeba enp3s0, obyčejné neotagované porty a můžeme je chápat, jako protistranu access portu switche. Chceme-li Linux připojit k trunk portu, potřebujeme mít možnost přijmat a vysílat rámce s 802.1Q tagem pro konkrétní číslo VLANy. To v Linuxu uděláme pomocí virtuálního síťového rozhraní, které vlastně nadstavbou nad konkrétním fyzickým (nebo případně virtuálním) ethernetovým rozhraním.

Rámce neoznačené 802.1Q značkou (tag) přichází a vstupují do síťového stacku ze síťového interfacu, který odpovídá fyzickému (nebo virtuálnímu) ethernetovému adaptéru. Naopak PDU vyšších vrstev, která se mají zabalit do ethernetového rámce a odeslat přes interface odpovídající fyzickému, odejdou bez 802.1Q značky. Dorazí tedy na straně switche do VLAN určené jako access nebo v případě trunk portu do VLAN označené jako native pro daný trunk port. Následující schéma ukazuje, jak to bude vypadat v našem příkladě s nativní VLAN1 a taggovanou (ne-nativní) VLAN 10:

Linux Vlan

Rámce označené pomocí 802.1Q tagů přijímá linuxové jádro přes fyzické síťové rozhraní a na tomto rozhraní je lze i zachytit pomocí nástroje tcpdump a to včetně 802.1Q tagu. Do síťového stacku však vstoupí z příslušného VLAN rozhraní (eth0.10 v našem příkladě), které musí být vytvořeno nad fyzickým ethernetovým rozhraním, kterým označený rámec přišel. Číslo VLAN nastavené na rozhraní se musí shodovat s 802.1Q tagem. Pokud některá z těchto podmínek neplatí, je daný rámec zahozen a nebude dále zpracován.

Pro odesílaní rámců přes VLAN rozhraní platí podobná pravidla. Hierarchické pojmenování - v příkladě eth0.10 je jen konvence. (Na starších jádrech to bylo jedno ze čtyř povolených pojmenování VLAN interfacu. Na nových jádrech - 4.0+ se už ale síťové interfacy mohou jmenovat jakkoliv. Přesto je dobrý zvyk číslo VLAN ve jménu interfacu zachovat.) Podrobněji se podíváme na nastavení VLAN interfaců v další kapitole.