Szerkesztő:RostásAttila
VLAN a Linux-on, Debian alatt
Mi is az a VLAN? A VLAN (Virtual Local Area Network) az IEEE 802.1Q szabványban definiált. VLAN segítségével a hálózatok fizikai kialakításától függetlenül definiálhatunk logikai (szoftveresen létrejövő) broadcast hálózatokat az egy ugyanazon VLAN hálózatban szereplő host-ok között. A VLAN megvalósítása az OSI modell 2. rétegében, a adatkapcsolati rétegben történik. Gyakorlatilag a hálózati csomagok kapnak még egy 4 bájtos (*) fejlécet amelyben definiálva van egy 12 bites VLAN Identifier (VID), mely 4096 külön logikai hálózatot tenne lehetővé egy ugyanazon hálózati interface-n, vagy kábelen. Ennél a gyakorlatban – implementációtól függően – valamelyest kevesebb érhető el. A 0. és a 4095. VLAN a szabvány szerint foglaltak. Az 1. VLAN pedig a mindenki számára látható forgalmat jelenti. (Átlátszó VLAN.) A VLAN hálózatokban két eszköz akkor van azonos logikai közegben, ha a VID-jük megyegyezik. Különböző VID-ű hálózatok között a kommunikációt az erre kijelölt eszköz (pl. egy router, vagy switch…) végezheti el a 3. – hálózati - rétegben. A VLAN témakör részletes mindenre kiterjedő ismertetésére kitérni nincs lehetőség, a forrásjegyzékben szereplő irodalmakból azonban jól megismerhető.
Linux alatt
VLAN kernel támogatás: A 802.1Q szabvány a kernel 2.4.21-es verziója óta a kernel része, 8021q a modul neve. A VLAN támogatáshoz a hálózati kártya driverének is támogatnia kell az esetlegesen nagyobb, mint 1500 bájt-os MTU-t. (Tapasztalataim alapján a szabvány Debian 2.6.8 kernel e1000 és e100 moduljai tökéletesen működnek. Azért nem a 2.4-es kernel széria lett a kiválasztott, mert ott a VLAN-ok fölötti bridge építése iptables tűzfalas szűréssel nem lehetséges. ld. később )
VLAN utility-k és használatuk:
A VLAN hálózatok létrehozása a vconfig programmal lehetséges a következő szintaxis szerint:
vconfig add interface_name VID
És ekkor létrejön az interface_name.VID interface, amely már a VID hálózatban képes kommunikálni.
Pl. az eth0 interface feletti 150-es VLAN létrehozása a következőféleképpen lehetséges:
vconfig add eth0 150
Ekkor a következő interface jelenik meg:
eth0.150 Link encap:Ethernet HWaddr 00:02:A5:CE:61:CC inet addr:192.168.1.1 Bcast:192.168.255.255 Mask:255.255.255.0 inet6 addr: fe30::212:a3ff:fdce:61cd/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:406783997 errors:0 dropped:0 overruns:0 frame:0 TX packets:444927484 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2283210879 (2.1 GiB) TX bytes:2212731126 (2.0 GiB)
Egy ilyen virtuális eszköz eltávolítása a
vconfig rem interface_name.VID
-rel lehetséges.
Esetünkben:
vconfig rem eth0.150
Debian alatt lehetséges a /etc/network/interfaces fájl használata a VLAN-ok definiálására. A fenti példa így nézhetne ki:
iface eth0.150 inet static address 192.168.1.1 netmask 255.255.255.0
,vagy
iface vlan150 inet static vlan-raw-device eth0 address 192.168.1.1 netmask 255.255.255.0
,vagy
iface eth0.0150 inet static address 192.168.1.1 netmask 255.255.255.0
,vagy
iface vlan0150 inet static vlan-raw-device eth0 address 192.168.1.1 netmask 255.255.255.0
A 4 féle megadás mind ugyanazt az eredményt érik el; egymással ekvivalensek.
Iptables működik szokásos szintaxissal a virtuális interface-ekre.
Bridge VLAN fölött Debian Linux-on
Kernel támogatás bridge-hez: Patch-ként a 2.4-es szériához is elérhető, de a 2.6-os kernel széria része a bridge képesség, a bridge modul által. Nagy különbség a két változat között, hogy a 2.4-ben nincs lehetőség a bridge-elt forgalom tűzfalazására, ugyanis a bridge-ben nem kerül kibontásra a 4 bájttal megnövelt (beágyazott) csomag, így az iptables nem ismeri fel. A 2.6.1-től kezdve azonban van lehetőség tűzfalazásra.
A /proc/sys/net/bridge/-ben levő kapcsolók állításával:
- bridge-nf-call-arptables - pass (1) or don't pass (0) bridged ARP traffic to arptables' FORWARD chain.
- bridge-nf-call-iptables - pass (1) or don't pass (0) bridged IPv4 traffic to iptables' chains.
- bridge-nf-call-ip6tables - pass (1) or don't pass (0) bridged IPv6 traffic to ip6tables' chains.
- bridge-nf-filter-vlan-tagged - pass (1) or don't pass (0) bridged vlan-tagged ARP/IP traffic to arptables/iptables
Bridge-ek létrehozása: Linuxokban a brctl programmal lehet létrehozni bridge-eket az interface-ek között.
brctl addbr brX
-el létre lehet hozni bridge-eket. Ezekhez ifconfiggal akár IP-cím és routing tábla is
létrehozható.
brctl addif brX device
utasítással pedig interface-ket adhatunk a bridge-hez.
brctl paraméterezhetősége:
addbr <bridge> add bridge delbr <bridge> delete bridge addif <bridge> <device> add interface to bridge delif <bridge> <device> delete interface from bridge setageing <bridge> <time> set ageing time setbridgeprio <bridge> <prio> set bridge priority setfd <bridge> <time> set bridge forward delay sethello <bridge> <time> set hello time setmaxage <bridge> <time> set max message age setpathcost <bridge> <port> <cost> set path cost setportprio <bridge> <port> <prio> set port priority show show a list of bridges showmacs <bridge> show a list of mac addrs showstp <bridge> show bridge stp info stp <bridge> <state> turn stp on/off
Debian alatt lehetséges a /etc/network/interfaces fájl használata a bridge-ek definiálására.
auto br0 iface br0 inet static address 192.168.0.1 netmask 255.255.255.0 gateway 192.168.0.1 bridge_ports eth0 eth1 bridge_stp on
Amennyiben VLAN interface-k fölött szeretnénk bridge-et létrehozni, egyszerűen a következő szintaxis használható:
auto br0 iface br0 inet static address 192.168.1.1 netmask 255.255.255.0 gateway 192.168.1.1 bridge_ports eth0.150 eth1.150 bridge_stp on
Nincs szükség külön VLAN interface definiálásra; elvégzi automatikusan a rendszer. A számítógép elérhető marad távolról, ugyanis a bridge örökli az egyik interface MAC address-ét és ehhez mint felül látszik IP cím is rendelhető.
Így Linux-szal létrehozhatunk switch-eket, routereket, átlátszó tűzfalakat VLAN, ill. nem VLAN fölött.
Felhasznált irodalom:
- Andrew S. Tanenbaum: Számítógép hálózatok
- Karen Webb: Building Cisco Multilayer Switched Networks (103. oldal *)
- http://en.wikipedia.org/wiki/VLAN
- http://ebtables.sourceforge.net/brnf-faq.html
- man vlan-interfaces
- google.com