4. Gestion du réseau Linux avec la librairie iproute2

  • 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 est aussi utilisé pour configurer les cartes réseau (NIC) filaires et sans fil.

  • Il 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 :

  1. noms prenant les numéros fournis par le Bios/firmware pour les périphériques «on-board» : eno1, em1 (embedded)
  2. noms incorporant l’index pour les cartes PCI-E : ens1
  3. noms incorporant l’emplacement physique du connecteur selon p<port>s<slot> : enp2s0
  4. noms prenant l’adresse MAC de l’interface : enx78e7d1ea46da
  5. dénomination traditionnelle du noyau : eth0, wlan0

2. Visualiser les adresses

ifconfig
ip addr show
ip link show

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 :
dhclient -r
ip addr show
  • Relancer le client et obtenir de nouveaux paramètres DHCP :
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 :
ifconfig eth0 up
ip link set eth0 up
  • On peut la désactiver de manière similaire :
ifconfig eth0 down
ip link set eth0 down
  • Sous Debian/Ubuntu, on peut utiliser les scripts suivants :
ifdown eth0
ifup eth0

5. Fixer/supprimer une adresse IPv4

Pour fixer une adresse IPv4 :

ifconfig eth0 192.168.0.77/24

ou :

ip address add 192.168.0.77/24 dev eth0

Pour l’effacer :

ip addr del 192.168.0.77/24 dev eth0

6. Ajouter une interface alias

ifconfig eth0:1 10.0.0.1/8
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. Table 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

Route par défaut

ip route add default via 192.168.1.1

De manière optionnelle on peut indiquer l'interface de sortie :

ip route add default via 192.168.1.1 dev eth0

Route statique

ip 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. Il serait peut-être plus aisé de modifier le fichier /etc/resolv.conf:

cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.21.1
nameserver 8.8.8.8

12. Exercice de configuration manuelle des interfaces

  1. Vérifier et noter les paramètre des interfaces réseau :
  2. Nom
  3. Statut
  4. Adresse IP et masque
  5. Passerelle
  6. Serveur(s) DNS
  7. Arrêter le service réseau
  8. Arrêter le client DHCP et vérifier l'interface
  9. Faire tomber la première interface de l'ordinateur et vérifier
  10. Fixer manuellement une adresse IPv4 et vérifier
  11. Joindre la passerelle, la table ARP et vérifier la table de routage
  12. Ajouter une passerelle par défaut et vérifier
  13. Vérifier la résolution de noms

13.Configurations permanentes

Configuration permanente sous debian : éditer 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 :

/etc/init.d/networking restart

Configuration permanente sous RHEL7 :

Editer le fichier /etc/sysconfig/network-scripts/ifcfg* qui 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 :

systemctl restart network

Il pourrait être utile de lire le document https://wiki.centos.org/FAQ/CentOS7 qui répond à bon nombre de questions sur la configuration du réseau sous Centos.

Commentaires