Administration réseau sous Linux/Routage

Adresses IP et MAC

modifier

Chaque interface de chaque ordinateur sera identifiée par

  • Son adresse IP : une adresse IP (version 4, protocole IP V 4) permet d’identifier un hôte et un sous-réseau. L’adresse IP est codée sur 4 octets - 32 bits. (les adresses IP V 6, ou IP next generation seront codées sur 16 octets - 128 bits).
  • L’adresse mac de sa carte réseau (carte Ethernet ou carte wifi) sur 6 octets - 48 bits;

Une adresse IP permet d’identifier un hôte. Une passerelle est un ordinateur qui possède plusieurs interfaces et qui transmet les paquets d’une interface à l’autre. La passerelle peut ainsi faire communiquer différents réseaux. Chaque carte réseau possède une adresse MAC unique garantie par le constructeur. Lorsqu’un ordinateur a plusieurs interfaces, chacune possède sa propre adresse MAC et son adresse IP. On peut voir sa configuration réseau par ifconfig :

$ ifconfig eth0
eth0        Link encap:Ethernet HWaddr 00:B2:3A:24:F3:C4
            inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
            inet6 addr: fe80::2c0:9fff:fef9:95b0/64 Scope:Link
            UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
            RX packets:6 errors:0 dropped:0 overruns:0 frame:0
            TX packets:16 errors:0 dropped:0 overruns:0 carrier:5
            collisions:0 txqueuelen:1000
            RX bytes:1520 (1.4 KiB) TX bytes:2024 (1.9 KiB)
            Interrupt:10

On voit l’adresse MAC 00:B2:3A:24:F3:C4 et l’adresse IP 192.168.0.2. Cela signifie que le premier octet de l’adresse IP est égal à 192, le deuxième 168, le troisième octet est nul, et le quatrième vaut 2.

Sous-réseaux

modifier

Classes de sous-réseaux

modifier

Jusqu'aux années 1990, les adresses IPv4 étaient organisées en sous-réseaux. Chaque sous-réseau possède une adresse, qui est une partie de l’adresse IP des machines de ce sous-réseau.

Par exemple, l’adresse IP 192.168.4.35 appartient au sous-réseau 192.168.4, parfois aussi noté 192.168.4.0.

Les sous-réseaux sont organisés en classes. Chaque classe de sous-réseaux correspond à des réseaux pouvant contenir un certain nombre de machines.

  • Classe A : les adresses de 1.0.0.0 à 127.0.0.0. L’identifiant du réseau est sur 8 bits et les identifiants de machine sont sur 24 bits (plusieurs millions de machines par sous-réseau ;
  • Classe B : les adresses de 128.0.0.0 à 191.255.0.0. L’identifiant du réseau est sur 16 bits et les identifiants de machine sont sur 16 bits (plus de 65 000 machines par sous-réseau) ;
  • Classe C : les adresses de 192.0.0.0 à 223.255.255.0. L’identifiant du réseau est sur 24 bits et les identifiants de machine sont sur 8 bits (au plus 254 machines par sous-réseau, numérotées de 1 à 254) ;

Masque de sous-réseau

modifier

Un masque de sous-réseau est une donnée sur 4 octets qui, avec l’adresse du sous-réseau, caractérise les IP du sous-réseau.

Un bit du masque de sous-réseau est à 1 si pour toutes les adresses IP du sous-réseau, ce même bit est le même pour l’adresse IP et le sous-réseau.

Par exemple, pour le réseau de classe A 37.0.0.0 avec le masque de sous-réseau 255.0.0.0, les 8 premiers bits de toutes les adresses IP du sous-réseau valent 37.

Autre exemple : pour le sous-réseau de classe C 193.56.49.0 et le masque de sous-réseau 255.255.255.0, les 24 premiers bits de toutes les IP du sous-réseau sont 193.56.49.

On peut désigner un sous-réseau par son adresse et son masque, mais on peut aussi désigner le sous-réseau en donnant seulement le nombre de bits du masque. On parle alors, pour reprendre les deux exemples précédents, du sous-réseau 37.0.0.0/8 ou du sous-réseau 193.56.49.0/24.

Routage

modifier
 
Sous-réseaux reliés par des passerelles.

Le routage permet de faire communiquer plusieurs sous-réseaux. Une passerelle (en anglais gateway) est en communication avec différents sous-réseaux sur différentes interfaces, et assure la communication entre les différents sous-réseaux.

Une route définie sur une station est un chemin que doivent prendre les paquets à destination d’un certain sous-réseau. Prenons l’exemple d’une station, appelée station 1, d’adresse IP 112.65.77.8 sur un réseau 112.0.0.0/8.

Elle est connectée à une passerelle qui a pour IP dans ce réseau 112.65.123.3 sur son interface eth0. La passerelle est aussi connectée au réseau 192.168.0.0/24 via son interface eth1 qui a pour IP 192.168.0.1. Si la station 1 veut communiquer directement avec la station, appelée station 6, d’adresse IP 192.168.0.2 sur le réseau 192.168.0.0/24, trois condition doivent être réunies ;

  • Une route doit être définie sur la station 1 indiquant que les paquets à destination du réseau 192.168.0.0/24 doivent passer par la passerelle 112.65.123.3. Pour cela, on peut utiliser la commande route :
route add -net 192.168.0.0/24 gw 112.65.123.3
  • Une route doit être définie sur la station 6 indiquant que les paquets à destination du réseau 112.0.0.0/8 doivent passer par la passerelle 192.168.0.1 ; Pour cela, on peut utiliser la commande route :
route add -net 112.0.0.0/8 gw 192.168.0.1
  • La passerelle doit être configurée pour transmettre (ou forwarder) les paquets IP d’un réseau à l’autre, ce qui se fait par l'une des commandes suivantes (les deux font la même chose, inutile donc de se répéter) :
echo 1 >/proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward=1

Remarque : Il faut refaire ces commandes après un redémarrage. Pour éviter de relancer ces commandes manuellement, on peut les mettre dans des scripts d’initialisation au démarrage avec la commande update-rc.d (sous debian)). Pour ajouter un script my_ script à l’initialisation :

