Généralités système Linux

La commande ip : réseau, interfaces, routage, table ARP

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières



Introduction



Les outils de réseau contenant notamment la commande ifconfig ne sont plus maintenus ou plus guère maintenus.
Il est conseillé d'utiliser maintenant la commande ip qui fait tout.
Cet article va présenter les options possibles de la commande ip.
J'utiliserai le nom d'interface eno16777736 (celui de ma machine virtuelle) pour illustrer les commandes qui auront besoin d'une interface spécifique.


Récolter des informations



La première utilisation de la commande ifconfig est de récupérer l'adresse IP de la machine.
L'équivalent avec la commande ip est

Code BASH :
ip a


Cela liste toutes les interfaces, avec toutes les informations :

Code BASH :
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 brd 127.255.255.255 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether 00:0c:29:8c:b2:02 brd ff:ff:ff:ff:ff:ff
    inet 192.168.74.128/24 brd 192.168.74.255 scope global eno16777736
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe8c:b202/64 scope link
       valid_lft forever preferred_lft forever


On peut ne récupérer que les adresses IPv4 via :
Code BASH :
ip -4 a


Ou bien que les adresses IPv6 via :
Code BASH :
ip -6 a


On peut aussi filtrer par l'interface via :
Code BASH :
ip a show eno16777736


On peut cumuler toutes les options pour n'avoir que les infos de cette interface en IPv4 :
Code BASH :
ip -4 a show eno16777736


On peut aussi afficher que les interfaces "up" :
Code BASH :
ip link ls up



Modifier une interface



Auparavant, pour assigner une IP à une interface, on procédait ainsi :
Code BASH :
ifconfig eno16777736 192.168.74.101


Maintenant, avec la commande IP :
Code BASH :
ip a add 192.168.74.101/255.255.255.0 dev eno16777736 


Ou plus court (le masque en CIDR) :
Code BASH :
ip a add 192.168.74.101/24 dev eno16777736 


Il faut en effet maintenant connaître le masque du sous-réseau à utiliser.

Il est possible aussi de supprimer cette adresse IP :
Code BASH :
ip a del 192.168.74.101/24 dev eno16777736 


Pour activer ou désactiver une interface :
Code BASH :
ip link set dev eno16777736 up
ip link set dev eno16777736 down


La commande IP permet aussi de déclarer les routes (et routes par défaut) :
Code BASH :
ip route add default via 192.168.74.254


Et aussi, il est possible à la volée de changer le MTU :
Code BASH :
ip link set mtu 9000 dev eno16777736 



Gérer les tables de routage



Pour voir la table de routage :
Code BASH :
ip r


Code BASH :
default via 192.168.74.254 dev eno16777736  metric 2
127.0.0.0/8 dev lo  scope host
127.0.0.0/8 via 127.0.0.1 dev lo
192.168.74.0/24 dev eno16777736  proto kernel  scope link  src 192.168.74.128