Réseau Identification, DNS et Routage

Réseau Identification, DNS et Routage

Notes

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 commandes ip, nmcli, networkctl et resolvectl sont les outils modernes à privilégier ; ifconfig et route sont 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-daemon et peut créer une interface WireGuard ou un tunnel.
  • NordVPN utilise souvent nordvpnd et des interfaces tun0/nordlynx selon le protocole.
  • Tailscale crée normalement tailscale0 et expose son état via tailscale 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-networkd lit ses configurations dans /etc/systemd/network/, tandis qu’ifupdown utilise /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, typiquement hosts: files dns : /etc/hosts est 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 ou systemd-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’ancien route -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-mullvad ou une route très spécifique via wg0 : 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*.