VLAN kasutamine
Sisukord
VLAN (Virtual Local Area Network)
VLAN (Virtual Local Area Network) tehnika võimaldab ühel füüsilisel infrastruktuuril moodustada mitmeid loogilisi etherneti segmente, selliste võimalustega
- lokaliseerida liiklust (on vaieldav kas tegu on ranges mõttes turvalisuse instrumendiga, vt nt VLAN Hopping)
- lahendada topoloogilisi küsimusi ISO level 2 kihis, st kiht allpool ruuterid
VLANilises andmevahetuses osalevatel ethernet frame'idel on lisaks juures spetsiaalne VLAN silt (ingl. k. tag), mis sisaldab andmeid selle kohta, millisesse VLANi frame kuulub. VLAN siltide abil saavad võrgus osalevad seadmed kontrollida kõnealuse frame'i liikumist. Kasutaja jaoks esinevad VLAN sildid positiivsete täisarvude kujul, mida nimetatakse VLAN ID'deks.
Tavaliselt kõneldaks VLAN võimest seoses switchidega, kahes tähenduses
- mode access - füüsilise switchi igale pordile on öeldud, millisesse VLANi ta kuulub ning ühendades selliselt seadistatud switchi portidesse arvutid nö näevad üksteist ethernetis ainult samasse VLANi kuuluvad arvutid. Tavaliselt kasutatakse erinevates VLANides töötavatel seadmetel erinevaid ip subnet aadresse ja kui sellise asjakorralduse puhul ka seadistada ühe VLANi arvutile aadress teise VLANi ip subnetist, siis ikkaga ühendust teine VLANi arvutitega ei teki kuna ethernet frame'ide tasemel (ISO level 2) on selline liiklus blokeeritud. Sellisel juhul omistab switch peale etherneti frame'i porti sisenemist talle VLAN märgi ning peale pordist väljumist VLAN silt eemaldatakse. Selliselt seadistatud switchi porte kasutavad arvutid iseenesest ei tea midagi VLANidest.
- mode trunk - selleks, et mode access režiimis saaks kasutada sama VLANi nii, et see ulatub üle mitme switchi peab olema VLAN siltidega frame'idel võimalus liikuda switchide vahel nii, et need märgid säilivad. Kui näiteks ühte VLANi peab kuuluma porte ühe ja teise switchi küljest, siis piisab need kaks switchi ühendada omavahel kokku tavalise võrgukaabliga ning seadista vastavad pordid mode trunk'is, mis tähendab, et selliste portide läbimisel ethernet frame'idelt VLAN silte ei eemaldata. Seadistades switchi pordi mode trunk režiimi tuleb öelda, milliste VLAN ID'dega ethernet frame'id pordist läbi saavad.
Mode access või mode trunk režiimis olek on üksiku pordi mitte switchi omadus.
Switchis ehk lülitis on igal vlani paigutatud pordil kaks asendit taged ja untaged ehk märgitud ja mittemärgidu
Switchi(lüliti) poolselt näeb asi välja selline, et tekitatakse kaks Vlani. Sageli on esimene default vlan juba isegi olemas ja kõik pordid on sinna sisse untaged. Kui nüüd tekitada uus vlan, ja lisada poole lüliti pordid sinna ümber ja untagida tekib meil virtuaalselt kaks teineteisest eraldatud lülitit-võrku mis omavahel suhelda ei saa.
Juhul kui aga tahame, et üks lüliti port oleks nii vlanis 1 kui ka vlanis 2 tuleb see port tagida ehk märkida. Samuti tuleb vlani tagid lisada võrguseadmele Linuxi/Unixi poolselt siis eraldab juba võrgukaart tagide kaudu neid võrke edasi.
Tagimine ehk märkimine toimub IEEE 802.1q standardi alusel, mille käigus lisatakse tagitavatele pakettidele lisainfot. Hiljem see info eemaldatakse võrgukaardi poolt.
Ülaloleval skeemil on pordid 1-4 untagitud vlani 1 ja 6-7 vlani 2. Port viis on aga tagitud mõlemasse vlani ning saab ligipääsu kõigile seal portidesse ühendatud seadmetele. Täpsemalt siis
- Arvuti üks omab ligipääsu masinale arvuti2 ja arvuti3 aga mitte masinale arvuti4.
- Arvuti4 pääseb ligi masinale arvuti3 aga mitte masinatele arvuti1 ja arvuti2.
- Arvuti3 pääseb ligi kõigile kolmele masinale.
Seejuures ei vaja arvutid 1, 2 ja 4 mitte mingit täiendavat võrguseadistust. Küll aga vajab seda arvuti3, kuhu on vaja tekitada samuti vlani seadistused.
Vlani seadmete tekitamine käib vconfig nimelise utiliidi abil ja lähemalt räägitakse sellest allpool linuxi alampeatükis.
Cisco switch
Cisco switchi puhul toimub mode access seadistamine näiteks selliselt
conf t interface GigabitEthernet0/9 no shutdown switchport access vlan 5 switchport mode access ^z write
Kui mõni muu port veel selliselt seadistada ja neisse portidesse ühendada arvutid ning seadistada neile sama ip subneti aadressid, siis nad saavad omavahel võrgus suhelda.
Cisco switchi puhul toimub mode trunk seadistamine näiteks selliselt (nb! mõnedel mudelitel ei ole 'switchport trunk encapsulation dot1q' käsku olemas, st ilma selle ütlemiseta toimub trunk port seadistamine)
conf t interface GigabitEthernet0/10 no shutdown switchport trunk encapsulation dot1q switchport mode trunk switchport trunk allowed vlan 5,6,7 ^z write
Kui teise switchi mõni port seadistada sarnaselt ja nad ühendada mööda kõnealuseid porte kaabliga, ning seadistada kummagi switchi muid porte mode access režiimis VLAN ID väärtusega 5, siis saavad neisse portidesse ühendatud arvuti kõik omavahel suhelda. Seejuures peab arvestama, et kahe switchi vahel on andmevahetuse kiirus piiratud trunk režiimis oleva ühenduse kiirusega.
OpenBSD kasutamine mode trunk režiimis
Lisaks sellele, et OpenBSD töötab tavalise mode access režiimis seadistatud switch pordi külge ühendatud arvutina saab OpenBSD seadistada käima ka selliselt, et ta töötab VLAN siltidega tegelemise mõttes nagu mode trunk režiimis töötava pordiga switch. St OpenBSD ise kontrollib andmevahetust VLAN siltide alusel sh moodustab neid silte. Selline asjakorraldus nt võimaldab lülitada arvuti samaaegselt erinevatesse VLANidesse kuigi tal on vaid üks füüsiline võrgukaart.
Selleks tuleb ühendada samuti sobivalt seadistatud VLAN ID'dega trunk režiimis switchi port ja füüsiline võrgukaart kaabliga ning esmalt moodustada vlan seade seostades ta sobiva füüsilise seadmega, nt xl0
ifconfig vlan5 vlan 5 vlandev xl0
ning seejärel seadistada loogilisele seadme võrk, näiteks
ifconfig vlan5 inet 192.168.5.1 netmask 255.255.255.0
Kusjuures neid käske võib korrata seostades ühe füüsilise seadmega mitu erinevat VLANi (samad mis vastaval switchi pordil), nt
# ifconfig -A .. xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:60:97:2a:4b:4c media: Ethernet 10baseT (10baseT half-duplex) status: active inet6 fe80::260:97ff:fe2a:4b4c%xl0 prefixlen 64 scopeid 0x3 .. vlan5: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:60:97:2a:4b:4c vlan: 5 priority: 0 parent interface: xl0 groups: vlan inet6 fe80::260:97ff:fe2a:4b4c%vlan5 prefixlen 64 scopeid 0xb vlan6: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:60:97:2a:4b:4c vlan: 6 priority: 0 parent interface: xl0 groups: vlan inet6 fe80::260:97ff:fe2a:4b4c%vlan6 prefixlen 64 scopeid 0xc vlan7: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:60:97:2a:4b:4c vlan: 7 priority: 0 parent interface: xl0 groups: vlan inet6 fe80::260:97ff:fe2a:4b4c%vlan7 prefixlen 64 scopeid 0xd
Seadistusfaili /etc/hostname.if kasutamine
Selleks, et peale bootimist vlan seade automaatselt moodustuks, tuleb tekitada tekstifail /etc/hostname.vlan5 sisuga
inet 192.168.5.1 255.255.255.0 NONE vlan 5 vlandev xl0
Selleks, et võrk töötaks peab see seade, mida vlan seadmed kasutavad olema up olekus, selleks tuleb antud näite puhul omada faili /etc/hostname.xl0 sisuga
up
Selleks, et alglaadimise käigus tekiks nö puhas (st ilma seadistatud ip aadressita) vlan seade tuleb kirjutada /etc/hostname.vlan5 faili
vlan 5 vlandev xl0
Linux'i kasutamine mode trunk režiimis
Operatsioonisüsteem Debian GNU/Linux abil saab edukalt kasutada vlan seadmeid. Tuleb paigaldada pakett vlan
# apt-get install vlan
mis sisaldab manuaali man vlan-interfaces ning laadida 8021q moodul
# modprobe 8021q
ning nö eth0.5 kujulise nimega VLAN seadme tekitamiseks öelda
# ip link set dev eth0 up # vconfig set_name_type VLAN_PLUS_VID_NO_PAD
# vconfig add eth0 5 Added VLAN with VID == 5 to IF -:eth0:-
# vconfig add eth0 6 Added VLAN with VID == 6 to IF -:eth0:-
# vconfig add eth0 7 Added VLAN with VID == 7 to IF -:eth0:-
Tekivad seadmed
vlan5 Link encap:Ethernet HWaddr 00:0C:42:07:1A:44 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) vlan6 Link encap:Ethernet HWaddr 00:0C:42:07:1A:44 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) vlan7 Link encap:Ethernet HWaddr 00:0C:42:07:1A:44 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Ning seejärel seadistada vlan seadmete võrk, nt selliselt
# ifconfig vlan5 192.168.5.1 netmask 255.255.255.0 # ifconfig vlan6 192.168.6.1 netmask 255.255.255.0 # ifconfig vlan7 192.168.7.1 netmask 255.255.255.0
Seadme eemaldamiseks tuleb öelda
bash# vconfig rem vlan7 Removed VLAN -:vlan7:-
VLAN seadme nimede esitamisel on üldiselt levinud sellised kujud
- VLAN_PLUS_VID - vlan0005
- VLAN_PLUS_VID_NO_PAD - vlan5
- DEV_PLUS_VID - eth0.0005
- DEV_PLUS_VID_NO_PAD - eth0.5
Vconfigu asemel soovitatakse kasutada tänapäev ip käsku, nö universaalset töövahendit
# ip link add link eth2 name eth2.80 type vlan id 80
Seadistusfaili /etc/network/interfaces kasutamine
Seadistusfailist /etc/network/interfaces toimub vlan seadmete seadistamine nt selliselt
auto eth0.5 iface eth0.5 inet static address 192.168.5.1 netmask 255.255.255.0 auto eth0.6 iface eth0.6 inet static address 192.168.6.1 netmask 255.255.255.0 auto eth0.7 iface eth0.7 inet static address 192.168.6.1 netmask 255.255.255.0
või soovides kasutada seadmenimedena tingimata vlan* kuju
auto vlan5 iface vlan5 inet static vlan-raw-device eth0 address 192.168.5.1 netmask 255.255.255.0 auto vlan6 iface vlan6 inet static vlan-raw-device eth0 address 192.168.6.1 netmask 255.255.255.0 auto vlan7 iface vlan7 inet static vlan-raw-device eth0 address 192.168.6.1 netmask 255.255.255.0
/proc failisüsteemis asub vlan seadmete kohta info kataloogis /proc/net/vlan
# find /proc/net/vlan/ -ls 4026533686 0 dr-xr-xr-x 2 root root 0 Jun 30 14:40 /proc/net/vlan/ 4026533705 0 -rw------- 1 root root 0 Jun 30 14:40 /proc/net/vlan/peth0.5 4026533703 0 -rw------- 1 root root 0 Jun 30 14:40 /proc/net/vlan/peth0.6 4026533701 0 -rw------- 1 root root 0 Jun 30 14:40 /proc/net/vlan/peth0.7 4026533687 0 -rw------- 1 root root 0 Jun 30 14:40 /proc/net/vlan/config
Probleemid
Kui vlani lisamisel viga RTNETLINK answers: Operation not supported
siis kernelis puudu vlani moodul või see laadimata
# modprobe 8021q
802.1Q-in-Q
802.1Q-in-Q, QinQ ehk stacked VLANs tehnika võimaldab kasutada mitmekordseid VLAN silte. OpenBSD puhul toimub svlan(4) (service VLAN) seadistamine selliselt
vlan -> svlan -> füüsiline seade
svlan seade moodustatakse füüsilisele re3 seadmele
# cat /etc/hostname.svlan34 vlandev re3 description svlan34
ja vlan seade moodustatakse svlan seadmele, praktiliselt tehakse tõenäoliselt enam kui üks sarnane vlan seade
# cat /etc/hostname.vlan33 vlandev svlan34 description vlan33
Tulemusena paistab re3 seadmel nt selline QinQ liiklus
01:37:11.326915 00:0c:42:07:1a:47 ff:ff:ff:ff:ff:ff 88a8 50: QinQ svid 34 pri 0 802.1Q vid 33 pri 0 arp who-has 10.140.10.254 tell 10.140.10.210 01:37:12.334440 00:0c:42:07:1a:47 ff:ff:ff:ff:ff:ff 88a8 50: QinQ svid 34 pri 0 802.1Q vid 33 pri 0 arp who-has 10.140.10.254 tell 10.140.10.210
FreeBSD Vlan
Loome uue virtuaalse võrguseadme, mille läbi vlani kasutada
# ifconfig {vlan-name} create
Seadistame sellele võrguseadmele ip aadressi ja vlani numbri, ning seome ta reaalse füüsilise võrgukaardiga em0
# ifconfig vlan5 10.0.0.1 netmask 255.255.255.0 vlan 5 vlandev em0
Selleks, et seadistus laetaks juba boodil tuleb rc.confi lisada
cloned_interfaces="vlan0" ifconfig_vlan0="inet x.x.x.x netmask y.y.y.y vlan 2 vlandev em0"
Private VLAN
TODO, http://en.wikipedia.org/wiki/Private_VLAN
L3 switch ja VLAN liidesed (interfaces)
Mõned hallatavad switchid võimaldavad lisaks VLAN seadistustele tekitada nn VLAN liideseid (ingl. k. vlan interface), tavaliselt omistatakse sellisele liidesele ka ip aadress. Lõpptulemusena hakkab selline switch toimima lisaks ruuterina, sellist asjakorraldust kirjeldab joonis
kus
- switchis on kasutusel kolm vlani (10, 22, 509)
- switchis on seaditatud 11 porti nn mode access režiimis, vastavalt nagu värvidega tähistatud
- switchis on kaks nn trunk porti, kus liiguvad kõigi kolme vlani paketid koos vlan siltidega
- switchis on kirjeldatud kolm vlan interface'i, igas vlan'is üks
- lisaks switchile on kujutatud igasse vlani kuuluvat ühte töökohaarvutit
- lisaks on kujutatud kahte nö OpenBSD ruuterit; ühel on internetipoolne ühendus ISP 1 ja teisel ISP 2 teenusepakkuja abil; sisemised võrguliidesed töötavad samuti vlan siltidega nagu vastavad switchi pordid
- Töökoharvuti 1 ja 2 vaikelüüsidena kasutatakse switchi vlan liideseid; nende arvutite jaoks on switchis asuv nn L3 funktsionaalsus ruuteriks; switchi sisemise ruuteri kaudu saadetakse pakette Töökohaarvuti 1 -> Töökohaarvuti 2 suunal (võib olla võiks isegi öelda, et selliselt liikuvaid pakette ei switchita vaid ainult ruuditakse); Töökohaarvuti 1 pealt internetti suunduvad paketid saadab switch oma vaikelüüsi kaudu esimesele OpenBSD ruuterile, aadressile 10.0.9.15
- Töökohaarvuti 3 vaikelüüsina kasutatakse teise OpenBSD ruuteri aadressi 10.0.9.1; Paketid suunal Töökohaarvuti 3 -> Töökohaarvuti 2 jõuavad sihtpunkti läbi teise OpenBSD ruuteri ja switchi sisemine L3 tarkus nende liigutamisest osa ei võta
- Töökohaarvuti 3 pealt internetti suunduvad paketid saadab OpenBSD ruuter ISP 2 kaudu internetti