VLAN 802.1Q sur Linux
Le standard IEEE 802.1Q encapsule le trafic Ethernet dans des VLAN tagués. Sur un serveur dédié HolyCloud avec port trunk, vous séparez management, production et stockage sans cartes réseau multiples.
Prérequis
- VLAN provisionnés côté switch/datacenter (IDs confirmés par HolyCloud)
- Interface physique connectée en mode trunk (pas access seul)
- Accès root, sauvegarde réseau avant modification
- Risque de coupure SSH : gardez IPMI/KVM ouvrable
Concepts
[Switch] -- trunk (VLAN 100, 200) --> [eth0]
├── eth0.100 (public)
└── eth0.200 (stockage iSCSI)
Le tag VLAN est ajouté par le module 8021q.
Charger le module
sudo modprobe 8021q
echo 8021q | sudo tee /etc/modules-load.d/vlan.conf
Création manuelle (test)
ip link show eth0
sudo ip link add link eth0 name eth0.100 type vlan id 100
sudo ip addr add 10.10.100.2/24 dev eth0.100
sudo ip link set eth0.100 up
ping -c 2 10.10.100.1
Suppression :
sudo ip link del eth0.100
Persistance : iproute2 (interfaces)
Debian /etc/network/interfaces :
auto eth0
iface eth0 inet manual
auto eth0.100
iface eth0.100 inet static
address 203.0.113.50
netmask 255.255.255.248
gateway 203.0.113.49
vlan-raw-device eth0
auto eth0.200
iface eth0.200 inet static
address 192.168.200.10
netmask 255.255.255.0
vlan-raw-device eth0
sudo ifreload -a
Netplan
network:
version: 2
vlans:
eth0.100:
id: 100
link: eth0
addresses: [203.0.113.50/29]
routes:
- to: default
via: 203.0.113.49
eth0.200:
id: 200
link: eth0
addresses: [192.168.200.10/24]
sudo netplan apply
systemd-networkd
/etc/systemd/network/10-eth0.network :
[Match]
Name=eth0
[Network]
VLAN=eth0.100
VLAN=eth0.200
/etc/systemd/network/10-eth0.100.netdev :
[NetDev]
Name=eth0.100
Kind=vlan
[VLAN]
Id=100
Fichier .network associé avec Address=.
MTU et performance
Trunk + overhead VLAN : souvent MTU 1500 sur VLAN public ; stockage peut nécessiter jumbo frames (9000) si bout-en-bout supporté.
ip link set eth0.200 mtu 9000
Validez avec HolyCloud avant jumbo sur liaison partagée.
Pare-feu par VLAN
sudo nft add table inet filter
sudo nft add chain inet filter forward { type filter hook forward priority 0 \; }
# isolez : pas de forward entre eth0.100 et eth0.200 sauf règles explicites
Ou ufw sur interfaces nommées :
ufw allow in on eth0.100 to any port 443
ufw deny in on eth0.200 from any to any
Vérification
ip -d link show type vlan
cat /proc/net/vlan/eth0.100
tcpdump -i eth0 -e vlan
Erreurs fréquentes
| -------- | ------- |
|---|---|
| Pas de DHCP/routage | Mauvais VLAN ID ou port en access |
| Double tag | VLAN natif mal géré côté switch |
| iSCSI instable | MTU mismatch, filtrage SAN |
Migration sans coupure
- Créez l'interface VLAN avec une IP secondaire de test.
- Validez connectivité depuis le switch de management.
- Basculez les services vers la VLAN cible.
- Retirez l'ancienne IP sur l'interface untagged si plus nécessaire.
Besoin d'aide ?
Demandez au support HolyCloud la liste des VLAN ID autorisés, le mode port (trunk/access) et les plages IP associées avant toute config production.