Bonjour,
Je solicite votre aide à propos d'un problème que je rencontre lorsque je tente de "proxifier" l'accès à mon serveur WireGuard (hébergé à mon domicile) via un VPS hébergé à Nice.
TLDR : le débit entre mon domicile (Orange ; en France) et mon VPS (en France) est d'environ 300 à 400 Mbits/s symétrique ; lorsque proxifie mon serveur WireGuard via le VPS (redirection 51820/udp vers Livebox 51820/udp) le débit est divisé par 10 et je ne trouve pas d'explication à ce phénomène.
En détails : J'héberge à mon domicile quelques services (ex : Nextcloud) et je souhaite y accéder depuis l'extérieur. Je pourrai me contenter d'une redirection de port depuis ma Livebox Orange car j'ai un IPv4 full stack, mais pour diverses raisons je souhaiterai plutôt que le point d'entrée se situe sur un VPS. Du coup, je souhaite utiliser un VPS disposant d'une IPv4 comme point d'entrée pour me connecter à mon serveur WireGuard.
La configuration est la suivante : sur le VPS, j'utilise l'utilitaire "socat" pour rediriger le port 51820 (du VPS) vers l'IP publique de ma Livebox (port 51820), qui elle-même est configurée pour rediriger le trafic vers mon serveur WireGuard (VM WG sur le schéma ci-dessous). Problème : dans cette configuration, le débit est d'environ 30Mbits/s, alors que j'ai une connexion fibre 2Gb/600M, et que le serveur dispose d'une connexion 500 Mbits/s symétrique.
Voici ci-dessous une schéma de mon installation réseau :
- Ma Livebox Orange est le point d'entrée depuis Internet (IP publique 86.X.X.X)
- Le réseau local (LAN) de ma Livebox est le 192.168.10.0/24, sur lequel est connecté mon MacBook (192.168.10.140)
- Sur le LAN, il y a un routeur Mikrotik (CCR2004) derrière lequel se trouve un serveur Proxmox, et plusieurs VMs hébergées dessus (sur le réseau 10.41.0.0/24)
- Le VPS sur l'Internet (IP publique 89.X.X.X)
Afin de tenter d'élucider ce problème, j'ai réalisé quelques tests :
1/ Le premier test consiste à évaluer le débit entre mon LAN et le VPS :
- MacBook --> VPS : débit mesuré d'environ 500 Mbits/s
- Détails du test :
- VPS : iperf -s
- MacBook : iperf3 -c 89.X.X.X
- VPS --> MacBook : débit mesuré d'environ 200 à 400 Mbits/s
- Détails du test :
- VPS : iperf -s
- MacBook : iperf3 -c 89.X.X.X -R
Schéma du test 1 :
2/ Le second test consiste à évaluer le débit entre la "VM iPerf" et le MacBook
en profixiant la VM iPerf via le VPS :
- MacBook --> VPS --> VM iPerf : débit mesuré d'environ 400 à 500 Mbits/s
- Détails du test :
- VPS : socat TCP4-LISTEN:5201,fork TCP:86.X.X.X:5201 (VPS forwards TCP-5201 to Livebox ; Livebox forwards TCP-5201 to Mikrotik ; Mikrotik forwards TCP-5201 to iPerf VM)
- MacBook : iperf3 -c 89.X.X.X
- VM iPerf : iperf3 -s
- VM iPerf —> VPS —> MacBook : débit mesuré de 300 à 480 Mbits/s
- Détails du test :
- VPS : socat TCP4-LISTEN:5201,fork TCP:86.X.X.X:5201 (VPS forwards TCP-5201 to Livebox ; Livebox forwards TCP-5201 to Mikrotik ; Mikrotik forwards TCP-5201 to iPerf VM)
- MacBook : iperf3 -c 89.X.X.X -R
- VM iPerf : iperf3 -s
Schéma du test 2 :
3/ Le troisième test consiste à évaluer le débit entre "VM iPerf" et le MacBook lorsque celui-ci est connecté via WireGuard à WG VM (
PAS de profixication via VPS) :
- MacBook via WireGuard Tunnel —> VM iPerf : débit mesuré de 300 à 400 Mbits/s
- Détails du test :
- VM iPerf : iperf3 -s (Livebox forwards UDP-51820 to Mikrotik ; Mikrotik forwards UDP-51820 to WG VM)
- MacBook : iperf3 -c 10.41.0.3 (WG Endpoint : 86.X.X.X:51820)
- VM iPerf —> MacBook via WireGuard Tunnel : débit mesuré de 300 à 400 Mbits/s
- Détails du test :
- VM iPerf : iperf3 -s (Livebox forwards UDP-51820 to Mikrotik ; Mikrotik forwards UDP-51820 to WG VM)
- MacBook : iperf3 -c 10.41.0.3 -R (WG Endpoint : 86.X.X.X:51820)
Schéma du test 3 (en bleu le tunnel WireGuard, en rouge le trafic iPerf) :
4/ Ce dernier test consiste à évaluer le débit du tunnel WireGuard entre la "VM iPerf" et le MacBook
AVEC proxification de "WG VM" via VPS :
- MacBook via WireGuard Tunnel --> VPS —> VM iPerf : 30 à 45 Mbits/s
- Détails du test :
- VPS : socat UDP4-LISTEN:51820,fork UDP:86.X.X.X:51820 (port forwarding 89.X.X.X:51820 to 86.X.X.X:51820)
- MacBook : iperf3 -c 10.41.0.3 (WG Endpoint : 89.X.X.X:51820)
- VM iPerf : iperf3 -s
- VM iPerf —> MacBook via WireGuard Tunnel --> VPS : 30 à 50 Mbits/s
- Détails du test :
- VPS : socat UDP4-LISTEN:51820,fork UDP:86.X.X.X:51820 (port forwarding 89.X.X.X:51820 to 86.X.X.X:51820)
- MacBook : iperf3 -c 10.41.0.3 -R (WG Endpoint : 89.X.X.X:51820)
- VM iPerf : iperf3 -s
Schéma du test 4 (en bleu le tunnel WireGuard, en rouge le trafic iPerf) :
Le problème si situe donc au niveau du test n°4. Si quelqu'un a une ou plusieurs hypothèses sur la manière de régler ce problème que je n'arrive pas à expliquer, je suis à l'écoute de toutes propositions...
J'ai déjà essayé de réduire le MTU du tunnel WireGuard à 1280, et ça n'a rien changé au problème. J'ai aussi essayé d'activer le mode BBR sur le VPS comme indiqué dans
ce post, idem. J'ai aussi vérifié que chacune des machines (VPS, Routeurs, VM) ne saturent pas au niveau CPU.
Si quelqu'un ici a une idée, merci !