La configuration type étudiée ici correspond à un scénario classique d'exploitation d'une infrasctructure de taille moyenne. Pour les besoin des l'illustration, on n'utilise qu'un équipement de chaque type : un routeur et un commutateur.
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 (voir Section 3.3, « Augmentation des débits »).
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. Tout ces commutateurs sont reliés entre eux à l'aide de trunks qui véhiculent les flux marqués des réseaux virtuels. Voir Section 2.1, « Définitions ».
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. Les hôtes directement connectés au commutateur n'ont aucune connaissance des trames IEEE 802.1Q (voir Section 2.3, « Balise IEEE 802.1Q »). Ils ne nécessitent donc aucune configuration particulière.
__ Routeur
___/ \_ GNU/Linux
_/ \__ .---. gi0/1 fa0/4 fa0/23
/ \eth1| ==|eth0 _|___|_____ / /__|sw1
| Internet |___| ==|_ |_=_=_=_=_=_/ /_=_=_=_|
\_ __/ | -| `-O----' | / / |
\__ __/ | | trunk | |périmètre
\___/ ------- | |accès
.------------' |
| périmètre |.....
.__. | services .------,~
serveur| .|,-' |client|'
Web| =| | ||
| | \------ /
------ ======/
Cette infrastructure type comprend 2 périmètres (ou réseaux privés) reliés au réseau public Internet. Un périmètre de services utilisé pour l'hébergement des services accessibles depuis le réseau public : DNS, Web, courrier électronique, etc. et un périmètre pour les postes de travail qui doivent être inaccessibles 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 | n° VLAN | Adresse IP |
|---|---|---|
| Management | 2 |
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.
Côté routeur GNU/Linux, on configure l'interface de façon classique puisqu'il s'agit de traiter des trames Ethernet «normales».
# ifconfig eth0 192.168.2.2 broadcast 192.168.2.255 netmask 255.255.255.0
Côté commutateur, on utilise la notion de VLAN «natif» pour configurer le trunk.
! interface GigabitEthernet0/1 switchport trunk native vlan 2 switchport mode trunk no cdp enable <snipped/> ! interface Vlan2 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 2 Port Vlans allowed on trunk Gi0/1 1-4094 Port Vlans allowed and active in management domain Gi0/1 1-2,100,200 Port Vlans in spanning tree forwarding state and not pruned Gi0/1 1-2,100,200
Les règles d'utilisation des trames sans balises IEEE 802.1Q sont les suivantes :
Toute trame appartenant au VLAN natif du trunk est émise sans balise IEEE 802.1Q par le commutateur.
Toute trame reçue sans balise IEEE 802.1Q par le 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 d'une grande trivialité !
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.
Côté routeur GNU/Linux, il faut s'assurer que le noyau à la capacité à
traiter les balises IEEE 802.1Q. Tous les noyaux de distributions tels
que ceux fournis par Debian ont un module
IEEE 802.1Q appelé 8021q.
# find /lib/modules/`uname -r` -name 8021q /lib/modules/2.6.12-rc5/kernel/net/8021q # modprobe 8021q
Le résultat du chargement du module se retrouve dans les messages système :
# dmesg <snipped/> 802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com> All bugs added by David S. Miller <davem@redhat.com>
Avec un noyau récent (version 2.6.12 par exemple), ce module est chargé automatiquement lors d'une opération de configuration sur un VLAN.
Une fois la partie kernelspace traitée, on
passe logiquement à la partie userspace : les
outils de configuration utilisateur avec le paquet
Debian vlan.
# dpkg -l vlan Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder | État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé |/ Err?=(aucune)/H=à garder/besoin Réinstallation/X=les deux (État,Err: maj=mauvais) ||/ Nom Version Description +++-========-==========-=========================================================== ii vlan 1.9-2 User mode programs to enable VLANs on your ethernet devices
Tous les outils sont en place ; il ne reste plus qu'à configurer les 2 VLANs correspondant aux 2 périmètres.
# vconfig add eth0 100 Added VLAN with VID == 100 to IF -:eth0:- # vconfig add eth0 200 Added VLAN with VID == 200 to IF -:eth0:-
Ces 2 opérations ont ajouté 2 sous-interfaces à l'interface physique
eth0. On visualise le résultat avec la commande
«historique» ifconfig et|ou la commande
ip :
# ifconfig -a
eth0 Lien encap:Ethernet HWaddr 00:0C:6E:B7:09:46
inet adr:192.168.2.2 Bcast:192.168.2.255 Masque:255.255.255.0
adr inet6: fe80::20c:6eff:feb7:946/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:24 errors:0 dropped:0 overruns:0 frame:0
TX packets:35 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:2456 (2.3 KiB) TX bytes:3180 (3.1 KiB)
Interruption:185
eth0.100 Lien encap:Ethernet HWaddr 00:0C:6E:B7:09:46
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
eth0.200 Lien encap:Ethernet HWaddr 00:0C:6E:B7:09:46
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
# ip addr ls
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:6e:b7:09:46 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.2/24 brd 192.168.2.255 scope global eth0
inet6 fe80::20c:6eff:feb7:946/64 scope link
valid_lft forever preferred_lft forever
7: eth0.100: <BROADCAST,MULTICAST> mtu 1500 qdisc noop
link/ether 00:0c:6e:b7:09:46 brd ff:ff:ff:ff:ff:ff
8: eth0.200: <BROADCAST,MULTICAST> mtu 1500 qdisc noop
link/ether 00:0c:6e:b7:09:46 brd ff:ff:ff:ff:ff:ff
Les 2 nouvelles sous-interfaces se configurent manuellement de façon classique.
# ifconfig eth0.100 192.168.100.1 broadcast 192.168.100.255 netmask 255.255.255.0 # ifconfig eth0.200 192.168.200.1 broadcast 192.168.200.255 netmask 255.255.255.0
Sur un système Debian GNU/Linux, il est possible
de rendre cette configuration permanente en éditant le fichier
/etc/network/interfaces comme suit avec la directive
vlan_raw_device :
<snipped/>
auto eth0
iface eth0 inet static
address 192.168.2.2
netmask 255.255.255.0
broadcast 192.168.2.255
auto eth0.100
iface eth0.100 inet static
address 192.168.100.1
netmask 255.255.255.0
broadcast 192.168.100.255
auto eth0.200
iface eth0.200 inet static
address 192.168.200.1
netmask 255.255.255.0
broadcast 192.168.200.255
Une fois la configuration des interfaces en place, on obtient la table de routage suivante :
# route -n Table de routage IP du noyau Destination Passerelle Genmask Indic Metric Ref Use Iface 192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0.100192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
aaa.bbb.ccc.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.200.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0.200
0.0.0.0 aaa.bbb.ccc.1 0.0.0.0 UG
0 0 0 eth1
# ip route ls 192.168.100.0/24 dev eth0.100 proto kernel scope link src 192.168.100.1 192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.2 aaa.bbb.ccc.0/24 dev eth1 proto kernel scope link src aaa.bbb.ccc.7 192.168.200.0/24 dev eth0.200 proto kernel scope link src 192.168.200.1 default via aaa.bbb.ccc.1 dev eth1
|
L'interface |
|
|
L'interface |
|
|
L'interface |
|
|
L'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 :
vlan 2 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#sh vlan
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active
2 management 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 réseaux.
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 une copie 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 -p.
# /etc/sysctl.conf - Configuration file for setting system variables # See sysctl.conf (5) for information. # # Refuser la prise en charge des requêtes ARP pour d'autres hôtes net.ipv4.conf.all.proxy_arp = 0 # Ignorer les mauvais messages d'erreurs ICMP net.ipv4.icmp_ignore_bogus_error_responses = 1 # Ignorer les messages de diffusion ICMP net.ipv4.icmp_echo_ignore_broadcasts = 1 # Journaliser les adresses sources falsifiées ou non routables net.ipv4.conf.all.log_martians = 1 # Refuser les adresses sources falsifiées ou non routables net.ipv4.conf.all.rp_filter = 1 # Refuser les messages ICMP redirect net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 # Refuser le routage source net.ipv4.conf.all.accept_source_route = 0 # Activer le routage net.ipv4.ip_forward = 1
Les tests de communications entre les réseaux des différents périmètres peuvent être effectués depuis le commutateur.
Switch#ping 192.168.2.2Type 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 2 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.
Vous êtes ici :