Commandes essentielles pour l'administration réseau sous Linux

Vue d'ensemble des outils réseau

La gestion réseau sous Linux repose sur un ensemble d'utilitaires en ligne de commande permettant de configurer, surveiller et dépanner les connexions. Parmi les plus courants : curl et wget pour les transferts, telnet pour les tests de connectivité, ip pour la configuration des interfaces, hostname pour l'identification système, ifconfig et route pour les paramètres hérités, ssh et ssh-keygen pour l'accès sécurisé, firewalld et iptables pour le filtrage, host et nslookup pour la résolution DNS, nc pour les opérations réseau polyvalentes, ping et traceroute pour le diagnostic, ainsi que netstat pour l'analyse des ports.

Transfert de données avec curl

L'outil curl permet d'interagir avec des ressources distantes via de multiples protocoles.

Requêtes HTTP fondamentales

Récupération simple et stockage :

# Affichage dans le terminal
curl https://demo.exemple.org

# Enregistrement avec nom personnalisé
curl -o resultat.html https://demo.exemple.org

# Conservation du nom original du fichier distant
curl -O https://demo.exemple.org/page.html

Envoi de données POST

Transmission de formulaires et payloads JSON :

# Données de formulaire classique
curl -X POST -d "utilisateur=admin&secret=motdepasse" https://demo.exemple.org/connexion

# Payload JSON structuré
curl -X POST -H "Content-Type: application/json" -d '{"identite":"Marie","age":28}' https://demo.exemple.org/api

Gestion avancée des requêtes

# Ajout d'en-têtes personnalisés
curl -H "Authorization: Bearer xyz789" https://demo.exemple.org/api

# Gestion des cookies
curl -b "session=def456" https://demo.exemple.org
curl -c stockage_cookies.txt https://demo.exemple.org
curl -b stockage_cookies.txt https://demo.exemple.org

# Suivi des redirections avec limite
curl -L --max-redirs 3 https://demo.exemple.org

Mode diagnostic et transferts spécifiques

# Informations de débogage complètes
curl -v https://demo.exemple.org

# Affichage uniquement des en-têtes de réponse
curl -I https://demo.exemple.org

# Utilisation de proxies
curl -x http://proxy.entreprise.fr:8080 https://demo.exemple.org
curl --socks5 127.0.0.1:1080 https://demo.exemple.org

Téléchargement et reprise de fichiers

# Téléchargement avec progression
curl -o archive.iso https://demo.exemple.org/fichier.iso --progress

# Limitation de bande passante
curl --limit-rate 200K https://demo.exemple.org/gros-fichier.zip

# Reprise d'un téléchargement interrompu
curl -C - -o archive.zip https://demo.exemple.org/archive.zip

# Ignorer la vérification SSL
curl -k https://demo.exemple.org

Transfert de fichiers vers un serveur

# Envoi simple
curl -F "document=@/chemin/fichier.txt" https://demo.exemple.org/deposer

# Envoi avec renommage
curl -F "document=@/chemin/fichier.txt;filename=final.txt" https://demo.exemple.org/deposer

Téléchargements avec wget

wget excelle dans les opérations de récupération de contenu web, particulièrement adapté aux transferts massifs et récursifs.

Utilisations courantes

# Téléchargement basique
wget https://demo.exemple.org/donnees.zip

# Nom de sortie personnalisé
wget -O archive.zip https://demo.exemple.org/donnees.zip

# Reprise de téléchargement
wget -c https://demo.exemple.org/gros-fichier.zip

# Téléchargement en arrière-plan
wget -b https://demo.exemple.org/fichier-long.zip

Téléchargements avancés

# Liste d'URLs multiples
wget -i liens.txt

# Exploration récursive avec profondeur limitée
wget -r -l 2 https://demo.exemple.org

# Filtrage par type de fichier
wget -r -A "*.png" https://demo.exemple.org/galerie

# Limitation de débit
wget --limit-rate=150k https://demo.exemple.org/fichier.zip

