Gestion du réseau sous Linux avec iproute2

I. Présentation d'iproute2

Les commandes ifconfig, arp, route, et netstat sont certainement les premières qui viennent à l'esprit des sysadmins quand il s'agit de gérer la configuration réseau d'une machine sous Linux. Elles font toutes partie de la suite du paquet "net-tools" développé il y a maintenant longtemps sur les kernels Linux, ce que l'on sait moins, c'est que le développement de ces outils a été stoppé en 2001 et qu'un autre paquet vient peu à peu le remplacer sur les distributions, il s'agit d'iproute2 qui a déjà remplacé totalement les anciennes commandes de net-tools sur CentOS 7 ainsi que sur ArchLinux.

Un message d'erreur comme "ifconfig command not found" peut en interloquer plus d'un, cependant il va falloir vous habituer à le voir car le remplacement de net-tools par iproute2 prend peu à peu de l'ampleur et est destiné à remplacer l'ancien standard de gestion du réseau sous Linux.

Pour rappel, les net-tools sont utilisés depuis maintenant 25 ans sur les OS UNIX, ifconfig avait été à l'origine créé en tant qu'outil TCP/IP sur la version 4.2 de BSD en ... 1983 ! Le principal avantage du paquet iproute2 est qu'il permet de réunir tous les anciens outils dans une seule commande via des options, par exemple :

  • ifconfig --> ip addr, ip link
  • route --> ip route
  • arp --> ip neigh
  • vconfig --> ip link
  • iptunnel --> ip tunnel
  • ipmaddr --> ip maddr
  • netstat --> ss

De plus, iproute2, qui est toujours en développement, a pour but de rendre l'implémentation de spécifité réseau via ses commandes comme par exemple la QoS, les VLAN, le channel bonding, etc.

Note : Pour info, l’outil de gestion graphique des connexions réseau d'Ubuntu network manager repose également sur iproute2.

Les habitudes seront certes difficiles à changer, mais il faudra bien y passer car iproute deviendra rapidement le standard de la gestion réseau sous Linux alors autant s'y mettre au plus tôt. Je vais ici vous présenter différentes manières d'exécuter des commandes de gestion réseau avec les commandes iproute2 en vous montrant à chaque fois la méthode net-tools puis iproute2.

II. Quelques exemples de commandes basiques avec iproute2

A. Lister les interfaces

Commençons par le plus simple, lister les interfaces, sous net-tools, on utilisait les commandes suivantes :

$ ifconfig

Avec iproute2 on utilisera la ligne de commande suivante :

ip addr

Résultat :

iproute2_02

On peut préciser une interface spécifique à la suite de la commande pour n'avoir les informations que de cette interface

ip addr show lo

B. Renommer une interface

Un problème que j'ai eu sous CentOS 7 et que je n'ai pas encore compris, est le nom de mon interface principale qui, comme vous pouvez le voir sur le dernier screenshot est.. compliquée. J'ai donc cherché à la renommer avec les commandes suivantes :

ip link set down eno16777736
ip link set eno16777736 name eth0
ip link set up eth0

Et voila le travail !

iproute2_03

C. Activer ou désactiver une interface réseau

Vous remarquerez que je suis passé par une désactivation/activation de l'interface réseau pour changer son nom, voici les commandes que l'on utilisait avant :

$ ifconfig eth1 up
$ ifconfig eth1 down

Et celles à utiliser avec iproute2 :

$ ip link set down eth1
$ ip link set up eth1

D. Gestion d'une adresse IPV4

Nous allons maintenant voir comment gérer une adresse IPv4 sur une interface réseau. On commence par  ajouter une adresse IP à une interface, ce qui se faisait comme cela sous net-tools :

$ ifconfig eth1 10.0.0.1/24

Maintenant avec iproute2 :

$ ip addr add 10.0.0.1/24 dev eth1

On assigne donc l'IP 10.0.0.1 au device (à l'interface réseau) "eth1". Avec iproute2, on peut également assigner facilement plusieurs adresses IPv4 à une interface, ce qu'on ne pouvait pas faire avec les commandes net-tools où l'on devait utiliser les alias :

$ ip addr add 10.0.0.1/24 broadcast 10.0.0.255 dev eth1
$ ip addr add 10.0.0.2/24 broadcast 10.0.0.255 dev eth1
$ ip addr add 10.0.0.3/24 broadcast 10.0.0.255 dev eth1

