« VLAN » : différence entre les versions
(Page créée avec « = Les VLANs = PDF de la classe virtuelle du 24/10 sur les VLANS: <pdf>Media:ETHERNETvlan.pdf</pdf> == L'intérêt des VLANs == Les VLANs ont pour intérêt de sépare... ») |
Aucun résumé des modifications |
||
(4 versions intermédiaires par la même utilisatrice non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
[[Category:reseau]] | |||
= Les VLANs = | = Les VLANs = | ||
Ligne 8 : | Ligne 8 : | ||
== L'intérêt des VLANs == | == L'intérêt des VLANs == | ||
Les VLANs ont pour intérêt de séparer les domaines de diffusion, c'est-à-dire concrètement de séparer un réseau en plusieurs sous-réseaux de façon logique; ainsi avec des VLANs ont peut empêcher les sous-réseaux de parler entre eux. On peut par exemple avoir un sous-réseau pour les serveurs, un autre pour la bureautique, etc... En plus du découpage en sous-réseaux différents, on découpe effectivement les réseaux : impossible pour un attaquant de passer de l'un à l'autre. Cela peut permettre de mettre en place des solutions moins coûteuses qu'un découpage avec des switches et des routeurs, par exemple. | Les VLANs ont pour intérêt de séparer les domaines de diffusion, c'est-à-dire concrètement de séparer un réseau en plusieurs sous-réseaux de façon logique; ainsi avec des VLANs ont peut empêcher les sous-réseaux de parler entre eux. On peut par exemple avoir un sous-réseau pour les serveurs, un autre pour la bureautique, etc... En plus du découpage en sous-réseaux différents, on découpe effectivement les réseaux : impossible pour un attaquant de passer de l'un à l'autre. Cela peut permettre de mettre en place des solutions moins coûteuses qu'un découpage avec des switches et des routeurs, par exemple. | ||
D'où l'idée de Virtual LAN : des LAN virtuelles, en d'autre termes logiques. | D'où l'idée de Virtual LAN : des LAN virtuelles, en d'autre termes logiques. | ||
== Tagguer des ports == | == Tagguer des ports == | ||
Ligne 20 : | Ligne 20 : | ||
Ainsi deux ports appartenant au même VLAN, il peuvent communiquer ensemble; sinon, non. L'idée est donc d'indiquer les ports pouvant communiquer ensemble en les tagguant. | Ainsi deux ports appartenant au même VLAN, il peuvent communiquer ensemble; sinon, non. L'idée est donc d'indiquer les ports pouvant communiquer ensemble en les tagguant. | ||
La séparation est donc LOGIQUE : elle n'est pas physique, elle implique du software qui peut avoir des bugs, ce qui est rare. Il faut donc suivre une certaine réflexion dans la création de ces VLANs. Quand on a un risque important, comme dans l'aviation par exemple, les VLANs peuvent ne pas suffire; on utilisera alors du matériel. | La séparation est donc LOGIQUE : elle n'est pas physique, elle implique du software qui peut avoir des bugs, ce qui est rare. Il faut donc suivre une certaine réflexion dans la création de ces VLANs. Quand on a un risque important, comme dans l'aviation par exemple, les VLANs peuvent ne pas suffire; on utilisera alors du matériel. | ||
Quand on parle de tagguer un port, on taggue les ports du switch, pas ceux des périphériques. On peut tagguer chaque port ou utiliser le VLAN par défaut. Celà signifie qu'il faut savoir à quel port chaque appareil est connecté, et donc une bonne documentation et un étiquetage (physiquement, sur les câbles) du réseau. | Quand on parle de tagguer un port, on taggue les ports du switch, pas ceux des périphériques. On peut tagguer chaque port ou utiliser le VLAN par défaut. Celà signifie qu'il faut savoir à quel port chaque appareil est connecté, et donc une bonne documentation et un étiquetage (physiquement, sur les câbles) du réseau. | ||
Ligne 28 : | Ligne 28 : | ||
== Exemples de réseaux avec VLANs == | == Exemples de réseaux avec VLANs == | ||
Prenons un réseau simple : | Prenons un réseau simple : | ||
[[File:RzoVLAN.png|595x419px]] | [[File:RzoVLAN.png|595x419px|RzoVLAN.png]] | ||
Ici on va mettre les serveurs dans un VLAN, les PC dans un autre, et les postes bureautiques dans un autre. | Ici on va mettre les serveurs dans un VLAN, les PC dans un autre, et les postes bureautiques dans un autre. | ||
Ligne 40 : | Ligne 40 : | ||
== Quelques mises au point sur les VLANs == | == Quelques mises au point sur les VLANs == | ||
-Les VLANs ne servent pas à réduire les broadcasts : ce n'est qu'une conséquence secondaire, mais pas un but. Les VLANs servent à faire des réseaux virtuels et à isoler les éléments entre eux en évitant de racheter des équipements entre eux. | -Les VLANs ne servent pas à réduire les broadcasts : ce n'est qu'une conséquence secondaire, mais pas un but. Les VLANs servent à faire des réseaux virtuels et à isoler les éléments entre eux en évitant de racheter des équipements entre eux. | ||
-Les trames Ethernet ne sont pas modifiées pour y ajouter un tag indiquant le VLAN: c'est interne au switch, sauf dans le cas de 802.1Q. | -Les trames Ethernet ne sont pas modifiées pour y ajouter un tag indiquant le VLAN: c'est interne au switch, sauf dans le cas de 802.1Q. | ||
<blockquote> | <blockquote> | ||
NB personnel : le prof des cours en vidéo ne parle que des VLANs "de base", non 802.1q | NB personnel : le prof des cours en vidéo ne parle que des VLANs "de base", non 802.1q | ||
</blockquote> | </blockquote> | ||
-On ne taggue pas les ports Ethernet des serveurs, ni les @MAC, ni les @IPv4/6: on taggue au niveau du switch. | -On ne taggue pas les ports Ethernet des serveurs, ni les @MAC, ni les @IPv4/6: on taggue au niveau du switch. | ||
Ligne 53 : | Ligne 53 : | ||
| | ||
= Exercice simple : Deux VLANS avec du routage inter-vlans = | |||
Dans cette mise en oeuvre, on va s'appuyer sur Packet Tracer pour mettre en place deux vlans, avec du routage inter-vlans. Le but étant de bien me rappeller le fonctionnement de cette technologie. | |||
L'infra est simple : | |||
[[File:RoutageINTVLAN.PNG|RTENOTITLE]] | |||
Nous avons deux clients connectés au même switch, représentant nos deux VLAN (VLAN02 et VLAN03). Ce switch est relié par un trunk au routeur. L'interface Gig0/1 de ce routeur est subdivisée en deux sous-interfaces : le routage inter-vlans ne peut se faire que comme ça. Ainsi, nous avons bien deux vlans différents, avec chacun un réseau différent, le tout relié au niveau du routeur. Une fois les clients configurés au niveau IP (ne pas oublier les gateways correspondantes !), on va rentrer les commandes sur notre matériel réseau. A ce stade, le matériel réseau est encore "vierge", je n'ai rien fait d'autre dessus que de régler les conflits de vitesse et de duplex (le routeur étant en Gigabit alors que le switch est en 100mbits). | |||
Sur le switch: | |||
<div style="background:#eeeeee; border:1px solid #cccccc; padding:5px 10px"> | |||
#Entrée dans le mode configuration | |||
Switch>enable | |||
Switch#conf t | |||
Enter configuration commands, one per line. End with CNTL/Z. | |||
| |||
#Configuration des interfaces : d'abord mes deux interfaces "non-trunk", en mode access | |||
Switch(config)#interface FastEthernet 0/1 | |||
Switch(config-if)#switch | |||
Switch(config-if)#switchport access vl | |||
Switch(config-if)#switchport access vlan 02 | |||
% Access VLAN does not exist. Creating vlan 2 | |||
Switch(config-if)#no shut | |||
Switch(config-if)#exit | |||
| |||
Switch(config)#interface FastEthernet 0/2 | |||
Switch(config-if)#switchport access vlan 03 | |||
% Access VLAN does not exist. Creating vlan 3 | |||
Switch(config-if)#no shut | |||
Switch(config-if)#exit | |||
| |||
#Je nomme les VLANS | |||
Switch(config)#vlan 02 | |||
Switch(config-vlan)#name DSIO | |||
Switch(config-vlan)#exit | |||
Switch(config)#vlan 03 | |||
Switch(config-vlan)#name COMPTA | |||
Switch(config-vlan)#exit | |||
| |||
#Configuration du trunk | |||
Switch(config)#interface FastEthernet 0/3 Switch(config-if)#switchport mode trunk | |||
Switch(config-if)#switchport trunk allowed vlan 1,2,3 | |||
Switch(config-if)#switchport trunk native vlan 1 | |||
Switch(config-if)#no shut | |||
Switch(config-if)#exit | |||
| |||
# | |||
##On peut sauvegarder avec copy run start | |||
</div> | |||
Sur le routeur: | |||
<div style="background:#eeeeee; border:1px solid #cccccc; padding:5px 10px"> | |||
#Entrée en mode configuration | |||
Router>enable | |||
Router#conf t | |||
| |||
#Réglage vitesse et duplex | |||
Router(config)#interface GigabitEthernet 0/1 | |||
Router(config-if)#duplex full | |||
Router(config-if)#speed 100 | |||
Router(config-if)#no shut | |||
| |||
#Première sous-interface | |||
Router(config)#interface GigabitEthernet 0/1.1 | |||
Router(config-subif)#encapsulation dot1Q 02 #On précise comment les trames repartant par ce port seront taggées | |||
Router(config-subif)#ip address 192.168.1.254 255.255.255.0 | |||
Router(config-subif)#no shut | |||
Router(config-subif)#exit | |||
| |||
#Deuxième sous-interface | |||
Router(config)#interface GigabitEthernet 0/1.2 | |||
Router(config-subif)#encapsulation dot1Q 03 | |||
Router(config-subif)#ip address 192.168.2.254 255.255.255.0 | |||
Router(config-subif)#no shut | |||
Router(config-subif)#exit | |||
| | ||
#On peut sauvegarder avec copy run start | |||
</div> | |||
A partir de ce point, les deux ordinateurs peuvent communiquer ensemble en passant par le routeur. | |||
== La commande encapsulation "encpasulation dot1Q": == | |||
Cette commande permet de préciser au routeur comment les trames seront taggées en repartant : par exemple, prenons une trame arrivant au routeur depuis le port Gig0/1.2 à destination du port Gig0/1.1. Cette trame sera encapsulée avec le tag "VLAN 03" : c'est normal, puisqu'elle vient de cevlan ! Cependant, il faudra bien la réencapsuler avec le tag "VLAN 02" avant de la renvoyer, pour qu'elle puisse être acheminée vers le port Gig0/1.1. C'est à ça que sert cette commande : les trames partant depuis le port seront étiquetées avec la numéro de VLAN que j'ai rentré lors de ma commande "encpasulation dot1q". Le terme dot1Q correspond à la norme 802.1Q. | |||
= Sur l'encapsulation et les trames taggées ou non = | |||
Une trame est dite "taggée" quand elle est encapsulée de façon à lui apposer une étiquette (ou tag en anglais) correspondant à un VLAN : on ne peut cependant pas tagger une trame sur le VLAN natif (01). Toute trames non taggée est considérée comme appartenant au VLAN 01. Seul les matériels réseau gèrent cette encapsulation : un PC qui reçoit une trame taggée n'y comprendra rien, et la rejettera. | |||
Un switch peut réacheminer des trames en fonction des vlans à l'intérieur de lui même sans avoir besoin d'étiquettes : il sait quel port est dans quel VLAN. De plus une trame qui entre par un port configuré en mode access n'est pas taggée. | |||
Cependant, les trames taggées deviennent utiles lorsque l'on relie plusieurs matériels réseau entre eux, typiquement plusieurs commutateurs : si ma trame destinée au VLAN 03 doit passer trois commutateurs avant d'arriver à destination, il faudra bien pouvoir préciser à quel VLAN elle est destinée, sinon le dernier commutateur ne saura pas quoi en faire ! C'est là que les étiquettes prennent tout leur sens : chaque commutateur sur le chemin peut regarder la trame, lire son étiquette et voir à quel VLAN elle appartient, et ainsi renvoyer la trame sur un de ses ports appartenant au bon VLAN. | |||
== Comment ça marche sur du matériel Cisco (et autres)? == | |||
On peut lister un ensemble de règles pour comprendre comment les tags de trames fonctionnent sur du matériel Cisco (et sûrement la plupart des autres matériels, mais je n'ai accès qu'à du Cisco pour vérifier): | |||
*Une trame qui entre sur un port en mode access n'est PAS taggée (au moment ou elle entre). Cela implique que toute trame sortant d'un port access n'est pas taggée non plus. | |||
*Une trame qui entre sur un port access et est destinée à aller sur une liaison trunk est taggée (au moment où elle est entrée par le port en mode access mais pas encore sortie par le port en mode trunk), en fonction du port access dont elle provient. | |||
*Quand une trame taggée atteint le bout de la liaison trunk (c'est-à-dire qu'elle atteint le dernier switch avant son périphérique final), elle est désencapsulée de son tag. Ensuite, en se basant sur le VLAN qui était précisé sur son étiquette, elle est envoyée: | |||
**Si l'adresse MAC de la machine à destination de la trame est dans la table MAC/PORT du switch, la trame est envoyée directement à cette machine. | |||
**Si l'adresse MAC de la machine à destination de la trame n'est PAS dans la table MAC/PORT du switch, la trame est "floodée", ie envoyée à tous les ports du switch qui sont en mode access dans le VLAN correspondant. | |||
*Cependant, si le trunk est encapsulé avec dot1Q, la trame ne sera pas taggée si elle est entrée par un port access qui appartenait au VLAN natif du trunk. 0 l'autre bout de la liaison trunk, la trame non taggée sera ensuite floodée à tous les ports en mode access qui sont configurés avec un VLAN qui est le même que VLAN natif du trunk en dot1Q (pfiou!). En gros, les trames d'un VLAN natif ne sont jamais taggées. |
Dernière version du 22 juin 2022 à 11:58
Les VLANs
PDF de la classe virtuelle du 24/10 sur les VLANS:
<pdf>Media:ETHERNETvlan.pdf</pdf>
L'intérêt des VLANs
Les VLANs ont pour intérêt de séparer les domaines de diffusion, c'est-à-dire concrètement de séparer un réseau en plusieurs sous-réseaux de façon logique; ainsi avec des VLANs ont peut empêcher les sous-réseaux de parler entre eux. On peut par exemple avoir un sous-réseau pour les serveurs, un autre pour la bureautique, etc... En plus du découpage en sous-réseaux différents, on découpe effectivement les réseaux : impossible pour un attaquant de passer de l'un à l'autre. Cela peut permettre de mettre en place des solutions moins coûteuses qu'un découpage avec des switches et des routeurs, par exemple.
D'où l'idée de Virtual LAN : des LAN virtuelles, en d'autre termes logiques.
Tagguer des ports
Pour découper logiquement un seul réseau physique en VLANs, on va tagguer les ports pour limpiter les communications entre les éléments. On va marquer un port du switch comme appartenant à un VLAN; c'est une configuration du switch. Par exemple:
-Le port 1 appartient à un VLAN
-Le port 2 à un autre VLAN
-etc...
Ainsi deux ports appartenant au même VLAN, il peuvent communiquer ensemble; sinon, non. L'idée est donc d'indiquer les ports pouvant communiquer ensemble en les tagguant.
La séparation est donc LOGIQUE : elle n'est pas physique, elle implique du software qui peut avoir des bugs, ce qui est rare. Il faut donc suivre une certaine réflexion dans la création de ces VLANs. Quand on a un risque important, comme dans l'aviation par exemple, les VLANs peuvent ne pas suffire; on utilisera alors du matériel.
Quand on parle de tagguer un port, on taggue les ports du switch, pas ceux des périphériques. On peut tagguer chaque port ou utiliser le VLAN par défaut. Celà signifie qu'il faut savoir à quel port chaque appareil est connecté, et donc une bonne documentation et un étiquetage (physiquement, sur les câbles) du réseau.
On travaille en général par lots de ports pour simplifier, avec un lot de ports par emplacement géographique.
Exemples de réseaux avec VLANs
Prenons un réseau simple :
Ici on va mettre les serveurs dans un VLAN, les PC dans un autre, et les postes bureautiques dans un autre.
Sur notre switch on aura trois groupes de ports, entre lesquels on laissera un peu de place.
Quid du pare-feu? Celui-ci aura un seul port ethernet qui lui sera connecté, lequel sera dans les trois VLANs à la fois.
Quelques mises au point sur les VLANs
-Les VLANs ne servent pas à réduire les broadcasts : ce n'est qu'une conséquence secondaire, mais pas un but. Les VLANs servent à faire des réseaux virtuels et à isoler les éléments entre eux en évitant de racheter des équipements entre eux.
-Les trames Ethernet ne sont pas modifiées pour y ajouter un tag indiquant le VLAN: c'est interne au switch, sauf dans le cas de 802.1Q.
NB personnel : le prof des cours en vidéo ne parle que des VLANs "de base", non 802.1q
-On ne taggue pas les ports Ethernet des serveurs, ni les @MAC, ni les @IPv4/6: on taggue au niveau du switch.
-Si un port ethernet d'un switch taggué est relié à un switch n°2, tous les équipements reliés au switch n°2 seront dans le VLAN.
-Un périphérique n'est pas dans un VLAN, c'est un abus de langage; il est relié à un port de switch qui est dans un VLAN.
Exercice simple : Deux VLANS avec du routage inter-vlans
Dans cette mise en oeuvre, on va s'appuyer sur Packet Tracer pour mettre en place deux vlans, avec du routage inter-vlans. Le but étant de bien me rappeller le fonctionnement de cette technologie.
L'infra est simple :
Nous avons deux clients connectés au même switch, représentant nos deux VLAN (VLAN02 et VLAN03). Ce switch est relié par un trunk au routeur. L'interface Gig0/1 de ce routeur est subdivisée en deux sous-interfaces : le routage inter-vlans ne peut se faire que comme ça. Ainsi, nous avons bien deux vlans différents, avec chacun un réseau différent, le tout relié au niveau du routeur. Une fois les clients configurés au niveau IP (ne pas oublier les gateways correspondantes !), on va rentrer les commandes sur notre matériel réseau. A ce stade, le matériel réseau est encore "vierge", je n'ai rien fait d'autre dessus que de régler les conflits de vitesse et de duplex (le routeur étant en Gigabit alors que le switch est en 100mbits).
Sur le switch:
- Entrée dans le mode configuration
Switch>enable
Switch#conf t
Enter configuration commands, one per line. End with CNTL/Z.
- Configuration des interfaces : d'abord mes deux interfaces "non-trunk", en mode access
Switch(config)#interface FastEthernet 0/1
Switch(config-if)#switch
Switch(config-if)#switchport access vl
Switch(config-if)#switchport access vlan 02
% Access VLAN does not exist. Creating vlan 2
Switch(config-if)#no shut
Switch(config-if)#exit
Switch(config)#interface FastEthernet 0/2
Switch(config-if)#switchport access vlan 03
% Access VLAN does not exist. Creating vlan 3
Switch(config-if)#no shut
Switch(config-if)#exit
- Je nomme les VLANS
Switch(config)#vlan 02
Switch(config-vlan)#name DSIO
Switch(config-vlan)#exit
Switch(config)#vlan 03
Switch(config-vlan)#name COMPTA
Switch(config-vlan)#exit
- Configuration du trunk
Switch(config)#interface FastEthernet 0/3 Switch(config-if)#switchport mode trunk
Switch(config-if)#switchport trunk allowed vlan 1,2,3
Switch(config-if)#switchport trunk native vlan 1
Switch(config-if)#no shut
Switch(config-if)#exit
-
- On peut sauvegarder avec copy run start
Sur le routeur:
- Entrée en mode configuration
Router>enable
Router#conf t
- Réglage vitesse et duplex
Router(config)#interface GigabitEthernet 0/1
Router(config-if)#duplex full
Router(config-if)#speed 100
Router(config-if)#no shut
- Première sous-interface
Router(config)#interface GigabitEthernet 0/1.1
Router(config-subif)#encapsulation dot1Q 02 #On précise comment les trames repartant par ce port seront taggées
Router(config-subif)#ip address 192.168.1.254 255.255.255.0
Router(config-subif)#no shut
Router(config-subif)#exit
- Deuxième sous-interface
Router(config)#interface GigabitEthernet 0/1.2
Router(config-subif)#encapsulation dot1Q 03
Router(config-subif)#ip address 192.168.2.254 255.255.255.0
Router(config-subif)#no shut
Router(config-subif)#exit
- On peut sauvegarder avec copy run start
A partir de ce point, les deux ordinateurs peuvent communiquer ensemble en passant par le routeur.
La commande encapsulation "encpasulation dot1Q":
Cette commande permet de préciser au routeur comment les trames seront taggées en repartant : par exemple, prenons une trame arrivant au routeur depuis le port Gig0/1.2 à destination du port Gig0/1.1. Cette trame sera encapsulée avec le tag "VLAN 03" : c'est normal, puisqu'elle vient de cevlan ! Cependant, il faudra bien la réencapsuler avec le tag "VLAN 02" avant de la renvoyer, pour qu'elle puisse être acheminée vers le port Gig0/1.1. C'est à ça que sert cette commande : les trames partant depuis le port seront étiquetées avec la numéro de VLAN que j'ai rentré lors de ma commande "encpasulation dot1q". Le terme dot1Q correspond à la norme 802.1Q.
Sur l'encapsulation et les trames taggées ou non
Une trame est dite "taggée" quand elle est encapsulée de façon à lui apposer une étiquette (ou tag en anglais) correspondant à un VLAN : on ne peut cependant pas tagger une trame sur le VLAN natif (01). Toute trames non taggée est considérée comme appartenant au VLAN 01. Seul les matériels réseau gèrent cette encapsulation : un PC qui reçoit une trame taggée n'y comprendra rien, et la rejettera.
Un switch peut réacheminer des trames en fonction des vlans à l'intérieur de lui même sans avoir besoin d'étiquettes : il sait quel port est dans quel VLAN. De plus une trame qui entre par un port configuré en mode access n'est pas taggée.
Cependant, les trames taggées deviennent utiles lorsque l'on relie plusieurs matériels réseau entre eux, typiquement plusieurs commutateurs : si ma trame destinée au VLAN 03 doit passer trois commutateurs avant d'arriver à destination, il faudra bien pouvoir préciser à quel VLAN elle est destinée, sinon le dernier commutateur ne saura pas quoi en faire ! C'est là que les étiquettes prennent tout leur sens : chaque commutateur sur le chemin peut regarder la trame, lire son étiquette et voir à quel VLAN elle appartient, et ainsi renvoyer la trame sur un de ses ports appartenant au bon VLAN.
Comment ça marche sur du matériel Cisco (et autres)?
On peut lister un ensemble de règles pour comprendre comment les tags de trames fonctionnent sur du matériel Cisco (et sûrement la plupart des autres matériels, mais je n'ai accès qu'à du Cisco pour vérifier):
- Une trame qui entre sur un port en mode access n'est PAS taggée (au moment ou elle entre). Cela implique que toute trame sortant d'un port access n'est pas taggée non plus.
- Une trame qui entre sur un port access et est destinée à aller sur une liaison trunk est taggée (au moment où elle est entrée par le port en mode access mais pas encore sortie par le port en mode trunk), en fonction du port access dont elle provient.
- Quand une trame taggée atteint le bout de la liaison trunk (c'est-à-dire qu'elle atteint le dernier switch avant son périphérique final), elle est désencapsulée de son tag. Ensuite, en se basant sur le VLAN qui était précisé sur son étiquette, elle est envoyée:
- Si l'adresse MAC de la machine à destination de la trame est dans la table MAC/PORT du switch, la trame est envoyée directement à cette machine.
- Si l'adresse MAC de la machine à destination de la trame n'est PAS dans la table MAC/PORT du switch, la trame est "floodée", ie envoyée à tous les ports du switch qui sont en mode access dans le VLAN correspondant.
- Cependant, si le trunk est encapsulé avec dot1Q, la trame ne sera pas taggée si elle est entrée par un port access qui appartenait au VLAN natif du trunk. 0 l'autre bout de la liaison trunk, la trame non taggée sera ensuite floodée à tous les ports en mode access qui sont configurés avec un VLAN qui est le même que VLAN natif du trunk en dot1Q (pfiou!). En gros, les trames d'un VLAN natif ne sont jamais taggées.