Outils pour utilisateurs

Outils du site


commun:services_work_on_lan_but_not_on_vpn

Service qui ne fonctionnent pas depuis VPN : timeout — routes parasites systemd-networkd

Symptôme

Client VPN (10.1.100.20) : montage NFS de cahute (192.168.1.9) en timeout. Port 2049 ouvert (nc OK), mais mount.nfs4 bloque. Ping serveur KO.

Diagnostic

Aller correct (routé dans wg), retour perdu. tcpdump côté serveur : SYN reçus, aucun SYN-ACK.

tcpdump -ni enp3s0 host 10.1.100.20   # SYN entrants, 0 retour
ip route get 10.1.100.20 from 192.168.1.9
  → 10.1.100.20 ... dev veth6bb30cd   # retour envoyé dans un veth Docker !

Cause racine : systemd-networkd gère les interfaces veth de Docker. À chaque conteneur, il tente un DHCP dessus, échoue, tombe en IPv4LL (169.254.x) et ajoute des routes default / 0.0.0.0 dev vethX parasites qui captent le trafic vers 10.1.100.0/24. Le veth « coupable » change à chaque redémarrage de conteneur.

ip route show | grep -E "veth|^0.0.0.0"
  0.0.0.0 dev vethXXXX scope link
  default dev vethXXXX scope link
  169.254.0.0/16 dev vethXXXX proto kernel scope link src 169.254.x.x
systemctl is-active systemd-networkd   # active

Correctif permanent

Exclure les interfaces virtuelles Docker de la gestion networkd :

# /etc/systemd/network/10-docker-veth-unmanaged.network
[Match]
Name=veth* docker* br-*

[Link]
Unmanaged=yes
systemctl restart systemd-networkd
# purge des routes déjà posées (non rétroactif) :
ip route flush dev vethXXXX   # pour chaque veth concerné

Validation

ip route show | grep -E "veth|^0.0.0.0"   # doit être vide

Le fichier .network est permanent → routes parasites plus jamais recréées. À confirmer par un reboot (conteneurs relancés, table toujours propre).

Notes

  • Le ping ICMP peut être filtré alors que NFS (TCP 2049) répond → tester le port, pas le ping.
  • Rustine temporaire écartée : ip route add 10.1.100.0/24 via 192.168.1.90 dev enp3s0.
commun/services_work_on_lan_but_not_on_vpn.txt · Dernière modification : de francois

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki