Réseau Identification, DNS et Routage
Sur un système linux (debian et arch), comment identifier le réseau
- Matériel Lan, Wlan
- Gestionnaire de réseau NetworkManager, systemd-network, netplan, ifup/down
- Résolution DNS
- Routage
Méthode de diagnostic standard (valable sur Debian et Arch) :
inspecter d’abord le matériel, puis identifier le gestionnaire réseau
vérifier DNS et routage.
Les commandesip,nmcli,networkctletresolvectlsont les outils modernes à privilégier ;ifconfigetroutesont obsolètes
1. Identifier le matériel réseau
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Interfaces et adresses IP
ip -br link
ip -br addr
# Détails matériels : Ethernet, Wi-Fi, bridges, tunnels
lspci | grep -Ei 'network|ethernet|wireless'
lsusb | grep -Ei 'wireless|network|bluetooth'
# Détail par interface
sudo lshw -class network -short
ethtool -i enp3s0 # pilote/firmware Ethernet
iw dev # interfaces Wi-Fi
iw phy # capacités radio
rfkill list # Wi-Fi/Bluetooth bloqués ?
Repères usuels :
| Type | Noms fréquents | Commandes de confirmation |
|---|---|---|
| LAN filaire | enp3s0, eth0 |
ethtool enp3s0, ip link show enp3s0 |
| WLAN | wlp2s0, wlan0 |
iw dev, nmcli device wifi list |
| VPN WireGuard | wg0, wg-mullvad, wg-nordvpn |
wg show, ip link show type wireguard |
| Tailscale | tailscale0 |
tailscale status, tailscale ip -4 |
| OpenVPN | tun0, tun1 |
ip addr show tun0, ip route show table all |
Pour distinguer Mullvad et NordVPN, regardez les interfaces, routes et services :
1
2
3
4
5
ip -br addr
ip route show table all | grep -Ei 'mullvad|nordvpn|wg|tun'
wg show
systemctl list-units --type=service --state=running | grep -Ei 'mullvad|nordvpn|openvpn|wireguard'
ps aux | grep -Ei '[m]ullvad|[n]ordvpn|[o]penvpn|[w]ireguard'
- Mullvad utilise généralement un service
mullvad-daemonet peut créer une interface WireGuard ou un tunnel. - NordVPN utilise souvent
nordvpndet des interfacestun0/nordlynxselon le protocole. - Tailscale crée normalement
tailscale0et expose son état viatailscale status.
2. Identifier le gestionnaire réseau
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Services potentiellement actifs
systemctl is-active NetworkManager systemd-networkd networking systemd-resolved
systemctl status NetworkManager --no-pager
systemctl status systemd-networkd --no-pager
# Qui gère quelles interfaces ?
nmcli device status
networkctl list
networkctl status
# Fichiers de configuration présents
ls -l /etc/network/interfaces /etc/network/interfaces.d/ 2>/dev/null
ls -l /etc/systemd/network/ 2>/dev/null
ls -l /etc/netplan/ 2>/dev/null
| Gestionnaire | Debian | Arch | Diagnostic |
|---|---|---|---|
| NetworkManager | Courant sur desktop | Courant sur desktop | nmcli general status, nmcli device status |
| systemd-networkd | Serveur/minimal possible | Fréquent, surtout serveur | networkctl status, /etc/systemd/network/ |
| ifupdown | Historique/minimal | Rare | /etc/network/interfaces, systemctl status networking |
| Netplan | Rare hors Ubuntu | Rare | /etc/netplan/*.yaml, netplan get |
NetworkManager est le gestionnaire habituel des postes Debian modernes ; il gère les profils dans
/etc/NetworkManager/system-connections/et peut déléguer le DNS àsystemd-resolved.systemd-networkdlit ses configurations dans/etc/systemd/network/, tandis qu’ifupdownutilise/etc/network/interfaces.
Commandes utiles selon l’outil :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# NetworkManager
nmcli general status
nmcli connection show
nmcli device show
nmcli device wifi list
# systemd-networkd
networkctl list
networkctl status enp3s0
networkctl status wlp2s0
# ifupdown
cat /etc/network/interfaces
sudo ifquery --running
# Netplan, s'il est installé
sudo netplan get
sudo netplan status -a
3. Identifier la résolution DNS
1
2
3
4
5
6
7
8
9
10
11
12
13
# Résolveur effectif
resolvectl status
resolvectl statistics
# Fichier utilisé par la libc
readlink -f /etc/resolv.conf
cat /etc/resolv.conf
# Tester la résolution
resolvectl query debian.org
getent hosts debian.org
dig debian.org
dig +short debian.org @1.1.1.1
L’ordre de résolution est défini par
/etc/nsswitch.conf, typiquementhosts: files dns:/etc/hostsest consulté avant le DNS. Le DNS proprement dit est ensuite déterminé par/etc/resolv.conf, mais ce fichier peut être un lien géré par NetworkManager ousystemd-resolved.
Cas fréquents :
1
2
3
4
5
6
7
8
9
10
# systemd-resolved actif
readlink -f /etc/resolv.conf
# -> /run/systemd/resolve/stub-resolv.conf
# NetworkManager gère directement resolv.conf
nmcli general status
nmcli device show wlp2s0 | grep -Ei 'dns|domain'
# VPN qui force son DNS
resolvectl status | grep -A5 -Ei 'mullvad|nordvpn|tailscale|tun|wg'
Pour savoir quel serveur répond réellement :
1
2
dig +tries=1 +time=2 debian.org
dig +short CHAOS TXT id.server @<IP-du-résolveur>
4. Identifier le routage
1
2
3
4
5
6
7
8
9
10
11
# Route par défaut et table principale
ip route show
ip route get 1.1.1.1
ip route get 9.9.9.9
# Toutes les tables, y compris règles de politique de routage
ip rule show
ip route show table all
# Routes spécifiques VPN
ip route show table all | grep -Ei 'mullvad|nordvpn|tailscale|wg|tun'
La commande moderne est
ip route show, équivalente fonctionnellement à l’ancienroute -n.
Pour vérifier le chemin réellement emprunté :
1
2
3
ip route get 8.8.8.8
tracepath -n 8.8.8.8
mtr -n 8.8.8.8
Interprétation rapide :
default via 192.168.1.1 dev enp3s0: sortie Internet par la box/Ethernet.default dev wg-mullvadou une route très spécifique viawg0: tout ou partie du trafic passe par Mullvad/NordVPN.- Plusieurs routes par défaut : vérifiez
ip rule, les métriques et les tables (table 51820,table 42, etc.). 100.64.0.0/10 dev tailscale0: réseau interne Tailscale.
5. Script de diagnostic rapide
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/env bash
set -u
echo '=== Matériel / interfaces ==='
ip -br link
ip -br addr
command -v lshw >/dev/null && sudo lshw -class network -short
command -v iw >/dev/null && iw dev
echo '=== Gestionnaire réseau ==='
for s in NetworkManager systemd-networkd networking systemd-resolved; do
printf '%-20s %s\n' "$s" "$(systemctl is-active "$s" 2>/dev/null)"
done
command -v nmcli >/dev/null && nmcli device status
command -v networkctl >/dev/null && networkctl list
echo '=== VPN / Tailscale ==='
ip -br addr | grep -Ei 'wg|tun|tailscale|mullvad|nord'
command -v wg >/dev/null && wg show
command -v tailscale >/dev/null && tailscale status
systemctl list-units --type=service --state=running | grep -Ei 'mullvad|nordvpn|openvpn|wireguard|tailscale'
echo '=== DNS ==='
readlink -f /etc/resolv.conf
cat /etc/resolv.conf
command -v resolvectl >/dev/null && resolvectl status
echo '=== Routage ==='
ip route show
ip route get 1.1.1.1
ip rule show
Ajouter le script dans le dossier $HOME/.local/bin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
mkdir -p $HOME/.local/bin
tee $HOME/.local/bin/netdiag.sh > /dev/null <<'EOF'
#!/usr/bin/env bash
set -u
echo '=== Matériel / interfaces ==='
ip -br link
ip -br addr
command -v lshw >/dev/null && sudo lshw -class network -short
command -v iw >/dev/null && iw dev
echo '=== Gestionnaire réseau ==='
for s in NetworkManager systemd-networkd networking systemd-resolved; do
printf '%-20s %s\n' "$s" "$(systemctl is-active "$s" 2>/dev/null)"
done
command -v nmcli >/dev/null && nmcli device status
command -v networkctl >/dev/null && networkctl list
echo '=== VPN / Tailscale ==='
ip -br addr | grep -Ei 'wg|tun|tailscale|mullvad|nord'
command -v wg >/dev/null && wg show
command -v tailscale >/dev/null && tailscale status
systemctl list-units --type=service --state=running | grep -Ei 'mullvad|nordvpn|openvpn|wireguard|tailscale'
echo '=== DNS ==='
readlink -f /etc/resolv.conf
cat /etc/resolv.conf
command -v resolvectl >/dev/null && resolvectl status
echo '=== Routage ==='
ip route show
ip route get 1.1.1.1
ip rule show
EOF
export PATH="$HOME/.local/bin:$PATH"
chmod +x $HOME/.local/bin/netdiag.sh && $HOME/.local/bin/netdiag.sh
Enregistrez-le par exemple sous ~/.local/bin/netdiag.sh, puis exécutez chmod +x ~/.local/bin/netdiag.sh && ~/.local/bin/netdiag.sh. Sur un poste Debian ou Arch classique, vous verrez généralement NetworkManager actif, une interface enp* ou wlp*, éventuellement tailscale0, et un VPN matérialisé par wg* ou tun*.