La configuration type étudiée ici est une maquette réduite qui comprend un routeur et un commutateur physique. Pour les besoin des l'illustration, on dissocie l'équipement responsable de la commutation de paquets de l'équipement en charge de la commutation de trames.
Le routeur unique correspond bien à la réalité des réseaux modernes. Du réseau d'agence d'une centaine d'hôtes au réseau de campus de plusieurs milliers d'hôtes, seule la capacité de traitement de l'équipement varie.
Le commutateur unique correspond beaucoup moins à la réalité. Même dans un réseau d'agence, on dépasse très vite le cap des 48 ports connectés. On utilise alors un équipement avec une bonne capacité de commutation qui assure la distribution vers des commutateurs dédiés aux accès des hôtes. Tous ces commutateurs sont reliés entre eux à l'aide de trunks qui véhiculent les flux marqués des réseaux virtuels.
Dans l'illustration présentée ici, les deux couches distribution et accès sont «synthétisées» sur un seul équipement. Un trunk sur un lien gigabit relie le routeur au commutateur. En véhiculant les flux marqués entre le routeur et le commutateur il assure la liaison entre routage et commutation de trames. Les hôtes directement connectés au commutateur n'ont aucune connaissance des balises IEEE 802.1q. Ils ne nécessitent donc aucune configuration particulière.
Cette infrastructure type comprend 2 périmètres reliés au réseau public Internet. Un premier périmètre de services utilisé pour l'hébergement des services accessibles depuis le réseau public : DNS, Web, courrier électronique, etc. Un second périmètre pour les postes de travail qui ne doivent pas être accessibles depuis le réseau public.
On ajoute aux deux périmètres classiques, un réseau particulier dédié à la gestion de l'infrastructure : configuration des équipements, métrologie, journalisation, etc.
Tableau 1. Plan d'adressage des périmètres
Nom | VLAN numéro | Adresse IP |
---|---|---|
Management | 1 | 192.168.2.0/24 |
Services | 100 | 192.168.100.0/24 |
Accès | 200 | 192.168.200.0/24 |
Le tableau ci-dessus établit la correspondance entre les périmètres, les réseaux virtuels et les réseaux IP à interconnecter.
Du point de vue configuration, ce réseau est très particulier. Il véhicule les trames sans balises IEEE 802.1q entre le routeur et le commutateur. On associe à ce périmètre le VLAN natif du trunk.
Côté routeur GNU/Linux, on configure l'interface de façon classique puisqu'il s'agit de traiter des trames Ethernet standard.
#
ip addr add 192.168.2.2/24 brd + dev eth0
Côté commutateur, on utilise la notion de VLAN «natif» pour configurer l'interface en mode trunk.
! interface GigabitEthernet0/1 switchport trunk native vlan 1 switchport mode trunk no cdp enable <snipped/> ! interface Vlan1 ip address 192.168.2.1 255.255.255.0 no ip redirects no ip unreachables no ip proxy-arp no ip route-cache
La configuration du trunk est la suivante :
#sh int gi0/1 trunk Port Mode Encapsulation Status Native vlan Gi0/1 on 802.1q trunking 1 Port Vlans allowed on trunk Gi0/1 1-4094 Port Vlans allowed and active in management domain Gi0/1 1,100,200 Port Vlans in spanning tree forwarding state and not pruned Gi0/1 1,100,200
Les règles d'utilisation des trames sans balises IEEE 802.1q sont les suivantes :
-
Toute trame appartenant au VLAN natif peut être émise sans balise IEEE 802.1q sur un port en mode trunk par le commutateur.
-
Toute trame reçue sans balise IEEE 802.1q sur un port en mode trunk du commutateur appartient au VLAN natif.
On complétera la configuration du commutateur de façon à ce que toutes les opérations de gestion de l'équipement passent par ce VLAN natif.
À ce niveau, les tests de communication réseau sont très simples.
-
Côté routeur :
RouterA:~$ ping -c 2 192.168.2.1 PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data. 64 bytes from 192.168.2.1: icmp_seq=1 ttl=255 time=19.4 ms 64 bytes from 192.168.2.1: icmp_seq=2 ttl=255 time=1.22 ms --- 192.168.2.1 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 1.226/10.355/19.484/9.129 ms
-
Côté commutateur :
Switch#ping 192.168.2.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.2.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/4 ms
Cette fois ci, il est indispensable de traiter les flux marqués
avec les balises IEEE 802.1q.
Aujourd'hui, tous les noyaux fournis avec les distributions Linux
comme Debian GNU/Linux disposent d'un module appelé 8021q
.
$
find /lib/modules/`uname -r` -name 8021q
/lib/modules/4.13.0-1-amd64/kernel/net/8021q
Le chargement de ce module se fait automatiquement dès qu'une opération relative aux étiquettes IEEE 802.1q est effectuée. Il suffit alors de consulter la liste des modules pour vérifier sa présence. Il est toujours possible de charger manuellement ce module. Voici un exemple.
#
modprobe -v 8021q modprobe -v 8021q insmod /lib/modules/4.13.0-1-amd64/kernel/net/llc/llc.ko insmod /lib/modules/4.13.0-1-amd64/kernel/net/802/stp.ko insmod /lib/modules/4.13.0-1-amd64/kernel/net/802/mrp.ko insmod /lib/modules/4.13.0-1-amd64/kernel/net/802/garp.ko insmod /lib/modules/4.13.0-1-amd64/kernel/net/8021q/8021q.ko#
grep 8021q /var/log/kern.log kernel: [ 439.345617] 8021q: 802.1Q VLAN Support v1.8 kernel: [ 439.345723] 8021q: adding VLAN 0 to HW filter on device eth0
Une fois la partie kernelspace traitée, on passe logiquement à la partie userspace. La commande ip du paquet iproute2 dispose de toutes les options utiles pour créer les sous-interfaces associées aux étiquettes IEEE 802.1q.
Dans notre exemple, la syntaxe pour les deux sous-interfaces des deux périmètres définis est la suivante :
#
ip link add link eth0 name eth0.100 type vlan id 100#
ip link add link eth0 name eth0.200 type vlan id 200
On visualise aussi le résultat avec la commande ip :
$
ip addr ls
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether ba:ad:00:ca:fe:00 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.2/24 brd 192.168.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::b8ad:ff:feca:fe00/64 scope link
valid_lft forever preferred_lft forever
3: eth0.100@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
link/ether ba:ad:00:ca:fe:00 brd ff:ff:ff:ff:ff:ff
4: eth0.200@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
link/ether ba:ad:00:ca:fe:00 brd ff:ff:ff:ff:ff:ff
Les deux nouvelles sous-interfaces se configurent manuellement de façon classique.
#
ip addr add 192.168.100.1/24 brd + dev eth0.100#
ip addr add 192.168.200.1/24 brd + dev eth0.200
Sur un système de la famille Debian GNU/Linux, il est possible
de rendre cette configuration permanente en éditant le fichier
/etc/network/interfaces
comme
suit :
<snipped/> auto eth0 iface eth0 inet static address 192.168.2.2/24 auto eth0.100 iface eth0.100 inet static address 192.168.100.1/24 auto eth0.200 iface eth0.200 inet static address 192.168.200.1/24
Une fois la configuration des interfaces en place, on obtient la table de routage suivante :
#
ip route ls
default via aaa.bbb.ccc.1 dev eth1
192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.2
192.168.100.0/24 dev eth0.100 proto kernel scope link src 192.168.100.1
192.168.200.0/24 dev eth0.200 proto kernel scope link src 192.168.200.1
aaa.bbb.ccc.0/24 dev eth1 proto kernel scope link src aaa.bbb.ccc.7
L'interface |
|
L'interface physique |
|
La sous-interface |
|
La sous-interface |
|
L'interface |
Côté commutateur, il faut que la base de données des VLANs connus contienne les mêmes identificateurs que ceux affectés sur le Routeur GNU/Linux.
Le fichier de configuration du commutateur doit contenir les informations suivantes si le protocole VTP a préalablement été configuré en mode transparent :
vlan 1 name management ! vlan 100 name services ! vlan 200 name access
Ensuite, on affecte les ports du commutateurs aux différents VLANs ou périmètres.
Switch#conf t Enter configuration commands, one per line. End with CNTL/Z. Switch(config)#int range fastEthernet 0/1 - 12 Switch(config-if-range)#switchport access vlan 100 Switch(config-if-range)#exit Switch(config)#int range fastEthernet 0/13 - 48 Switch(config-if-range)#switchport access vlan 200 Switch(config-if)#^Z Switch# 07:10:45: %SYS-5-CONFIG_I: Configured from console by console
On visualise le résultat des affectations de ports en mode accès de la façon suivante.
Switch#sh vlan VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------- 1 default active 100 services active Fa0/1, Fa0/2, Fa0/3, Fa0/4 Fa0/5, Fa0/6, Fa0/7, Fa0/8 Fa0/9, Fa0/10, Fa0/11, Fa0/12 200 access active Fa0/13, Fa0/14, Fa0/15, Fa0/16 Fa0/17, Fa0/18, Fa0/19, Fa0/20 Fa0/21, Fa0/22, Fa0/23, Fa0/24 Fa0/25, Fa0/26, Fa0/27, Fa0/28 Fa0/29, Fa0/30, Fa0/31, Fa0/32 Fa0/33, Fa0/34, Fa0/35, Fa0/36 Fa0/37, Fa0/38, Fa0/39, Fa0/40 Fa0/41, Fa0/42, Fa0/43, Fa0/44 Fa0/45, Fa0/46, Fa0/47, Fa0/48
Avec la configuration actuelle, le Routeur GNU/Linux ne remplit pas sa fonction. Par exemple, les hôtes du périmètre Accès ne peuvent pas communiquer avec les serveurs du périmètre Services. Il est nécessaire d'activer la fonction routage au niveau du noyau Linux pour que les paquets IP puissent être transmis (ou routés) entre des réseaux différents.
La présentation des fonctions réseau d'une interface pilotée par le noyau Linux sort du cadre de ce document. Il faut consulter le support Configuration d'une interface de réseau local pour obtenir les informations nécessaires.
Voici un extrait du fichier /etc/sysctl.conf
comprenant l'ensemble des
réglages appliqués au noyau Linux du Routeur de la configuration
type. Pour appliquer ces paramètres, il suffit d'utiliser la
commande sysctl
--system
et de valider la valeur de la «clé»
ip_forward
pour IPv4. Si cette valeur est à 1
, le routage est actif au niveau du noyau
Linux.
$ egrep -v '(^#|^$)' /etc/sysctl.conf
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
Les tests de communication entre les réseaux des différents périmètres peuvent être effectués depuis le commutateur.
Switch#ping 192.168.2.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.2.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/4 ms Switch#ping 192.168.100.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.100.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/202/1000 ms Switch#ping 192.168.200.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.200.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms Switch#ping aaa.bbb.ccc.7 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to aaa.bbb.ccc.7, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/202/1004 ms Switch#ping aaa.bbb.ccc.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to aaa.bbb.ccc.1, timeout is 2 seconds: ..... Success rate is 0 percent (0/5)
Test de communication ICMP sur le périmètre Management. Ce test n'utilise pas la fonction routage puisqu'il est effectué entre les deux extrémités du trunk. |
|
Test de communication ICMP
sur le périmètre Services.
Ce test utilise la fonction routage entre le réseau |
|
Test de communication ICMP
sur le périmètre Accès. Ce
test utilise la fonction routage entre le réseau |
|
Test de communication ICMP
vers le réseau public. Ce test utilise la fonction routage entre le
réseau |
|
Test de communication ICMP vers l'Internet. Ce test échoue puisque le Routeur GNU/Linux n'échange pas sa table de routage avec les autres routeurs de l'Internet. |
Ces tests montrent qu'il faut compléter la configuration pour que les échanges réseau entre les périmètres et l'Internet soient possibles. Comme ces échanges réseau entre l'Internet et les périmètres ne peuvent pas se faire dans n'importe quelles conditions, il est nécessaire d'introduire la fonction de filtrage pour obtenir une interconnexion satisfaisante.