Le but de cette section est de découvrir les diverses options réseau que propose le noyau LINUX.
Les fonctions réseau indépendantes du matériel (piles de protocoles, liste de filtres, etc.) sont regroupées dans les menus
puis .Les pilotes de périphériques réseau sont accessibles à partir des menus
puis .Cette fonctionnalité est utilisée pour recevoir ou envoyer des paquets bruts sur les périphériques réseaux sans passer par l'intermédiaire d'un protocole réseau implémenté dans le noyau. Certains programmes, tel que tcpdump, utilisent cette option.
Le terme «socket» désigne l'interface de programmation à travers laquelle l'on va pouvoir accéder aux ressources réseau du noyau. La création d'une interface «socket» est réalisée par l'appel système suivant :
int socket( |
famille, | |
type, | ||
protocole) ; |
int famille
;int type
;int protocole
;Le paramètre «famille» permet de préciser avec quel protocole
réseau on souhaite travailler. L'ensemble des familles disponibles
est listé dans le fichier /usr/include/linux/socket.h
. Les types
définissent le protocole de transport (TCP ou UDP).
Une nouvelle famille de socket associée à cette fonctionnalité est
ainsi disponible, à savoir AF_PACKET.
Sous-option de Packet Socket
- mapped IO
-
Cette option permet d'utiliser un mécanisme d'entrée-sortie plus rapide.
Exemple 1. Utilisation de la socket packet
#include <stdio.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <net/if.h> #include <linux/if_ether.h> #include <linux/if_packet.h> main () { int sock_fd ; struct sockaddr_ll sll; struct ifreq ifr; char buffer[2000]; int nb_octet; if (sock_fd = socket(AF_PACKET,SOCK_RAW,htons(ETH_P_ALL)) == -1 ) { printf("Erreur dans la création de la socket\n"); return-1 ; } memset(&ifr, 0, sizeof(ifr)); strncpy (ifr.ifr_name, "eth0", sizeof(ifr.ifr_name)); if (ioctl(sock_fd,SIOCGIFINDEX, &ifr) == -1 ) { printf("Erreur dans la recherche de index\n"); return -1 ; } memset(&sll, 0, sizeof(sll)); sll.sll_family = AF_PACKET ; sll.sll_ifindex = ifr.ifr_ifindex ; sll.sll_protocol = htons(ETH_P_ALL); if (bind(sock_fd, (struct sockaddr *) &sll, sizeof(sll)) == -1) { printf("Erreur avec bind\n"); return -1 ; }; nb_octet=recvfrom(sock_fd,buffer,sizeof(buffer),0,NULL,0); printf("Nombre d'octets reçus : %d\n",nb_octet); }
iproute2
qui permet la
configuration de la partie réseau du noyau.
En plus de cette socket
, la
communication peut également se réaliser, pour un processus
utilisateur, par la lecture ou l'écriture de fichiers caractères
spéciaux. Ces fichiers spéciaux ont le numéro majeur 36 et se
trouvent dans le répertoire /dev
.
Sous-option de netlink
- Routing Messages
-
Le noyau fournit des informations sur le routage via le fichier
/dev/route
de numéro majeur 36 et de numéro mineur 0. - Netlink Device Emulation
-
Permet la compatibilité avec d'anciennes fonctionnalités. Option amenée à disparaître.
Cette fonctionnalité permet, dans les programmes en mode
utilisateur, la mise en place de filtres au niveau des sockets. On
a ainsi la possibilité d'autoriser ou d'interdire des types de
données traversant une socket. Cette fonctionnalité est dérivée du
filtrage de paquets Berkeley. Pour plus d'informations, voir le
fichier Documentation/networking/filter.txt
dans les
sources du noyau.
Permet la prise en charge des sockets du domaine UNIX
. X-windows et syslog sont des exemples de programmes qui
utilisent ce type de fonctionnalité. Les sockets UNIX
ne permettent que des communications
locales sur une machine. Ce type de socket est lié à la création
d'un fichier. Le nom de la famille associé aux sockets du domaine
Unix est AF_UNIX.
Exemple 2. Utilisation de la socket UNIX
#include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> int main(void) { int socket_unix, len; struct sockaddr_un local; if ((socket_unix = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(1); } local.sun_family = AF_UNIX; strcpy(local.sun_path,"/tmp/test_socket_unix"); unlink(local.sun_path); len = strlen(local.sun_path) + sizeof(local.sun_family); if (bind(socket_unix, (struct sockaddr *)&local, len) == -1) { perror("bind"); exit(1); } system("ls -l /tmp/"); unlink(local.sun_path); return 0; }
Active le protocole TCP/IP.
Permet d'envoyer des paquets à plusieurs ordinateurs en même temps. Cette fonctionnalité est, par exemple, utilisée pour la diffusion audio et vidéo.
Par défaut, la décision du routage se fait en examinant l'adresse de destination. En activant cette option, on peut contrôler beaucoup plus précisément le routage et la prise de décision pourra se faire en fonction de nombreux autres critères.
Sous-option de advanced router
- policy routing
-
Permet le remplacement de la table de routage classique, basée sur les adresses de destination, par la Base de Données des Politiques de Routage ou Routing Policy DataBase (RPDB) en anglais. Cette base de données est une liste ordonnée de règles qui scrutent certains caractéristiques des paquets :
-
adresse source
-
adresse de destination
-
champ TOS
-
marque du packet
-
interface d'entrée
Si un paquet satisfait les spécifications d'une règle, alors l'action correspondante est réalisée. L'action standard consiste à fournir l'adresse IP du prochain saut. Si vous souhaitez plus d'informations sur ce sujet, je vous conseille la lecture de deux documents :
-
La documentation ip-cref d'Alexey Kuznetsov, disponible avec le paquet
iproute
. -
L'article Policy Routing for Fun and Profit.
-
L'article Policy Routing in Linux.
De plus, un exemple complet de routage avancé peut être consulté dans le document LARTC : bases de données des politiques de routage.
Si l'option LARTC : Netfilter et iproute - marquage de paquets.
est validée, le routage des paquets pourra s'établir en fonction de la marque du paquet. Un exemple peut être consulté dans le documentSi l'option
est validée, le routeur pourra modifier les adresses source et destination des paquets transmis.Exemple 3. Exemple de NAT
Soit un routeur avec d'un coté un réseau local
192.168.1.0/24
et de l'autre un réseau public (200.200.200.0/24
, par exemple) ayant une connectivité sur Internet. On souhaite qu'une machine du réseau local (192.168.1.1
, par exemple) soit reconnue avec l'adresse200.200.200.10
sur Internet.$
ip route add nat 200.200.200.10 via 192.168.1.1$
ip rule add prio 300 from 192.168.1.1 nat 200.200.200.10 -
- equal cost multipath
-
Avec cette option, on peut spécifier plusieurs routes alternatives que peuvent emprunter les paquets. Le routeur considère toutes ces routes comme étant de coûts égaux et choisit l'une d'elle d'une manière non déterministe si un paquet arrive avec la bonne correspondance.
Exemple 4. Exemple de chemins multiples
Considérons un routeur avec deux liaisons PPP. On souhaite que les paquets sortant puissent utiliser indifféremment ppp0 ou ppp1 comme interface de route par défaut.
$
ip route add default scope global nexthop dev ppp0 nexthop dev ppp1 - use TOS value as routing key
-
L'entête d'un paquet IP contient un champ de 8 bits nommé Type Of Service (Type de service). Dans ce champ, il y a trois indicateurs qui permettent de préciser le type d'acheminement souhaité : Délai faible (faible temps d'attente), débit important et fiabilité importante. Cela permet de choisir entre, par exemple, une liaison satellite à haut débit mais avec un délai d'attente important ou une ligne louée à faible débit et faible délai. Cette option permet d'utiliser la valeur du champ TOS dans la liste de règles.
Exemple 5. Exemple d'utilisation du champ TOS pour le routage
But : tous les paquets marqués avec le champ TOS «débit important» (0x08) (par exemple le transfert de données via FTP) doivent emprunter une liaison RNIS.
$
ip rule add tos 0x08 prio 100 table 10$
ip route add default dev ippp0 table 10 - verbose route monitoring
-
Permet l'affichage de messages au sujet du routage.
- large routing tables
-
Si la table de routage possède plus de 64 entrées, il est préférable d'activer cette option pour accélérer le processus de routage.
Cette option permet de configurer les adresses IP des périphériques au moment du démarrage, ainsi que la table de routage. Les informations nécessaires à cette configuration sont fournies soit sur la ligne de commande, soit par l'intermédiaire des protocoles DHCP, BOOTP ou RARP.
Les informations sont fournies au noyau via le paramètre
ip
. Cette option est
principalement utilisée pour la mise en place de stations clientes
sans disque dur et qui ont besoin de monter la racine du système de
fichiers via NFS. Pour plus
d'informations, voir le fichier Documentation/nfsroot.txt
dans les sources du
noyau.
Exemple 6. Exemple de configuration IP au démarrage
LILO:
linux ip=192.168.1.1::192.168.1.254:255.255.255.0:Linuxbox:eth0:none
Permet de supprimer certaines vérifications lorsque le noyau reçoit un paquet. Dans le cas où Linux est principalement utilisé comme un routeur, c'est-à-dire une machine qui ne fait que transmettre les paquets, cela permet d'améliorer la vitesse de commutation.
Le tunneling permet l'encapsulation d'un protocole réseau dans un autre protocole réseau. Cette option permet l'encapsulation du protocole IP dans IP. Cela peut être utilisé dans le cas où l'on souhaite pouvoir faire communiquer deux réseaux ayant des adresses privées, donc non routables, à travers l'Internet. Un exemple complet de tunnel IP dans IP pourra être consulté dans le document LARTC : IP dans un tunnel IP.
GRE est un protocole de tunnel qui a été originellement développé par CISCO™, et qui peut réaliser plus de choses que le tunnel IP dans IP. Par exemple, ont peut aussi transporter du trafic multi-diffusion et de l'IPv6 à travers un tunnel GRE. Un exemple complet de tunnel GRE pourra être consulté dans le document LARTC : Le tunnel GRE.
Fonctionnalité qui permet aux routeurs d'annoncer aux clients une congestion du réseau.
Permet de définir de plus gros tampons dans lesquels les données sont stockées avant d'être envoyées à l'hôte destinataire.
Cette option active la fonction de filtrage des paquets traversant la machine Linux. Le filtrage permet un blocage sélectif du trafic IP en fonction, par exemple, de l'origine ou de la destination.
Sous-option de Network packet filtering
- Network packet filtering debugging
-
Permet d'avoir des messages supplémentaires du code netfilter.
- Bridge IP/ARP packet filtering
-
Permet d'utiliser les fonctionnalités de filtrage netfilter lorsque la machine est configurée pour fonctionner comme un pont.
Permet de rentrer dans un nouveau menu pour la configuration du filtrage. Celui-ci permet l'ajout de fonctionnalités dont voici une liste des plus importante :
Sous-option de Netfilter configuration
- Connection tracking (required for masq/NAT)
-
Cette option permet de mettre en place le filtrage dit StateFul. Cette technique permet de garder en mémoire, dans une table d'état, une trace des «communications en cours». Cela permet de différencier le trafic entre les hôtes pairs, en émission et en réception. Cette option est indispensable pour l'utilisation des mécanismes de traduction d'adresse.
- Connection mark tracking support
-
Cette option permet d'activer le support du marquage des communications. Ce support est nécessaire pour le critère de sélection connmark (voir connection mark match support) et pour la cible CONNMARK (voir Packet Mangling).
- IP tables support (required for filtering/masq/NAT)
-
Cette option permet la mise en place de la structure générale pour le filtrage, le masquage ou la traduction d'adresse des paquets.
- limit match support
-
Permet de limiter le débit en fonction d'une règle de correspondance.
Exemple 7. Limitation des requêtes ICMP
But : limiter les requêtes «pings» à 1 paquet par seconde.
#
iptables -A INPUT -p icmp -icmp-type echo-request -m limit --limit 1/second -j ACCEPT - IP range match support
-
Permet de spécifier un intervalle d'adresses source ou destination.
Exemple 8. consultation d'un intervalle d'adresses IP source
But : Accepter de transmettre tous les paquets dont l'adresse source est comprise entre
192.168.1.1
et192.168.1.10
.#
iptables -A FORWARD -m iprange --src-range 192.168.1.1-192.168.1.10 -j ACCEPT
Exemple 9. consultation d'un intervalle d'adresses IP destination
But : Accepter de transmettre tous les paquets dont l'adresse destination est comprise entre
192.168.1.1
et192.168.1.10
.#
iptables -A FORWARD -m iprange --dst-range 192.168.1.1-192.168.1.10 -j ACCEPT - MAC address match support
-
Permet de baser le filtrage sur les adresses MAC des trames Ethernet.
Exemple 10. Filtrage de paquets sur l'adresse MAC
But : interdire les paquets provenant d'une adresse MAC particulière.
#
iptables -A INPUT -m mac --mac-source 00:A0:24:A0:A4:11 -j DROP - Packet type match support
-
Permet de considérer le type de paquet : unicast, broadcast ou multicast.
Exemple 11. Journalisation des paquets de diffusion
#
iptables -A INPUT -m pkttype --pkt-type broadcast -j LOG - netfilter MARK match support
-
Permet de baser le filtrage sur la marque d'un paquet. Le marquage d'un paquet est réalisé grâce à la cible MARK.
Exemple 12. Filtrage de paquets suivant le marquage
But : interdire les paquets à destination du serveur web local en utilisant le marquage de paquets.
#
iptables -A PREROUTING -t mangle -p tcp --dport 80 -j MARK --set-mark=2#
iptables -A INPUT -m mark --mark 2 -j DROP - multiple port match support
-
Permet de spécifier un ensemble de ports sources ou destinations TCP ou UDP.
Exemple 13. Filtrage de paquets sur plusieurs ports source
But : interdire les accès aux ports sources 3000 et 4000.
#
iptables -A INPUT -p tcp -m multiport --source-ports 3000,4000 -j DROP - TOS match support
-
Permet de baser le filtrage sur la valeur du champ TOS du paquet.
Exemple 14. Exemple de filtrage basé sur la valeur du champ TOS
But : marquer les paquets qui ont le champ TOS Minimize-Delay activé. Ce marquage pourra ainsi être utilisé pour le routage de ces paquets.
#
iptables -t mangle -A PREROUTING -m tos --tos Minimize-Delay -j MARK --set-mark=1 - recent match support
-
Permet de baser le filtrage en recherchant la présence d'une adresse dans une liste.
Exemple 15. Exemple de filtrage basé la présence d'une adresse dans une liste
But : FIXME
#
iptables -A FORWARD -m recent --rcheck --seconds 60 -j DROP#
iptables -A FORWARD -i eth0 -d 127.0.0.0/8 -m recent --set -j DROP - ECN match support
-
La RFC3168 défini un mécanisme de notification de congestion. Ce mécanisme utilise les bits 7 et 8 du champs Type Of Service et l'en-tête IPv4 et défini deux nouveaux flags dans l'en-tête TCP. Ces flags ont pour noms CWR pour Congestion window Reduced et ECE pour ECN-Echo.
- DSCP match support
-
Permet de baser le filtrage sur la valeur des 6 bits DSCP de l'en-tête IP.
Exemple 17. Exemple de filtrage basé
Placer dans la classe Diffserv EF les paquets à destination de serveurs web.
#
iptables -t mangle -A FORWARD -p tcp --dport 80 -j DSCP --set-dscp-class EF
- AH/ESP match support
-
FIXME
- LENGTH match support
-
Permet de baser le filtrage sur la longueur, exprimée en octets, du paquet IP.
Exemple 19. Exemple de filtrage basé sur la longueur de paquet
But : Supprimer les paquets ICMP de type echo-request qui ont une longueur supérieure à 84 octets.
#
iptables -A FORWARD -p icmp --icmp-type echo-request -m length --length ! :84 -j DROP - TTL match support
-
Permet de baser le filtrage sur la valeur du champ TTL Time To Live de l'en-tête du paquet IP.
- tcpmss match support
-
Permet de baser le filtrage sur la valeur de l'option MSS Maximum Segment Size du protocole de transport TCP.
Exemple 21. Exemple de filtrage basé sur l'option MSS
But : Autoriser l'émission de paquet TCP dont le MSS est inférieur à 1400.
#
iptables -A OUTPUT -o ppp0 -p tcp -m tcpmss --mss 0:1400 -j ACCEPT - Helper match support
-
Permet de baser FIXME
- Connection state match support
-
Permet de baser le filtrage sur l'état des «communications».
Exemple 22. Filtrage de paquets FIXME
But : interdire les nouvelles communications entrantes vers la machine locale, mais autoriser les communications depuis la machine locale.
#
iptables -P INPUT DROP#
iptables -A INPUT -i eth0 -m conntrack --ctstate NEW,INVALID -j DROP#
iptables -A INPUT -i eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT - Connection tracking match support
-
Permet d'activer le module de critère de sélection conntrack. Cette option permet une plus grande granularité de recherche dans le suivi de communication.
Exemple 23. Exemple de filtrage de paquets en utilisant le suivi de communication avancé
But : autoriser les paquets appartenant à une connexion TCP établie.
#
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED --ctproto tcp -j ACCEPT - Owner match support
-
Permet de baser le filtrage sur l'identifiant du processus local ayant créé le paquet. Cette option ne peut être utilisée que dans la chaîne OUTPUT.
- Physdev match support
-
Dans le cas où la machine est configurée comme un pont entre deux réseaux Ethernet, cette option permet de repérer l'interface physique sur laquelle arrive les paquets ou sur laquelle ils doivent partir.
Exemple 24. Exemple de filtrage basé sur l'interface physique de sortie des paquets
But : Enregistrer les paquets sortant par l'interface eth0 d'un pont ethernet.
#
iptables -A FORWARD -m physdev --physdev-out eth0 -j LOG --log-level 7 - address type match support
-
Permet de baser le filtrage en fonction de la nature de l'adresse.
Exemple 25. Exemple de filtrage basé sur le type de paquet
But : accepter les paquets multicast.
#
iptables -A INPUT -m addrtype --dst-type MULTICAST -j ACCEPT - realm match support
-
Permet de baser FIXME
- SCTP protocol match support
-
Permet de baser FIXME
- comment match support
-
Permet de baser FIXME
- connection mark match support
-
Permet d'activer le critère de recherche connmark. Ce critère permet de repérer la marque associée à une communication.
Exemple 26. Limitation des requêtes ICMP
But : Autoriser les paquets sortant par eth0 et appartenant à la communication repérée par la marque 1.
#
iptables -A OUTPUT -o eth0 -m connmark --mark 1 -j ACCEPT - hashlimit match support
-
Permet de baser FIXME
- Packet filtering
-
Cette option permet le support du filtrage de paquets. La table gérant le filtrage se nomme filter et possède les chaînes par défaut INPUT, FORWARD et OUTPUT. La sous option REJECT target support ajoutera la cible REJECT. Cette cible permet de renvoyer un paquet d'erreur à la machine émettrice, simulant ainsi l'absence d'un service.
Exemple 27. Emission d'un paquet tcp-reject
But : rejeter les connexion ssh provenant des machines du réseau 192.168.0.0 et émettre un paquet tcp-reset.
#
iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 22 \ -j REJECT --reject-with tcp-reset - LOG target support
-
Cette option permet l'enregistrement des paquets grâce au démon
syslogd
.Exemple 28. Journalisation de paquets web
But : enregistrer tous les paquets à destination d'un site web sortant d'un hôte.
#
iptables -A OUTPUT -p tcp --dport 80 \ -j LOG --log-level 7 --log-prefix "Paquets WEB :" - ULOG target support
-
Permet d'activer la cible ULOG utilisée pour envoyer à travers une socket netlink le paquet à un processus de l'espace utilisateur à des fins d'enregistrement.
- TCPMSS target support
-
Permet de modifier la valeur du champ MSS contenu dans l'entête TCP grâce à la cible TCPMSS. L'usage le plus courant de cette règle de correspondance vise à adapter la taille maximale des segments TCP à la taille maximale des unités transmises au niveau réseau : MTU ou Maximum Transmit Unit.
Exemple 29. Exemple de filtrage basé sur l'option MSS
But : Adapter la taille maximale des segments TCP en fonction de la taille maximale des unités transmises au niveau réseau.
#
iptables -A POSTROUTING -o ppp0 -p tcp -m tcpmss --mss 1400:1536 \ -j TCPMSS --clamp-mss-to-pmtu - Full NAT
-
Cette option permet le support de la traduction des adresses source (SNAT) et destination (DNAT).
La sous option
permet l'utilisation du masquerading comme traducteur d'adresse source.La sous option
permet la redirection des paquets vers la machine locale. Cette cible est utilisée dans la mise en place de proxies transparent.La sous option
permet d'activer le cible NETMAP. Cette cible permet de rediriger le trafic destiné aux hôtes d'un réseau vers les hôtes d'un autre réseau.La sous option
permet d'activer la cible SAME. Cette cible permet de traiter le cas particulier d'une traduction d'adresse source où plusieurs adresses de traduction peuvent être utilisées. Avec cette cible, on s'assure que la même adresse source sera utilisée pour tous les paquets d'une même communication.Exemple 30. Exemple de traduction d'adresse source
But : masquer l'adresse source des paquets sortant par l'interface eth0 avec l'adresse
200.200.200.1
.#
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 200.200.200.1
Exemple 31. Exemple de traduction d'adresse de destination
But : rediriger les paquets à destination d'un serveur web vers le proxy de la machine
200.200.200.1
qui écoute le port 8080.#
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 200.200.200.1:8080 - Packet Mangling
-
Cette option permet de modifier certains éléments du paquet.
La sous option
permet de modifier le champ TOS du paquet.La sous option
permet de supprimer les bits ECN.La sous option tc.
permet de marquer les paquets. Ces marques pourront être utilisées par la suite pour, par exemple, imposer un routage particulier ou par l'outil de configuration de la qualité de serviceLa sous option
permet de positionner des paquets dans des classes de qualité de service.La sous option
permet de modifier la valeur du champ TTL dans l'entête IP.La sous option
permet de marquer les paquets appartenant à une communication. Ces marques pourront être utilisées par la suite pour, par exemple, imposer un routage particulier.Exemple 32. Configuration du champ TOS
But : positionner le champ TOS à Minimize-Delay pour les clients telnet.
#
iptables -A PREROUTING -t mangle -p tcp --dport telnet -j TOS --set-tos Minimize-Delay
Exemple 33. Utilisation de la cible TTL
But : rendre invisible le routeur aux traceroute.
#
iptables -A PREROUTING -p tcp --dport 33434:33542 -j TTL --ttl-inc 1
Exemple 34. Utilisation des cibles MARK et CONNMARK
But : positionner une marque pour tous les paquets d'une connexion.
#
iptables -A POSTROUTING -t mangle -j CONNMARK --restore-mark#
iptables -A POSTROUTING -t mangle -m mark ! --mark 0 -j ACCEPT#
iptables -A POSTROUTING -t mangle -p tcp --dport 21 -j MARK --set-mark 1#
iptables -A POSTROUTING -t mangle -j CONNMARK --save-mark
Permet d'imposer aux paquets appartenant à une connexion la marque définie pour le premier paquet de cette connexion.
Si le paquet possède déjà une marque, celui-ci est accepté car cela signifie que ce n'est pas le premier paquet d'une connexion.
Le premier paquet d'une nouvelle connexion FTP est marqué avec la marque 1.
La marque du premier paquet sera considérée comme étant la marque de tous les paquets de la connexion. Cette marque sera imposée aux autres paquets associés à la connexion grâce à la première règle.
De nos jours, les réseaux locaux ou LANs (Local Area Network) sont définis comme étant un domaine de diffusion unique. Les réseaux locaux virtuels ou VLANs permettent de définir des réseaux locaux logiques sans se soucier de la localisation physique du matériel. Ces VLANs sont identifiés par une balise. Suivant la configuration du commutateur, il est parfois nécessaire d'indiquer à quel VLAN appartient une trame qui est envoyée sur le réseau. C'est ici que le protocole IEEE 802.1Q intervient. Ce protocole va permettre le marquage des trames Ethernet.
Exemple 35. Exemple de configuration du support VLAN
But : définir l'interface eth0 comme appartenant au VLAN numéro 2.
LinuxBox#
modprobe 8021qLinuxBox#
ifconfig eth0 0.0.0.0 upLinuxBox#
vconfig add eth0 2LinuxBox#
ifconfig eth0.2 192.168.1.1 up
La figure ci-dessous propose un exemple de trame Ethernet avec le support du protocole IEEE 802.1Q.
Le document Routage Inter-VLAN développe beaucoup plus en détails l'utilisation des VLANs sur GNU/Linux.
Ajoute le support du protocole IPX, principalement utilisé par les réseaux Novell™. IPX est un protocole de couche 3 (couche réseau).
Appletalk est le protocole de communication des ordinateurs Apple™. Cette option permet à la machine Linux de pouvoir dialoguer avec les machines Apple™. En utilisant le programme netatalk, Linux peut agir comme serveur d'impression et de fichiers pour Mac. Il pourra également accéder aux imprimantes Appletalk.
La société Digital Equipment Corporation™ a créé une architecture réseau complète qui porte le nom de DNA (Digital Network Architecture). Cette architecture s'appuie sur une pile de protocole qui englobe l'ensemble des couches du modèle OSI. Les produits qui implémentent l'architecture DNA sont appelés produits DECNet. Par abus de langage, on désigne parfois le terme DECNet pour identifier un réseau DNA.
Pour plus d'informations sur ce sujet, consulter le site officiel du support DECnet for Linux.
Avec cette option, votre boîte Linux pourra être assimilée à un pont Ethernet ; ce qui signifie que les différents segments Ethernet connectés apparaîtront comme un seul réseau Ethernet. Plusieurs ponts de ce type peuvent fonctionner ensemble pour créer un réseau de segments Ethernet encore plus grand en utilisant l'algorithme de Spanning Tree Protocol (IEEE 802.1d). Comme le protocole IEEE 802.1d est un standard universel, les ponts Linux fonctionneront correctement avec des équipements tiers.
Pour utiliser un pont Ethernet, vous aurez besoin des outils de
configuration de pont. Voir Documentation/networking/bridge.txt
pour plus
d'information. Lire aussi le Linux BRIDGE-STP-HOWTO.
Notez que si votre machine fonctionne en pont, elle contient plusieurs interfaces Ethernet. Le noyau n'est pas capable de reconnaître plus d'une interface au démarrage sans assistance. Pour plus de détails, lire le document Technologie Ethernet.