VLAN kasutamine

Allikas: Kuutõrvaja

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.

Vlanidarvutid.png

Ü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.

Arvutikolm.png

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

Vlan-1.gif

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

Kasulikud lisamaterjalid