mv my_script /etc/init.d
update-rc.d my_script defaults

Si l'IP-forwarding est activé via uns sysctl, le fichier standard de configuration de ce paramètre est /etc/sysctl.conf, où la ligne est déjà en commentaire.

On peut voir l’état des routes avec la commande route -n. Par exemple, sur la station 1 :

route -n
Destination           Gateway                         Genmask               Flags Metric Ref     Use Iface
192.168.0.0           112.65.123.3                    255.255.255.0         U     0       0        0 eth2
etc...

Sur la station 6

route -n
Destination           Gateway                         Genmask               Flags Metric Ref     Use Iface
112.0.0.0             192.168.0.1                     255.0.0.0             U     0       0        0 wlan0
etc...

Pour supprimer une route, par exemple vers le réseau 193.86.46.0/24 via une passerelle 196.24.52.1, on fait :

route del -net 193.86.46.0/24 gw 196.24.52.1

Route par défaut (gateway)

modifier

Quand on a défini un certain nombre de routes sur une station, on peut définir une route spéciale pour les paquets IP à destination des réseaux non prévus dans les autres routes. On appelle une telle route une route par défaut. En général, c’est la route qu’il faut employer pour aller sur internet. On emploie le réseau 0.0.0.0 (masque 255.255.255.255). Pour définir une route par défaut on peut employer la commande route. Par exemple, pour définir la route par défaut via la passerelle 194.56.87.1 :

route add default gw 194.56.87.1

Pour supprimer cette même route :

route del default gw 194.56.87.1

NAT et masquerading

modifier

Lorsqu'un hôte ayant une adresse IP sur un réseau local cherche à se connecter sur un réseau plus vaste, par exemple sur internet, via une passerelle, cet hôte a besoin d’une adresse IP sur le réseau vaste. Pour cela, soit on demande à ce que les adresses du réseau local soient routées sur le réseau global, mais il faut alors demander à réserver une plage d’adresses sur le réseau global, soit l’administrateur de la passerelle a la possibilité de prêter l’IP de la passerelle aux machines du réseau local. Pour cela, on utilise iptables avec NAT. Par exemple, si la passerelle se connecte à internet via son interface eth0, il suffit d’exécuter la commande suivante sur la passerelle :

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Toute machine du réseau local (par exemple 192.168.0.0/24) qui se connecte à internet via cette passerelle aura alors l’adresse IP de la passerelle sur internet. On peut aussi donner aux machines du réseau local une autre adresse IP que l’on spécifie avec –to :

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 193.56.17.9

Nous aurons un aperçu plus complet des possibilités d’iptables dans la documentation sur Netfilter.

Redirection

modifier

Il est également possible de modifier la destination d'un paquet. C'est utile lorsqu'on veut cacher une machine derrière une autre : le client se connecte à un serveur, qui va transmettre tous les paquets à un autre. Pour le client c'est transparent, c'est comme si c'était le premier serveur qui répondait. On appelle cela du Destination NAT (DNAT).

Exemple pour rediriger toutes les connexions du port 22 vers le serveur 192.168.1.12 :

iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to 192.168.1.12