# Gestion des cookies et de l'identité
wget --load-cookies cookies.txt https://demo.exemple.org
wget --user-agent="Mozilla/5.0" https://demo.exemple.org

Accès FTP

wget ftp://serveur.exemple.org/fichier.zip
wget --ftp-user=utilisateur --ftp-password=secret ftp://serveur.exemple.org/fichier.zip

Options de sécurité et silence

# Ignorer les erreurs de certificat
wget --no-check-certificate https://demo.exemple.org

# Nombre de tentatives limité
wget --tries=3 https://demo.exemple.org

# Mode silencieux
wget -q https://demo.exemple.org

Tests de connectivité avec telnet

Bien que dépassé pour l'administration sécurisée, telnet reste utile pour le diagnostic de services réseau.

Syntaxe et options

telnet [options] [hôte|IP] [port]

Options notables : -l pour l'utilisateur, -a pour la connexion automatique, -e pour le caractère d'échappement, -4 et -6 pour forcer un protocole IP.

Vérification de port et interactions

# Test d'accessibilité d'un port
telnet demo.exemple.org 443

# Test manuel d'un service HTTP
telnet demo.exemple.org 80
GET / HTTP/1.1
Host: demo.exemple.org

# Test d'un service SMTP
telnet demo.exemple.org 25
HELO demo.exemple.org

Navigation en session interactive

Pour quitter une session : Ctrl+], puis saisir quit.

Gestion moderne des interfaces avec ip

La commande ip du paquet iproute2 remplace avantageusement les outils historiques ifconfig et route.

Inspection et contrôle des interfaces

# Liste complète des interfaces
ip link show
ip l

# Détails d'une interface spécifique
ip link show eth0

# Activation et désactivation
ip link set eth0 up
ip link set eth0 down

Gestion des adresses IP

# Visualisation des adresses
ip addr show
ip a

# Détails par interface
ip addr show wlan0

# Attribution et retrait d'adresses
ip addr add 10.0.5.50/24 dev eth0
ip addr del 10.0.5.50/24 dev eth0

Manipulation du routage

# Table de routage actuelle
ip route show
ip r

# Route par destination
ip route show to 10.0.5.0/24

# Ajout de routes statiques
ip route add 192.168.10.0/24 via 10.0.5.1 dev eth0
ip route add default via 10.0.5.1 dev eth0

# Suppression de route
ip route del 192.168.10.0/24

Table ARP et statistiques

# Consultation du voisinage ARP
ip neigh show
ip n

# Suppression d'une entrée
ip neigh del 10.0.5.1 dev eth0

# Statistiques détaillées
ip -s link show eth0

Modification des propriétés matérielles

# Changement de MTU
ip link set eth0 mtu 9000

# Modification de l'adresse MAC
ip link set eth0 address aa:bb:cc:dd:ee:ff

Configuration du nom d'hôte

La commande hostname et son équivalent hostnamectl permettent de gérer l'identité du système.

# Affichage du nom courant
hostname

# Modification temporaire
hostname serveur-temp

# Modification permanente (systèmes modernes)
sudo hostnamectl set-hostname serveur-prod

# Nom complet qualifié
hostname --fqdn

# Informations complémentaires
hostname -i  # Adresses IP
hostname -d  # Domaine
hostname -a  # Alias

Configuration héritée avec ifconfig

Malgré son obsolescence recommandée, ifconfig demeure présent sur nombre de systèmes.

# État des interfaces
ifconfig
ifconfig eth0

# Activation/désactivation
sudo ifconfig eth0 up
sudo ifconfig eth0 down

# Configuration d'adresse
sudo ifconfig eth0 10.0.5.100 netmask 255.255.255.0

# Alias d'interface
sudo ifconfig eth0:0 10.0.5.101 netmask 255.255.255.0

# Modification de l'adresse MAC
sudo ifconfig eth0 hw ether aa:bb:cc:dd:ee:ff

# Ajustement du MTU
sudo ifconfig eth0 mtu 1500

