https://www.lecoindunet.com/comprendre-notion-vlan-tagged-untagged-1629
http://www-igm.univ-mlv.fr/~dr/XPOSE2007/vlanparlegrandquinapascomprislesconsignes/Definition.html
https://www.bicomm.fr/vlan-quest-ce-que-le-pvid/
Généralités
Flux taggé : la trame ethernet contient une en-tête (tag) qui spécifie l’ID du VLAN (encapsulation 802.1Q)
Flux non-taggé : ne contient pas cette en-tête
Appareil taggeur : capable d’envoyer un flux taggé (tagged)
Appareil non-taggeur : envoie un flux non-taggé (untagged)
Les cartes réseaux de PC envoient par défaut un flux non-taggé, mais certaines sont capables de produire un flux taggé si l’OS est correctement configuré et que le pilote le supporte.
Voir exemple sous Linux plus loin.
Les switchs modernes, même non-gérés basiques, ont tendance à laisser passer intactes les trames taggées, même si ils ne les comprennent pas. Ceci explique que des appareils taggeurs derrière des switchs basiques soient en mesure de se connecter à différents VLANs.
Mais ceci a toutefois des répercussions sur la sécurité, car il n’y a plus de réelle isolation de port et tous les VLAN sont mélangés. Il est aussi probable que d’autres problèmes découlent de ce branchement, non recommandé.
Ingress - Egress
Trafic entrant = ingress
Trafic sortant = egress
PVID
Port VLAN IDentifier : le numéro de VLAN dont seront taggées les trames Untagged entrant par ce port.
Ainsi, un pc relié à un port PVID 3 envoie une trame Untagged, qui se fait tagger au moment de son entrée dans le switch.
Le tag (ou absence de tag) avec lequel elle sortira du switch dépendra de la configuration du VLAN/port du port sortant (mais pas de son PVID).
Intérieur d’un switch
Une trame circulant dans un switch VLAN-capable est systématiquement taggée ; soit la trame rentre taggée, et elle conserve son tag, soit la trame rentre Untagged et elle hérite du PVID du port.
L’appartenance à un VLAN ou un autre n’empêche pas le switch de savoir sur quel port est situé telle adresse MAC ou IP ; il sera toujours en mesure déterminer le trajet correcte d’une trame (mais pourra l’autoriser ou non).
Admin VLAN
Les switchs managés n’acceptent généralement la communication (administration, et même ping) que sur un seul VLAN. Par défaut, c’est le 1, mais il est paramétrable.
Ceci peut expliquer que les connexions réseaux fonctionnent correctement entre plusieurs ports différents, mais pas avec le switch ; il ignore simplement les requêtes si elles viennent du mauvais VLAN.
Sécurité
Les prises réseaux accessibles aux utilisateurs finaux sont à considérer comme non-fiables, car n’importe qui peut configurer son poste pour se connecter à un VLAN précis, comme celui d’admin.
On appelle ces ports “port access”, et l’idée est de leur mettre le PVID du VLAN endusers, de “untag” le trafic sortant avec ce VLAN, et de n’autoriser que le trafic de ce VLAN.
Les appareils sur ces ports
À l’inverse, les ports permettant de connecter plusieurs switchs doivent pouvoir faire transiter plusieurs VLAN différents. Ils ne doivent pas être accessibles à n’importe qui.
On appelle ces ports “ports trunk”, et
Créer VLAN purement logiciel sous Debian
https://www.ksh-linux.info/reseaux/linux/vlan-debian
sudo apt install vlan
sudo modprobe 8021q
Je crois qu’il est nécessaire que la carte réseau parente (ou le pilote ?) supporte les fonctionnalités de VLAN.
J’ai effectué avec succès la manip sur différentes cartes réseau rj45 ou wifi, ainsi que sur un pont OpenVPN (à faire sur le client, en prenant l’interface tap comme parent ; pas besoin de manip au niveau du serveur ; mais je suppose qu’il est nécessaire que les cartes réseaux du serveur et du client supportent les VLANs).
On définit les caractéristiques du VLAN que l’on souhaite créer, et l’IP/masque à donner à l’interface (non nécessaire pour du DHCP) :
PARENT_IFACE=eth0
VLAN_ID=10
VLAN_IFACE=$PARENT_IFACE.$VLAN_ID
IP=10.0.0.1
MASK=24
BROADCAST=10.0.0.255
sudo ip link add link $PARENT_IFACE name $VLAN_IFACE type vlan id $VLAN_ID
L’interface est alors visible dans ifconfig -a
; elle aura la même adresse MAC que l’interface physique.
On l’active :
sudo ip link set dev $VLAN_IFACE up
On définit son IP/masque :
sudo ip addr add $IP/$MASK brd $BROADCAST dev $VLAN_IFACE
ou on peut demander du dhcp :
sudo dhclient -v $VLAN_IFACE
Pour voir le détail de l’interface vlan, notamment son id :
ip -d link show $VLAN_IFACE
Pour la supprimer :
sudo ip link del $VLAN_IFACE
Configuration VLAN/port
Chaque port a une politique concernant chacun des VLAN, qui spécifie comment doit être traité le trafic taggé de ce VLAN lorsqu’il sort par ce port (trafic egress) :
- Excluded : la trame n’est pas transmise
- Tagged : le numéro de VLAN est maintenu dans la trame sortante
- Untagged : le numéro de VLAN est supprimé de la trame sortante
Cas rigolo et instructif : 1 seul appareil sur un PVID
Dans le cas où :
- un appareil non-taggeur est branché sur un port qui est le seul à posséder le PVID 4
- aucun autre appareil sur le réseau ne transmet de trames taggées VLAN 4
- les règles permettent au trafic taggé 4 d’être sorti par les autres ports en Untagged
- les règles permettent au trafic des autres VLAN de sortir en Untagged sur le port en question
alors il est possible de configurer le port en question comme “Excluded” pour le VLAN4, et l’appareil pourra quand meme communiquer avec le reste du réseau !
En effet, ce filtrage ne s’applique qu’en sortie. Les trames (non taggées) entrantes par ce port seront taggées 4 par le switch, elles auront le droit de sortir par les autres ports, et lors de la réception de la réponse, elles seront taggées d’un autre VLAN (car aucun autre port n’a le PVID 4 et aucun appareil n’est explicitement sur le VLAN 4), et elles auront le droit de ressortir par ce port, en tant que Untagged, et donc comprises par l’appareil d’origine.
Conguration switch Zyxel
Type accepté
On peut définir qu’un port n’accepte (entrant ou sortant ? ) que du trafic taggé, ou que du trafic non taggé, ou les 2.
Ingress check
Si activé, le switch drop tous les paquets taggés avec un VLAN auquel le port n’appartient pas.
Guest VLAN
Si activé, et qu’une authentification réseau 802.1x est présente, les utilisateurs qui se branchent mais n’ont pas de credentials valides seront envoyés sur le Guest VLAN (si le port est configuré pour l’accepter bien sûr).
VLAN Trunk
Pour que le port accepte de transmettre même les trames appartenant à des VLAN inconnus.
-> à activer (éventuellement) pour les ports reliés à d’autres switchs, par les ports reliés à des équipements finaux
Si VLAN Trunk est activé mais Ingress check est activé aussi, je suppose que le Trunk ne fonctionne pas ?