Closed skuizy closed 1 year ago
Il me semble qu'il s'agit de la configuration que j'utilise (je ne peux pas confirmer en ce moment cela dit). Avez-vous testé si la connexion VPN est bien établie ? De plus, avez-vous bien utilisé une configuration Wireguard avec la fonctionnalité Port-Forwarding (et un serveur P2P) ?
Oui la connexion est bien établie, je vois mon IP changer en exécutant la commande curl https://am.i.mullvad.net/ip
J'ai choisi la connexion Wireguard FR#172 qui est indiquée P2P en activant le NAT-PMP depuis la page de génération de configuration.
Après vérification, je ne peux malheureusement pas aider sur ce point car je n'utilise pas la même configuration que vous. Pour ma part, la création du tunnel wireguard a lieu en dehors de docker (en utilisant directement les Linux Namespace et le client wireguard) puis il est déplacé sur le Network Namespace du conteneur au démarrage.
Il s'agit donc sans doute d'un problème de structure de réseau de votre coté.
ip -n vpn addr
echo Container PID: $(docker inspect -f '{{.State.Pid}}' "vpn-container")
ip -n vpn link set wg0 netns $(docker inspect -f '{{.State.Pid}}' "vpn-container")
echo "Wireguard interface moved!"
docker exec --privileged vpn-container ip addr add 10.2.0.2/32 dev wg0
echo "Wireguard addr added!"
docker exec --privileged vpn-container ip link set wg0 up
echo "Wireguard link set up!"
docker exec --privileged vpn-container ip route replace default via 10.2.0.2
echo "Wireguard default route setup!"
OK, je vais monter une machine avec une configuration similaire (wireguard en baremetal et qbittorrent en docker). Je verrais ce que ça donne.
Sinon, est-il possible de faire la même chose que le script rust depuis un shell ? Peut-être que le retour des commandes nous fournira des informations.
Il existe des clients (en cli) qui pourrait potentiellement permettre ça. Néanmoins ils sont pour la plupart non maintenu et il peut être dur d'en trouver un fiable. Je suis à peu près sur que le problème vient du fait que docker crée un réseau virtuel entre les deux containers en utilisant un bridge qui empêche d'utiliser l'interface NATPMP.
J'ai en effet réussi après avoir pas mal galéré à monter le tuyau WG... Je pose les commandes utilisées ici, au cas où :
docker-compose up -d
ip netns add vpn
ip -n vpn link set lo up
ip link add tun0 type wireguard
ip link set tun0 netns vpn
ip netns exec vpn wg setconf tun0 /etc/wireguard/wg1.conf
ip -n vpn link set tun0 netns $(docker inspect -f '{{.State.Pid}}' "qbittorrent")
docker exec --privileged qbittorrent ip addr add 10.2.0.2/32 dev tun0
docker exec --privileged qbittorrent ip link set tun0 up
docker exec --privileged qbittorrent ip route replace default dev tun0
J'ai ensuite dû désactiver l'autehntification pour le client localhost et je tombe sur une nouvelle erreur : #3
J'ai donc ouvert le port manuellement et pu vérifié qu'il était atteignable via la commande curl https://am.i.mullvad.net/port/xxxxx
Je suis à peu près sur que le problème vient du fait que docker crée un réseau virtuel entre les deux containers en utilisant un bridge qui empêche d'utiliser l'interface NATPMP.
En fait je ne configure pas de bridge entre mes deux containers, ils utilisent le même réseau. Voici un extrait du docker-compose utilisé :
version: "3.8"
services:
wireguard:
image: linuxserver/wireguard
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
env_file: .env
volumes:
- ./wireguard/config:/config
- /usr/src:/usr/src
ports:
- "51820:51820/udp" #wireguard
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
restart: always
networks:
backend:
aliases:
- qbittorrent
qbittorrent:
image: linuxserver/qbittorrent
container_name: qbittorrent
env_file: .env
environment:
- PUID=33
- PGID=33
- UMASK_SET=002
- DOCKER_MODS=ghcr.io/fusetim/external_natpmp_qbittorrent:8b9e4e0a4e832433b5a974a5bbde355cb916d16a
- NATPMP_GATEWAY_IP=10.2.0.1
volumes:
- ./qbittorrent/config:/config
network_mode: "service:wireguard"
depends_on:
- wireguard
restart: always
J'ai demandé de l'aide sur le forum de linuxserver : https://discourse.linuxserver.io/t/wireguard-nat-pmp-support/7915
Désolé, je n'y connais rien à rust... Je ne peux que fournir la stack et expérimenter au besoin.
J'exécute le MOD depuis le container linuxserver/qbittorrent qui est connecté au VPN proton via le container linuxserver/wireguard (je ne sais pas si cette configuration est supportée ?).