Gestion du routage avec route

L'outil route permet d'inspecter et modifier la table de routage du noyau.

Inspection

route -n  # Affichage numérique sans résolution DNS
route -v  # Mode verbeux
route -ee # Format étendu

Modifications de routes

# Passerelle par défaut
sudo route add default gw 10.0.5.1 eth0
sudo route del default gw 10.0.5.1 eth0

# Route vers un réseau spécifique
sudo route add -net 172.16.0.0 netmask 255.255.0.0 gw 10.0.5.1 dev eth0
sudo route del -net 172.16.0.0 netmask 255.255.0.0

# Route hôte
sudo route add -host 192.168.1.50 gw 10.0.5.1 dev eth0
sudo route del -host 192.168.1.50

# Modification de passerelle
sudo route change default gw 10.0.5.254 eth0

Connexions sécurisées avec SSH

Le protocole SSH garantit des sessions d'administration à distance chiffrées.

Connexions de base et options

# Connexion standard
ssh utilisateur@10.0.5.100

# Port alternatif
ssh -p 2222 utilisateur@10.0.5.100

# Authentification par clé spécifique
ssh -i ~/.ssh/cle_privee utilisateur@10.0.5.100

# Transfert X11
ssh -X utilisateur@10.0.5.100

Redirections de ports

# Tunnel local : port local vers service distant
ssh -L 9090:localhost:80 utilisateur@10.0.5.100

# Tunnel distant : port distant vers service local
ssh -R 9090:localhost:80 utilisateur@10.0.5.100

# Proxy SOCKS dynamique
ssh -D 1080 utilisateur@10.0.5.100

Configuration centralisée

Le fichier ~/.ssh/config permet de définir des alias et paramètres par hôte :

Host bastion
    HostName 10.0.5.100
    User admin
    Port 2222
    IdentityFile ~/.ssh/bastion_key

Génération de clés avec ssh-keygen

La création de paires de clés asymétriques renforce la sécurité de l'authentification.

# Génération par défaut (RSA 3072 bits)
ssh-keygen

# Algorithme Ed25519 (recommandé)
ssh-keygen -t ed25519

# RSA avec longueur maximale
ssh-keygen -t rsa -b 4096

# Paramètres personnalisés
ssh-keygen -t ed25519 -f ~/.ssh/deploiement -C "cle-deploiement-2024"
ssh-keygen -t rsa -b 4096 -N "phrase_securisee"

# Changement de phrase de passe
ssh-keygen -p -f ~/.ssh/id_ed25519

# Extraction de clé publique depuis privée
ssh-keygen -y -f ~/.ssh/id_ed25519 > ~/.ssh/id_ed25519.pub

Déploiement des clés publiques

ssh-copy-id -i ~/.ssh/deploiement.pub utilisateur@10.0.5.100

Pare-feu dynamique avec firewalld

firewalld offre une gestion firewall basée sur des zones et des services prédéfinis.

Contrôle du service

sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo systemctl status firewalld
sudo firewall-cmd --state

Gestion des zones et services

# Zones disponibles et active
sudo firewall-cmd --get-zones
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --set-default-zone=work

# Services prédéfinis
sudo firewall-cmd --get-services

# Ouverture de services
sudo firewall-cmd --zone=public --add-service=https
sudo firewall-cmd --zone=public --add-service=https --permanent

# Retrait de services
sudo firewall-cmd --zone=public --remove-service=http
sudo firewall-cmd --zone=public --remove-service=http --permanent

Gestion des ports et sources

# Ouverture de ports
sudo firewall-cmd --zone=public --add-port=8443/tcp
sudo firewall-cmd --zone=public --add-port=8443/tcp --permanent

# Filtrage par adresse source
sudo firewall-cmd --zone=public --add-source=10.0.5.0/24
sudo firewall-cmd --zone=public --add-source=10.0.5.0/24 --permanent

# Application des changements permanents
sudo firewall-cmd --reload

