Gestion du réseau sous Linux

De Travail-Ivan 2

Gestion du réseau sous Linux

Introduction

Cette documentation couvre la gestion complète du réseau sous les principales distributions Linux (Debian, RedHat, Ubuntu).

Les interfaces réseau

Les interfaces correspondent aux cartes réseau sur un système Linux. Elles sont détectées au démarrage de la machine.

Interface de loopback

  • Interface standard configurée sur chaque système
  • Permet au kernel de valider la pile TCP/IP
  • Permet de faire fonctionner certains services en local sans exposition externe
  • Nom : lo
  • IP : 127.0.0.1
  • Aussi appelée interface localhost

Nommage des interfaces

Les interfaces peuvent être nommées différemment selon les distributions :

  • Méthode classique : eth0, eth1, etc. (selon l'ordre de détection)
  • Nouvelle norme (basée sur le firmware) :
    • ens0 ou enp1s1 (ethernet) : le nom est basé sur l'emplacement physique de la carte
    • wlp3s0 (wlan) : pour les interfaces wifi

Commandes de base

La commande IP

La commande ip est l'outil moderne qui remplace ifconfig. Elle permet de gérer tous les aspects de la configuration réseau.

Afficher les adresses IP

# ip addr      # Affiche toutes les interfaces et leurs configurations
# ip a         # Version abrégée de ip addr

L'affichage montre pour chaque interface :

  • Son nom et son état (UP/DOWN)
  • Son adresse MAC (link/ether)
  • Son/ses adresse(s) IPv4 (inet)
  • Son/ses adresse(s) IPv6 (inet6)
  • Les paramètres de broadcast (brd)

Pour une interface spécifique :

# ip addr show dev enp0s3    # Affiche uniquement les informations de l'interface enp0s3

Gestion des interfaces

# ip link set down enp0s9    # Désactive l'interface enp0s9
# ip link set up enp0s9      # Active l'interface enp0s9
# ip link show              # Affiche l'état de toutes les interfaces

Gestion des routes

Les routes définissent comment le trafic doit être acheminé vers différents réseaux.

Afficher la table de routage

# ip route     # Affiche toutes les routes configurées
# ip r         # Version courte de ip route

Dans la sortie :

  • default via X.X.X.X : Route par défaut (gateway)
  • dev INTERFACE : Interface utilisée pour cette route
  • proto kernel : Route ajoutée automatiquement par le kernel
  • scope link : Route directement accessible sur le réseau local

Configuration du système

Configuration des hôtes

Hostname

Le hostname est l'identité de la machine sur le réseau.

# hostname     # Affiche le nom court de la machine
# hostname -f  # Affiche le nom complet (FQDN)

Fichiers de configuration

  • /etc/hosts :
    • Fait office de DNS local
    • Format : IP_ADDR HOSTNAME [ALIAS]
    • Lu avant toute requête DNS
    • Exemple :
127.0.0.1    localhost.localdomain localhost
192.168.1.10 serveur.local serveur
  • /etc/hostname :
    • Contient le nom d'hôte de la machine
    • Un seul nom par ligne
  • /etc/resolv.conf :
    • Configuration des serveurs DNS
    • Format :
domain mondomaine.local
search mondomaine.local autredomaine.local
nameserver 8.8.8.8
nameserver 8.8.4.4

Configuration des services

Le fichier services

  • Situé dans /etc/services
  • Définit la correspondance entre les services et les ports
  • Format : service port/protocole [aliases]
  • Exemple :
ssh     22/tcp
http    80/tcp
https   443/tcp

Configuration par distribution

Debian

Configuration via /etc/network/interfaces

Configuration DHCP

Configuration pour obtenir une adresse IP automatiquement :

auto lo    # Active l'interface au démarrage
iface lo inet loopback    # Configure lo comme interface de loopback

auto enp0s3    # Active enp0s3 au démarrage
iface enp0s3 inet dhcp    # Configure enp0s3 en DHCP

Configuration statique

Configuration avec une adresse IP fixe :

auto lo
iface lo inet loopback

auto enp0s3
iface enp0s3 inet static    # Configuration statique
address 192.168.33.101      # Adresse IP fixe
netmask 255.255.255.0       # Masque de sous-réseau
gateway 192.168.33.1        # Passerelle par défaut

RedHat

Configuration dans /etc/sysconfig/network-scripts/ifcfg-[interface]

Configuration DHCP

TYPE=Ethernet              # Type d'interface
BOOTPROTO=dhcp            # Protocole de démarrage : dhcp
DEFROUTE=yes              # Utiliser comme route par défaut
NAME=enp0s3               # Nom descriptif
DEVICE=enp0s3             # Nom du périphérique
ONBOOT=yes                # Activer au démarrage

Configuration statique

TYPE=Ethernet
BOOTPROTO=static          # Configuration statique
DEFROUTE=yes
NAME=enp0s3
DEVICE=enp0s3
ONBOOT=yes
IPADDR=192.168.1.2        # Adresse IP fixe
NETMASK=255.255.255.0     # Masque de sous-réseau

Configuration de la passerelle dans /etc/sysconfig/network :

GATEWAY=192.168.1.254     # Passerelle par défaut
HOSTNAME=monpc.rezo.local # Nom d'hôte complet

Ubuntu (Netplan)

Ubuntu utilise Netplan comme système de configuration réseau par défaut depuis la version 17.10.

Présentation de Netplan

  • Utilise des fichiers YAML pour la configuration
  • Les fichiers sont stockés dans /etc/netplan/
  • Génère la configuration pour différents backends :
    • networkd : Système par défaut
    • NetworkManager : Pour les environnements de bureau

Configuration DHCP

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: true         # Active DHCP pour IPv4
      dhcp6: true         # Active DHCP pour IPv6

Configuration statique

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      addresses:
        - 192.168.1.100/24    # IP et masque en notation CIDR
      gateway4: 192.168.1.1    # Passerelle IPv4
      nameservers:
        search: [mondomaine.local]    # Domaine de recherche
        addresses: [8.8.8.8, 8.8.4.4]    # Serveurs DNS

Configurations avancées

Agrégation de liens (bonding)
network:
  version: 2
  renderer: networkd
  bonds:
    bond0:
      interfaces: [enp0s3, enp0s8]
      parameters:
        mode: active-backup
      addresses:
        - 192.168.1.100/24
VLAN
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: no
  vlans:
    vlan10:
      id: 10
      link: enp0s3
      addresses:
        - 192.168.10.100/24

Network Manager

NetworkManager est un service de gestion dynamique du réseau.

Commandes de base

# nmcli                          # Affiche la configuration complète
# nmcli device show enp3s0       # Montre la configuration détaillée d'une interface
# nmcli dev status              # Affiche l'état de toutes les interfaces
# nmcli con up enp3s0           # Active la connexion sur l'interface enp3s0

Configuration

DHCP

# nmcli con add type ethernet \    # Ajoute une connexion Ethernet
    con-name "Reseau virtuel" \    # Nom de la connexion
    ifname enp3s0                  # Interface concernée

Statique

# nmcli con add type ethernet \    # Ajoute une connexion Ethernet
    con-name "Reseau virtuel" \    # Nom de la connexion
    ifname enp3s0 \               # Interface concernée
    ip4 10.0.5.25/24 \           # IP et masque en notation CIDR
    gw4 10.0.5.1                 # Passerelle

Outils de test et diagnostic

Tests de connectivité

Ping

Test de base de la connectivité :

# ping -c 5 google.com    # Envoie 5 paquets ICMP
# ping -c 3 -w 1 192.168.1.1    # Timeout de 1 seconde

Traceroute

Analyse du chemin réseau :

# traceroute www.example.com    # Affiche tous les sauts
# tracepath www.example.com     # Alternative sans droits root

Analyse des connexions

SS

Affichage des connexions réseau :

# ss -tpnl    # TCP, processus, numérique, listening
# ss -s       # Statistiques résumées

Nmap

Scanner de ports réseau :

# nmap -p 22,80,443 192.168.10.18 -Pn    # Scan de ports spécifiques
# nmap -sn 192.168.1.0/24                # Découverte d'hôtes

États possibles des ports :

  • open : Port ouvert et accessible
  • filtered : Port filtré par un pare-feu
  • closed : Port fermé mais accessible

Dépannage

Vérifications de base

1. État de l'interface :

# ip link show dev enp0s3

2. Configuration IP :

# ip addr show dev enp0s3

3. Routes :

# ip route show

4. Résolution DNS :

# host www.example.com
# dig www.example.com

Journaux système

Consultation des logs :

# journalctl -u systemd-networkd
# journalctl -u NetworkManager

Bonnes pratiques

  • Sauvegarder les configurations avant modification
  • Documenter les changements
  • Tester les modifications avant application en production
  • Maintenir une configuration de secours
  • Vérifier régulièrement les journaux système