Gestion du réseau Linux avec la librairie Iproute2
La librairie Iproute2 est un ensemble d’utilitaires de l’espace utilisateur pour communiquer avec divers noyaux Linux avec le protocole netlink. Plus spécifiquement les utilitaires iproute2
sont utilisés pour contrôler le trafic réseau (TCP, UDP, IPv4, IPv6). Il sont aussi utilisés pour configurer les cartes réseau (NIC) filaires et sans fil.
La librairie Iproute2 remplace les net-tools
suivants :
Fonction | Net-tools | iproute2 |
---|---|---|
Configuration des adresses IP et du lien (L2) | ifconfig | ip addr , ip link |
Tables de routage | route | ip route |
Tables de voisinage | arp | ip neigh |
VLAN | vconfig | ip link |
Tunnels | iptunnel | ip tunnel |
Commutation (Bridges) | brctl | ip link , bridge |
Multicast | ipmaddr | ip maddr |
Statistiques | netstat | ip -s , ss |
1. Conventions de dénomination des interfaces
Sous Centos 7, RHEL 7, Fedora 21 :
- noms prenant les numéros fournis par le Bios/firmware pour les périphériques «on-board» :
eno1
,em1
(embedded) - noms incorporant l’index pour les cartes PCI-E :
ens1
- noms incorporant l’emplacement physique du connecteur selon
p<port>s<slot>
:enp2s0
- noms prenant l’adresse MAC de l’interface :
enx78e7d1ea46da
- dénomination traditionnelle du noyau :
eth0
,wlan0
Pour activer la dénomination traditionnelle, il faut éditer le fichier /etc/default/grub
en ajoutant la valeur net.ifnames=0 biosdevname=0
à la variable GRUB_CMDLINE_LINUX
.
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
Il sera alors nécessaire de mettre à jour grub et de redémarrer le système :
sudo update-grub
sudo reboot
Attention, il sera aussi indispensable d’adapter le fichier de configuration /etc/network/interfaces
avec le nouveau nom d’interface.
2. Visualiser les adresses
ifconfig
ip addr show
ip link show
2.1. Exercice
Exercice : Filtre grep/awk sur les sorties, examen attentif des sorties :
ifconfig | grep -w inet | awk '{ print $2}'
ip a s | grep -w inet | awk '{ print $2}'
3. Libérer un bail DHCP
Pour libérer un bail et arrêter le client DHCP :
sudo dhclient -r
ip addr show
Relancer le client et obtenir de nouveaux paramètres DHCP :
sudo dhclient -d
Internet Systems Consortium DHCP Client 4.2.5
Copyright 2004-2013 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/eno16777736/00:0c:29:7b:c0:98
Sending on LPF/eno16777736/00:0c:29:7b:c0:98
Sending on Socket/fallback
DHCPDISCOVER on eno16777736 to 255.255.255.255 port 67 interval 4 (xid=0x5511e5b4)
DHCPREQUEST on eno16777736 to 255.255.255.255 port 67 (xid=0x5511e5b4)
DHCPOFFER from 192.168.95.254
DHCPACK from 192.168.95.254 (xid=0x5511e5b4)
bound to 192.168.95.128 -- renewal in 766 seconds.
^C
4. Activer/désactiver une interface
Activation d’une interface :
sudo ifconfig eth0 up
sudo ip link set eth0 up
On peut la désactiver de manière similaire :
sudo ifconfig eth0 down
sudo ip link set eth0 down
Sous Debian/Ubuntu, on peut utiliser les scripts suivants :
sudo ifdown eth0
sudo ifup eth0
5. Fixer/supprimer une adresse IPv4
Pour fixer une adresse IPv4 :
sudo ifconfig eth0 192.168.0.77/24
ou :
sudo ip address add 192.168.0.77/24 dev eth0
Pour l’effacer :
sudo ip addr del 192.168.0.77/24 dev eth0
6. Ajouter une interface alias
sudo ifconfig eth0:1 10.0.0.1/8
sudo ip addr add 10.0.0.1/8 dev eth0 label eth0:1
7. IPv6 ip -6 addr
ip -6 addr help
Usage: ip addr {add|change|replace} IFADDR dev STRING [ LIFETIME ]
[ CONFFLAG-LIST ]
ip addr del IFADDR dev STRING
ip addr {show|save|flush} [ dev STRING ] [ scope SCOPE-ID ]
[ to PREFIX ] [ FLAG-LIST ] [ label PATTERN ] [up]
ip addr {showdump|restore}
IFADDR := PREFIX | ADDR peer PREFIX
[ Broadcast ADDR ] [ anycast ADDR ]
[ label STRING ] [ scope SCOPE-ID ]
SCOPE-ID := [ host | link | global | NUMBER ]
FLAG-LIST := [ FLAG-LIST ] FLAG
FLAG := [ permanent | dynamic | secondary | primary |
tentative | deprecated | dadfailed | temporary |
CONFFLAG-LIST ]
CONFFLAG-LIST := [ CONFFLAG-LIST ] CONFFLAG
CONFFLAG := [ home | nodad ]
LIFETIME := [ valid_lft LFT ] [ preferred_lft LFT ]
LFT := forever | SECONDS
8. Tables de voisinage
Table ARP (IPv4) :
ip neigh show
Table ND (IPv6) :
ip -6 neigh show
9. Tables de routage
route
route -6
ip route
ip -6 route
ip route help
Usage: ip route { list | flush } SELECTOR
ip route save SELECTOR
ip route restore
ip route showdump
ip route get ADDRESS [ from ADDRESS iif STRING ]
[ oif STRING ] [ tos TOS ]
[ mark NUMBER ]
ip route { add | del | change | append | replace } ROUTE
...
man ip-route
10. Route par défaut et routes statiques
10.1. Route par défaut
sudo ip route add default via 192.168.1.1
De manière optionnelle on peut indiquer l’interface de sortie :
sudo ip route add default via 192.168.1.1 dev eth0
10.2. Route statique
isudo p route add 192.168.100.0/24 via 192.168.1.1 dev eth0
11. Serveurs de noms
On peut le définir via nmcli
ou nmtui
.
cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.21.1
nameserver 8.8.8.8
12. Exercice de configuration manuelle des interfaces
- Vérifier et noter les paramètre des interfaces réseau :
- Nom
- Statut
- Adresse IP et masque
- Passerelle
- Serveur(s) DNS
- Arrêter le service réseau
- Arrêter le client DHCP et vérifier l’interface
- Faire tomber la première interface de l’ordinateur et vérifier
- Fixer manuellement une adresse IPv4 et vérifier
- Joindre la passerelle, la table ARP et vérifier la table de routage
- Ajouter une passerelle par défaut et vérifier
- Vérifier la résolution de noms
13. Configurations permanentes
13.1. Configuration permanente sous debian
Configuration permanente sous debian.
Editer le fichier /etc/network/interfaces
:
auto lo eth1
allow-hotplug eth0
iface lo inet loopback
iface eth0 inet dhcp
iface eth1 inet static
address 192.168.0.42
netmask 255.255.255.0
gateway 192.195.0.1
dns-nameservers 192.0.2.71
iface eth1 inet6 static
address 2001:db8::6726
netmask 32
gateway 2001:db8::1
dns-nameservers 2001:db8::12
Et puis redémarrer le service.
13.2. Configuration permanente sous RHEL7
Configuration permanente sous RHEL7.
Editer le fichier /etc/sysconfig/network-scripts/ifcfg-*
où *
correspond à l’interface à configurer :
DEVICE="eth0"
HWADDR="00:21:70:10:7E:CD"
NM_CONTROLLED="no"
ONBOOT="yes"
BOOTPROTO=static
# BOOTPROTO=dhcp
IPADDR=10.16.1.106
NETMASK=255.255.255.0
#
# the GATEWAY is sometimes in: /etc/sysconfig/network
GATEWAY=10.16.1.1
Fichier /etc/sysconfig/network
:
HOSTNAME=acme.example.com
DNS1=10.16.1.112
DNS2=8.8.8.8
## DNS2=76.242.0.28
SEARCH=example.com
Et puis redémarrer le service.