Règles enrichies et redirection

# Redirection de port
sudo firewall-cmd --zone=public --add-forward-port=port=8080:proto=tcp:toport=80 --permanent

# Règle riche pour accès SSH restreint
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.5.10" port protocol="tcp" port="22" accept' --permanent

Pare-feu classique avec iptables

iptables manipule directement les règles du frmaework netfilter.

Architecture des tables et chaînes

Tables principales : filter (filtrage par défaut), nat (translation d'adresses), mangle (modification de paquets), raw (exemption du suivi de connexion).

Chaînes standards : INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING.

Opérations fondamentales

# Inspection des règles
sudo iptables -L -n -v
sudo iptables -t nat -L -n -v

# Vidage des chaînes
sudo iptables -F
sudo iptables -t nat -F

# Politiques par défaut
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD DROP

Règles de filtrage

# Autorisation d'un sous-réseau
sudo iptables -A INPUT -s 10.0.5.0/24 -j ACCEPT

# Blocage d'une adresse spécifique
sudo iptables -A INPUT -s 192.168.1.100 -j DROP

# Ouverture de port pour SSH
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Autorisation des connexions établies
sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Multiports
sudo iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

Configuration NAT

# Activation du forwarding IP
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

# Masquerade (SNAT dynamique)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Redirection de port (DNAT)
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.5.50:8080

Journalisation et persistance

# Journalisation des rejets
sudo iptables -A INPUT -j LOG --log-prefix "paquet-rejete: "

# Sauvegarde et restauration
sudo iptables-save > /etc/iptables/regles.v4
sudo iptables-restore < /etc/iptables/regles.v4

Requêtes DNS avec host et nslookup

Utilisation de host

# Résolution directe
host demo.exemple.org

# Types d'enregistrement spécifiques
host -t MX demo.exemple.org
host -t NS demo.exemple.org
host -t TXT demo.exemple.org
host -t AAAA demo.exemple.org

# Recherche inverse
host 93.184.216.34

# Serveur DNS alternatif
host demo.exemple.org 8.8.8.8

# Tous les enregistrements
host -a demo.exemple.org

Utilisation de nslookup

# Mode interactif
nslookup
> set type=MX
> demo.exemple.org
> exit

# Requête directe avec type
nslookup -type=SOA demo.exemple.org

# Serveur DNS spécifié
nslookup demo.exemple.org 1.1.1.1

Utilitaire réseau polyvalent nc (netcat)

Souvent qualifié de « couteau suisse » réseau, nc permet d'établir des connexions, d'écouter des ports et de transférer des données.

Modes d'emploi

# Connexion à un service
nc demo.exemple.org 443

# Écoute sur un port
nc -l -p 4567

# Scan de ports
nc -zv demo.exemple.org 20-80

# Communication UDP
nc -u demo.exemple.org 53

# Timeout configuré
nc -w 5 demo.exemple.org 22

Transfert de fichiers et services éphémères

# Réception de fichier
nc -l -p 4567 > document_recu.txt

# Envoi de fichier
nc destinataire.exemple.org 4567 < document.txt

# Serveur HTTP minimaliste
echo -e "HTTP/1.1 200 OK\n\nService actif" | nc -l -p 8080

# Shell distant (à utiliser avec précaution)
nc -l -p 4567 -e /bin/bash

Diagnostic de connectivité avec ping

L'outil ping évalue la disponibilité et la latence via le protocole ICMP.

# Test standard
ping demo.exemple.org

# Nombre d'echo limité
ping -c 4 demo.exemple.org

# Intervalle personnalisé et taille de paquet
ping -i 0.5 -s 1024 demo.exemple.org

# Timeout de réponse
ping -W 2 demo.exemple.org

# Mode silencieux
ping -c 5 -q demo.exemple.org

# Forçage du protocole IP
ping -4 demo.exemple.org
ping -6 demo.exemple.org

# Test de MTU
ping -s 1472 -M do demo.exemple.org

Traçage de chemins avec traceroute

traceroute révèle le parcours des paquets à travers les routeurs intermédiaires.

# Traçage standard
traceroute demo.exemple.org

# Utilisation ICMP au lieu d'UDP
traceroute -I demo.exemple.org

# TCP SYN pour contourner les filtres
traceroute -T demo.exemple.org

# Affichage numérique sans résolution DNS
traceroute -n demo.exemple.org

# Limitation du nombre de sauts
traceroute -m 15 demo.exemple.org

# Plusieurs sondes par saut
traceroute -q 5 demo.exemple.org

# Forçage IPv6
traceroute -6 demo.exemple.org

Analyse des connexions avec netstat

netstat fournit une vision globale de l'activité réseau du système.

Visualisations courantes

# Toutes les connexions et ports d'écoute
netstat -a

# Filtrage par protocole
netstat -t  # TCP uniquement
netstat -u  # UDP uniquement

# Affichage numérique
netstat -an

# Association avec les processus
netstat -tunp

# Table de routage
netstat -r

# Statistiques par protocole
netstat -s

# Ports en écoute
netstat -l

# Interfaces et statistiques
netstat -i
netstat -ie

Combinaisons utiles

# Ports TCP en écoute avec processus
netstat -ltnp

# Ports UDP en écoute
netstat -lun

# Multicast
netstat -g

# Rafraîchissement continu
netstat -c

Transfert sécurisé de fichiers avec scp

scp exploite le tunnel SSH pour copier des données entre hôtes.

Transferts de base

# Vers le serveur distant
scp fichier_local.txt utilisateur@10.0.5.100:/chemin/destination/

# Depuis le serveur distant
scp utilisateur@10.0.5.100:/chemin/fichier.txt ./destination/

# Copie récursive de répertoire
scp -r /dossier/local/ utilisateur@10.0.5.100:/dossier/distant/

Options avancées

# Port SSH non standard
scp -P 2222 fichier.txt utilisateur@10.0.5.100:/chemin/

# Préservation des attributs
scp -p fichier.txt utilisateur@10.0.5.100:/chemin/

# Compression activée
scp -C archive.zip utilisateur@10.0.5.100:/chemin/

# Mode silencieux
scp -q fichier.txt utilisateur@10.0.5.100:/chemin/

# Transfert entre deux hôtes distants
scp utilisateur1@hote1:/fichier.txt utilisateur2@hote2:/chemin/

Synchronisation efficace avec rsync

rsync optimise les transferts par détection des différences et transmission incrémentale.

Installation

# Debian/Ubuntu
sudo apt update && sudo apt install rsync

# RHEL/CentOS
sudo yum install rsync

# Fedora
sudo dnf install rsync

# Arch
sudo pacman -S rsync

Opérations de synchronisation

# Synchronisation locale
rsync -av /source/ /destination/

# Synchronisation distante avec compression
rsync -avz /dossier/local/ utilisateur@10.0.5.100:/dossier/distant/

# Récupération depuis le serveur
rsync -avz utilisateur@10.0.5.100:/dossier/distant/ /dossier/local/

Options puissantes

# Port SSH alternatif
rsync -avz -e 'ssh -p 2222' /dossier/ utilisateur@10.0.5.100:/dossier/

# Progression et reprise
rsync -avzP /grand-fichier utilisateur@10.0.5.100:/dossier/

# Suppression des fichiers absents de la source
rsync -avz --delete /source/ /destination/

# Exclusions
rsync -avz --exclude '*.tmp' --exclude 'logs/' /source/ /destination/

# Simulation sans exécution
rsync -avz --dry-run /source/ /destination/

# Déréférencement des liens symboliques
rsync -avzL /source/ /destination/

Subtilités du chemin source

La barre oblique finale est déterminante : /source/ synchronise le contenu du répertoire, tandis que /source (sans barre) copie le répertoire lui-même.

Étiquettes: Linux SSH curl wget iptables

Publié le 2 octobre à 09h47