La commande ip : réseau, interfaces, routage, table ARP
Table des matières
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.
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
Cela liste toutes les interfaces, avec toutes les informations :
On peut ne récupérer que les adresses IPv4 via :
Ou bien que les adresses IPv6 via :
On peut aussi filtrer par l'interface via :
On peut cumuler toutes les options pour n'avoir que les infos de cette interface en IPv4 :
On peut aussi afficher que les interfaces "up" :
Auparavant, pour assigner une IP à une interface, on procédait ainsi :
Maintenant, avec la commande IP :
Ou plus court (le masque en CIDR) :
Il faut en effet maintenant connaître le masque du sous-réseau à utiliser.
Il est possible aussi de supprimer cette adresse IP :
Pour activer ou désactiver une interface :
La commande IP permet aussi de déclarer les routes (et routes par défaut) :
Et aussi, il est possible à la volée de changer le MTU :
Pour voir la table de routage :
Avant, avec la commande ifconfig on avait les statistiques des paquets envoyés et reçus :
On sait que depuis le dernier reboot, cette interface a envoyé 2.8TiB de données et reçues 842.9 GiB.
Avec la commande ip, cela devient :
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
Afficher des statistiques
Avant, avec la commande ifconfig on avait les statistiques des paquets envoyés et reçus :
Code BASH :
ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.21.251 netmask 255.255.255.0 broadcast 192.168.21.255 inet6 fe80::225:64ff:feec:ec99 prefixlen 64 scopeid 0x20<link> ether 00:25:64:ec:ec:99 txqueuelen 1000 (Ethernet) RX packets 1456858273 bytes 905154140467 (842.9 GiB) RX errors 0 dropped 1623 overruns 0 frame 0 TX packets 2231407022 bytes 3146572777909 (2.8 TiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 21 memory 0xfe6e0000-fe700000
On sait que depuis le dernier reboot, cette interface a envoyé 2.8TiB de données et reçues 842.9 GiB.
Avec la commande ip, cela devient :
Code BASH :
ip -s -h -a link 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 00:25:64:ec:ec:99 brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 905G 1.46G 0 87 0 865k TX: bytes packets errors dropped carrier collsns 3.15T 2.23G 0 0 0 0