On peut également facilement enlever une adresse IPv4 d'une interface avec iproute 2 :

$ ip addr del 10.0.0.1/24 dev eth1

E. Gestion d'une adresse IPv6

Pour ajouter une adresse IPv4 sous net-tools, nous utilisions ces syntaxes :

$ ifconfig eth1 inet6 add 2003:0db5:0:f102::1/64

Voila comment il faudra procéder sous iproute2, on précisera l'option "-6" pour préciser que l'on parle Ipv6" :

$ ip -6 addr add 2003:0db5:0:f102::1/64 dev eth1

Encore une fois, pour afficher une interface réseau et son adresse IPv6, sous net-tools :

$ ifconfig eth1

Sous iproute2, on retrouve le même fonctionnement que lors de l'attribution de l'IP avec l'option "-6":

$ ip -6 addr show dev eth1

Et enfin pour supprimer une adresse IPv6 d'une interface réseau, sous net-tools :

$ ifconfig eth1 inet6 del 2002:0db5:0:f102::1/64

Sous iproute2 :

$ ip -6 addr del 2002:0db5:0:f102::1/64 dev eth1

F. Changer l'adresse MAC d'une interface

La commande pour changer l'adresse MAC d'une interface réseau était la suivante sous net-tools :

$ ifconfig eth1 hw ether 08:00:27:75:2a:66

Avec iproute2, on retrouve sensiblement une syntaxe similaire :

$ ip link set dev eth1 address 08:00:27:75:2a:67

G. Gestion de la table de routage

La gestion de la table de routage se faisait via la commande "root" et "netstat" pour l’affichage ;

$ route -n
$ netstat -rn

On utilisera maintenant la commande suivante pour afficher la table de routage :

$ ip route show

iproute2_04

Voici les commandes que l'on utilisait pour ajouter ou supprimer une route par défaut (0.0.0.0/0) avec net-tools. Pour remplacer une route, il fallait supprimer l'ancienne et ajouter la nouvelle en deux lignes

$ route add default gw 192.168.1.2 eth0
$ route del default gw 192.168.1.1 eth0

Avec iproute2 on peut ajouter une route par défaut comme cela :

$ ip route add default via 192.168.1.2 dev eth0

En revanche si l'on souhaite remplacer la route par défaut, on peut utiliser cette commande :

$ ip route replace default via 192.168.1.2 dev eth0

Pour les routes statiques, voici les commandes sous net-tools en utilisant route :

$ route add -net 172.16.32.0/24 gw 192.168.1.1 dev eth0
$ route del -net 172.16.32.0/24

Et voici les commandes à utiliser pour iproute2 :

$ ip route add 172.16.32.0/24 via 192.168.1.1 dev eth0
$ ip route del 172.16.32.0/24

H.Voir les informations sur les ports

On utilisait auparavant netstat pour lister les connexions actives, en attente et les ports occupés :

$ netstat
$ netstat -l

Le package iproute2 inclut maintenant la commande "ss" qui s'utilise de façon similaire avec les options habituelles :

$ ss
$ ss -l

I. Gestion de la table ARP

Pour afficher la table ARP de l'hôte, on utilisait la commande ARP avec les options suivantes sous net-tools :

$ arp -an

Avec iproute2, il faut utiliser la commande suivante :

$ ip neigh

iproute2_05

Pour ajouter ou supprimer un entrée dans la table de routage, les commandes suivantes étaient utilisées sous net-tools :

$ arp -s 192.168.1.100 00:0c:29:c0:5a:ef
$ arp -d 192.168.1.100

Voici celles qui faudra utiliser avec iproute2:

$ ip neigh add 192.168.1.100 lladdr 00:0c:29:c0:5a:ef dev eth0
$ ip neigh del 192.168.1.100 dev eth0

Voila pour ce tutoriel ! Il peut être bon de garder dans un coin de bureau ces commandes au moins le temps de la transition, il faudra ensuite que les vieilles habitudes laissent places au nouvelles !

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Fondateur d'IT-Connect.fr et d'Information-security.fr. Auditeur sécurité chez Amossys.

    mickael a publié 475 articles sur IT-Connect.See all posts by mickael

    6 réactions sur “Gestion du réseau sous Linux avec iproute2

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *