WireGuard en tant que client et serveur

Je sais que WireGuard peut être à la fois un serveur et un client. Mais peut-il être un serveur qui fait passer le trafic via son client ?

Ma machine est configurée comme un client se connectant à mon fournisseur VPN en utilisant Wireguard.

Je veux également configurer cette même machine comme un serveur WireGuard.

Mon objectif principal est que le trafic de tous les clients connectés à mon serveur WG passe par le tunnel jusqu’à mon fournisseur VPN.

Client → Serveur WG → Client WG → Fournisseur VPN

Est-ce possible ?

Oui, tout à fait possible.

Nous traitons donc avec trois appareils

  • Votre client
  • Votre serveur
  • Le fournisseur VPN en amont

Sur votre serveur, vous pouvez créer deux interfaces WireGuard différentes. La première est utilisée par votre client pour se connecter au serveur. La seconde est utilisée par le serveur pour se connecter au fournisseur VPN.

L’étape suivante serait de router le trafic de la première interface vers la seconde interface. Assurez-vous d’activer le routage sur le serveur. Étant donné que votre fournisseur VPN n’est probablement pas au courant des adresses IP du client, vous voudrez peut-être également utiliser NAT pour copier le trafic de la première interface vers la seconde. Vous pouvez faire cela avec nftables si vous êtes sur Linux.

Bonjour, c’est ce que je veux faire, avez-vous des idées sur comment cela peut être réalisé sur une VM OpenWRT (22.03) ?

Ma VM serveur n’a qu’un seul réseau, donc même si je configure 2 LAN sur la VM, ils seront toujours sur le même réseau.

Actuellement, je rencontre un problème : lorsque je me connecte à mon fournisseur VPN en amont, mon téléphone ne parvient pas à se connecter à mon propre serveur WireGuard OpenWRT (échec du handshake).

Y a-t-il des inconvénients à cette configuration ?

Trafic de la première interface vers la seconde interface

En changeant cela dans la configuration du serveur :

PostUp = iptables -A FORWARD -i wgnet0 -j ACCEPT; iptables -A FORWARD -o wgnet0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
PostDown = iptables -D FORWARD -i wgnet0 -j ACCEPT; iptables -D FORWARD -o wgnet0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s3 -j MASQUERADE

to ceci :

PostUp = iptables -A FORWARD -i wgnet0 -j ACCEPT; iptables -A FORWARD -o wgnet0 -j ACCEPT; iptables -t nat -A POSTROUTING -o wg-client -j MASQUERADE
PostDown = iptables -D FORWARD -i wgnet0 -j ACCEPT; iptables -D FORWARD -o wgnet0 -j ACCEPT; iptables -t nat -D POSTROUTING -o wg-client -j MASQUERADE

est-ce que cela fonctionne ? J’ai simplement changé enp0s3 en wg-client qui est le nom de la conf qui se connecte au fournisseur VPN en amont.

Le NAT est toujours un peu problématique.

  • Difficile d’exposer les ports
  • Ca casse ou cause des problèmes avec certains protocoles
  • Impact de performance très faible

Mais je suis presque sûr que votre fournisseur VPN en amont utilisait déjà le NAT, donc cela n’a probablement pas beaucoup d’importance.

Également, puisque vous copiez le trafic d’une interface WireGuard à une autre, il doit être déchiffré puis réchiffré. Cela impactera probablement la performance. Étant donné que WireGuard a une excellente performance, surtout dans la version du noyau Linux, cela ne devrait pas faire beaucoup de différence.

As-tu réussi à faire cela ?

Tu as changé les tables comme tu l’as décrit (-o wlan0 à wg-client), mais sans succès.

a0

Je peux me connecter au serveur mais je n’ai pas accès à Internet.

Le déchiffrement et le réchiffrement, est-ce quelque chose que WireGuard peut faire facilement ? Y aurait-il un guide quelque part ?

Oui, je l’ai en fait déjà fait. Dans un autre fil de discussion : https://www.reddit.com/r/WireGuard/comments/ekeprt/wireguard_to_wireguard_setup_im_sure_many_have/