Wat in de wereld van networking ook zeer interessant is en mooi om in de praktijk te brengen is, zijn vLAN’s
Maar wat is een vLAN eigenlijk ?
Een vLAN is simpel gezegd een Virtual LAN.
Je kunt als je verschillende subnets wilt implementeren voor verschillende toepassingen of apparaten er voor kiezen om fysieke switches te gaan gebruiken.
Dat werkt prima, maar als je 20 subnets hebt, wordt het er niet praktischer op om 20 switches te gaan inzetten.
Voor de kosten hoef je het niet te doen evenals het beheren ervan.
vLAN’s gebruiken is effectief, flexibel en makkelijk te implementeren.
Om gebruik te kunnen maken van vLAN’s heb je een managed Switch nodig. Een switch die je dus kunt beheren.
Het is het noodzakelijk dat je een Layer 2 Switch hebt aangezien vLAN’s op layer 2 (Data link layer) van het OSI model opereren :
Een vLAN is niks anders als een virtuele switch. Op een managed switch is het mogelijk om in 1 fysieke switch meerdere virtuele switches te configureren en daar poorten aan toe te wijzen.
We gaan nu niet héél erg diep op het vLAN gebeuren in, maar we pakken even een paar praktische voorbeelden erbij wat we met vLAN’s kunnen bereiken.
Doelstelling :
Hierboven zien we Switch A en Switch B
Elke switch heeft 3 vLAN’s 1,2 en 3
Switches A en B zijn met elkaar verbonden met een Trunk. Een trunk is het transport van vLAN’s tussen verschillende switches.
in een vLAN kennen we Tagged en Untagged poorten.
een tag is niets anders als een label aan netwerkverkeer zodat duidelijk is bij welk vLAN dit verkeer hoort.
Een trunk zal dus altijd Tagged zijn verkeer afleveren anders weet de ontvangende switch natuurlijk niet bij welk vLAN dit hoort.
Alle 3 VLAN’s zijn gescheiden, dus apparaten in vLAN_1 kunnen niet “kijken” in VLAN_2 of VLAN_3
Het voordeel in dit voorbeeld is dat we met 2 switches die we bijvoorbeeld op 2 sites hebben geplaatst, 3 subnets kunnen afleveren, maar dat kunnen er net zo goed 30 zijn.
TRUNKS :
Tagged vs. Untagged :
Een trunk zal dus altijd zijn verkeer tagged afleveren en ontvangen om de pakketjes in het juiste vLAN terecht te laten komen.
Untagged poorten zijn in de meeste gevallen bedoeld voor de endpoints zoals computers, laptops, printers etc.
Soms kun je een endpoint ook Tagged aansluiten zoals bijvoorbeeld een WiFi Access Point die meerdere SSID’s uit laat komen op meerdere vLAN’s
In de praktijk :
Laten we eens een config voorbeeldje pakken :
We loggen in op een HP 24 poorts Procurve managed switch waarbij poort 23 en 24 als trunk wordt ingericht naar Switch B
Poort 1-10 is voor vlan_1
Poort 11-20 is voor vlan_2
Poort 21-22 is voor vlan_3
Om de switch te configgen gebruiken we het commando conf t gevolgd door enter
Vervolgens de volgende commando’s (elke regel gevolgd door enter):
trunk Trk1 23-24 trunk
vlan 1
tagged Trk1
untagged 1-10
vlan 2
tagged Trk1
untagged 11-20
vlan 3
tagged Trk1
untagged 21-22
wr mem
Bovenstaande config kun je op Switch B ook laden aangezien we voor dit voorbeeld voor gelijke configs gaan.
Nu kun je een netwerkkabel in poort 24 van beide switches steken om de trunk te activeren.
In Switch A kun je een computer in poort 1-10 (VLAN_1) prikken en op Switch B ook en ze zullen met elkaar kunnen communiceren.
Prik je de computer in Switch A op poort 11-20 (VLAN_2), dan zul je merken dat ze niet meer kunnen communiceren ; ze bevinden zich in verschillende netwerken.
Wanneer je de computer op Switch B in poort 11-20 prikt, zitten de computers weer in hetzelfde vLAN en is communicatie weer mogelijk.
Een tip :
Wanneer je twijfelt of een configuratie wel of niet gaat werken op een switch, kun je eerst de config uitwerken in notepad en dan kopieer en plak je de config in de CLI van de switch.
Gebruik het commando wr mem dan nog niet ! dit zorgt er namelijk voor dat de config wordt vastgelegd.
Wanneer je je zelf buitensluit van de switch kom je er namelijk niet meer gemakkelijk bij wat vaak tot het resetten van de switch leidt.
Mocht het gebeuren dat na het configgen de switch onbereikbaar wordt, haal je gewoon de spanning van de switch en dan weer opnieuw opstarten.
Alle niet opgeslagen wijzigingen zijn dan weg en de switch start weer op met de laatst opgeslagen configuratie.
Routering inrichten op de switch :
We gaan een stapje verder en duiken in de wereld van TCP/IP!
Wanneer je een layer 3 switch hebt, kun je verkeer ook gaan routeren waardoor je dus een switch als router in kunt zetten.
Indien je gebruik maakt van meerdere vLAN’s kun je de switch als router gaan gebruiken om daarmee je Firewall/Internet router te ontlasten.
Voor het gemak pakken we voorgaande config er even bij en passen deze aan door de rode commando’s toe te voegen :
Om de configuratie overzichtelijk te houden, kunnen we vLAN’s ook namen geven, deze zijn in het groen weergegeven
Let op : We gebruiken 10.0.0.254 als onze internet router, dat wordt dus de default gateway voor de switch waar het niet routeerbare verkeer naar toe gestuurd wordt
Switch A :
ip routing
ip route 0.0.0.0 0.0.0.0 10.0.0.254
trunk Trk1 23-24 trunk
vlan 1
name “SERVER VLAN”
ip address 10.0.0.1 255.255.255.0
tagged Trk1
untagged 1-10
vlan 2
name “WERKSTATION VLAN”
ip address 10.1.0.1 255.255.255.0
tagged Trk1
untagged 11-20
vlan 3
name “GASTEN VLAN”
ip address 10.2.0.1 255.255.255.0
tagged Trk1
untagged 21-22
wr mem
Switch B kunnen we ongewijzigd laten tenzij we gebruik willen maken van failover en VRRP mits de switch dit ondersteund.
Op de clients is het nu van belang dat daar de default gateway nu naar het ip adres van Switch wijst en dat is weer afhankelijk van in welk vLAN je zit met de client.
Nu is het ook mogelijk om tussen de verschillende vLAN’s te communiceren.
Wanneer Switch A verkeer ontvangt wat niet routeerbaar is naar 1 van de vLAN’s, dan gooit de switch dat op zijn default gateway naar 10.0.0.254 zodat deze dit verkeer kan afhandelen.
Nog een stapje verder :
Wanneer je met meerdere vLAN’s werkt, heb je zeer waarschijnlijk ook een DHCP Server draaien in je netwerk.
Als we er in dit voorbeeld vanuit gaan dat in VLAN 1 o.a. je DHCP Server draait, zal een device in VLAN 2 en 3 bij het broadcasten naar een DHCP server geen antwoord ontvangen en dus ook geen ip adres krijgen.
Dit kunnen we oplossen middels het volgende :
Er van uitgaande dat je DHCP Server op 10.0.0.200 draait :
1) Maak op je DHCP Server verschillende scopes aan voor de vLAN’s, dus een scope voor het netwerk 10.0.0.0/24, 10.1.0.0/24 en 10.2.0.0/24
2) Log weer in op de switch en zet deze met conf t in configuratie modus.
3) Voeg bij elk gedefinieerd vLAN een ip helper-address toe. Dit Helper address zorgt ervoor dat DHCP broadcasts worden doorgestuurd naar het opgegeven adres.
Praktisch voorbeeld :
ip routing
ip route 0.0.0.0 0.0.0.0 10.0.0.254
trunk Trk1 23-24 trunk
vlan 1
name “SERVER VLAN”
ip address 10.0.0.1 255.255.255.0
tagged Trk1
untagged 1-10
vlan 2
ip helper-address 10.0.0.200
name “WERKSTATION VLAN”
ip address 10.1.0.1 255.255.255.0
tagged Trk1
untagged 11-20
vlan 3
ip helper address 10.0.0.200
name “GASTEN VLAN”
ip address 10.2.0.1 255.255.255.0
tagged Trk1
untagged 21-22
En tot slot : wr mem
Met deze configuratie kunnen devices in vLAN 2 en 3 dus een IP Adres ophalen van de DHCP Server in vLAN 1
Je kunt vLAN’s ook “omgekeerd” gebruiken wanneer je bijvoorbeeld verschillende vestigingen hebt en middels een Dark Fiber (eigen, dedicated glasvezel verbinding) gekoppeld zijn.
Hier krijg je namelijk ook vLAN’s toegekend.
Zorg er voor dat je een mini GBic module (glasvezel module) in je switch hebt zitten. Maak daar een trunk van en maak vLAN’s aan die je toegewezen hebt gekregen van je Dark Fiber leverancier.
De Trunk laat je tagged uitkomen in alle vLAN’s en voila !
Network Redunandcy inrichten
Met VLAN’s, trunks etc. kunnen we nog verder gaan en hiermee redundancy inrichten.
Hierbij creëren we een ring met switches :
In bovenstaande afbeelding zien we dat er 3 switches in een ring aangesloten zijn.
Mocht er een situatie voordoen waarbij 1 link kapot gaat, kunnen alle switches alsnog bereikt worden via een alternatieve route. Perfect dus voor een redundant netwerk !
Maar dat gaat niet zomaar !
Wanneer we switches op deze manier aansluiten, creëren we eigenlijk bewust een loop in het netwerk met een broadcast storm als gevolg welke je gehele netwerk plat kunnen leggen.
We moeten hiervoor Spanning Tree inschakelen om te voorkomen dat er een loop is.
Spanning Tree zorgt er simpel gezegd voor dat network loops worden geblokkeerd door in het netwerk op een logische plek de link te blocken.
Wanneer zich een kabelbreuk voordoet, detecteert Spanning Tree dit als een Network Topology Change en zal ervoor zorgen dat de links weer active gemaakt worden zodat het netwerk intact blijft. Wanneer dit gebeurd, zal merkbaar zijn dat er een “hik” in het netwerk zit. Na deze hik, werkt het netwerk weer normaal.
Wat Spanning Tree in de basis doet
Spanning Tree blockt een link zodat er geen loop is en deblokkeert die link wanneer er een link uitvalt om het netwerk intact te houden.
Om Spanning Tree te activeren op je switches (dat moet op alle switches in het netwerk) voeg je de volgende regel aan je bestaande config toe :
spanning-tree
En sla de config op met wr mem
Dit is de meest basic configuratie van Spanning Tree, maar dit is al zeer effectief.
Zorg er voor dat je op alle switches je vlan’s uitrolt en de trunks/uplinks voor die vlan’s beschikbaar maakt.
Op deze manier zorg je er voor dat je vlan’s altijd in de lucht blijven wanneer er een kabelbreuk is of een switch kapot gaat.
Maar pas op wanneer je meerdere managed switches gebruikt die op 1 van de 3 bovenstaande switches aangesloten is. Wanneer deze switches bijvoorbeeld dagelijks in en uitgeschakeld worden, zal dit een Topology Change veroorzaken wat weer voor een hik in het netwerk kan zorgen.
Om dit tegen te gaan, moet je controleren op welke switchpoort de in/uitgeschakelde switch zich bevindt en deze poort van Spanning Tree uitsluiten met een bpdu-filter.
Het commando om dit te doen is :
spanning-tree <poortnummer> bpdu-filter
En sla je config weer op met wr mem
Nu kunnen de switches in- en uitgeschakeld worden zonder dat 1 van de 3 switches een Topology Change zal doorvoeren.
Ook belangrijk is het aanwijzen van een rootswitch welke de “manager” van het spanning tree geheel is. Dit geef je aan met een prio :
spanning-tree priority 0
Hiermee geef je aan dat dit de “hoofd” switch is en dat spanning-tree ervoor moet zorgen dat altijd de korte lijntjes naar deze switch aanwezig zijn. Dit is dus eigenlijk de belangrijkste switch in je netwerk. Je kunt met prio’s werken en dus op volgorde je belangrijkste switches gaan aangeven. 0 is de hoogste prioriteit.
Wanneer je geen root switch aanwijst, zal spanning tree dit zelf doen door de switch te kiezen met het laagste MAC adres en dat geeft niet altijd het gewenste resultaat.
Wanneer je heel veel datadoorvoer hebt in je netwerk en de switch met het laagste MAC adres in een wat verouderde maar vooral trage switch, zal spanning tree er altijd voor willen zorgen dat het verkeer door deze switch heen zal gaan wat performance problemen oplevert.
Er bestaan nog meer Spanning Tree varianten zoals MSTP, RSTP, daarover later meer !
Het is in ieder geval al erg leuk om hier al eens mee te spelen en te kijken wat dit allemaal precies doet.
Ga niet spelen met Spanning Tree in je productie netwerk aangezien je het netwerk hiermee plat kunt leggen !
Doe dit in een testnetwerkje waar het geen probleem is als er wat uitvalt.
Tot zover de introductie tot vLAN’s !
Mocht je vragen hebben hierover, laat het even weten ! Misschien kan ik je helpen 🙂