Auteur Sujet: pVPN + Port forwarding TCP & UDP + (lib)natpmp + UFW  (Lu 159 fois)

0 Membres et 1 Invité sur ce sujet

bugmenot

  • Abonné Bbox fibre
  • *
  • Messages: 114
pVPN + Port forwarding TCP & UDP + (lib)natpmp + UFW
« le: Aujourd'hui à 01:07:46 »
Bonjour,

Je suis sous CachyOS, KDE Plasma.

Mon problème : impossible de faire aboutir positivement le moindre test en ligne de port ouvert, que ce soit pour TCP ou UDP, mais surtout de faire fonctionner concrètement à plein potentiel mes daemons et applis dépendants d'un port UDP entrant. Toujours le même message : firewalled / derrière un NAT.

Et je ne comprends pas pourquoi. Je ne suis pas expert réseau, mais j'ai quand même passé des heures (pas exagéré) à essayer de trouver une solution pour rendre réellement accessibles depuis l'extérieur ces foutus ports, qui sont sensés l'être, mais le résultat est toujours le même en sortie. C'est UFW et/ou Network Manager qui sont si merdiques et foutent le boxon ?

Profil WG (avec paramètres recommandés pour le port forwarding) chargé depuis NetworkManager :
[Interface]
# Bouncing = 5
# NetShield = 2
# Moderate NAT = off
# NAT-PMP (Port Forwarding) = on
# VPN Accelerator = on
PrivateKey = ***
Address = 10.2.0.2/32
DNS = 10.2.0.1

[Peer]
# NL#***
PublicKey = ***
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = (ip):(port)

PersistentKeepalive = 25

J'ai essayé avec plusieurs serveurs, c'est pareil.

Ensuite, comme documenté ici : https://protonvpn.com/support/port-forwarding-manual-setup
Un petit script pour obtenir 5 ports tcp/udp via (lib)natpmp (tout est affiché OK/Successfully de ce côté là) :
#!/bin/bash
while true; do
    date
    natpmpc -a 1 61300 tcp 60 -g 10.2.0.1 && \
    natpmpc -a 1 61300 udp 60 -g 10.2.0.1 && \
    natpmpc -a 1 55300 tcp 60 -g 10.2.0.1 && \
    natpmpc -a 1 44300 tcp 60 -g 10.2.0.1 && \
    natpmpc -a 1 44301 udp 60 -g 10.2.0.1 || {
        echo "ERREUR natpmpc"
        break
    }
    sleep 45
done

Mes règles pare-feu :
❯ sudo ufw status verbose
Status: active
Logging: on (full)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To Action From
-- ------ ----
61300 ALLOW IN Anywhere
55300/tcp ALLOW IN Anywhere
44300/tcp ALLOW IN Anywhere
44301/udp ALLOW IN Anywhere

61300 (v6) ALLOW IN Anywhere (v6)
55300/tcp (v6) ALLOW IN Anywhere (v6)
44300/tcp (v6) ALLOW IN Anywhere (v6)
44301/udp (v6) ALLOW IN Anywhere (v6)

Je précise que j'ai désactivé l'IPv6 au niveau système et que je bind toujours depuis les paramètres natifs de mes applis sur l'interface du VPN. J'ai générisé le nom de l'interface réseau en 'pvpn' (toujours depuis NetworkManager) pour pouvoir switcher entre différents serveurs en conservant mes paramètres. Mes applis affichent bien toutes l'IPv4 publique du VPN, donc probablement pas un problème de route, mais je ne peux pas le garantir...
Je suppose que le problème doit venir de mon côté, et pas de pVPN, ou peut être pas...

J'espère vraiment que quelqu'un de plus calé que moi va pouvoir m'aider, au moins me mettre sur une piste, parce que là je sèche complètement.
Merci d'avance !

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 954
pVPN + Port forwarding TCP & UDP + (lib)natpmp + UFW
« Réponse #1 le: Aujourd'hui à 09:16:42 »
Je ne connais pas tellement le sujet mais cela m'intéresse.

Le principe du tunnel VPN est d'encapsuler un paquet IP chiffré dans un paquet ordinaire.

Citer
Processus
   ↓
Socket TCP/UDP
   ↓
Pile réseau (paquet IP « interne » ordinaire)
   ↓
Interface virtuelle
   ↓
Chiffrement + encapsulation VPN (paquet IP interne chiffré et encapsulé dans un paquet IP ordinaire)
   ↓
Interface physique
   ↓
Internet (flux réseau ordinaire)
   ↓
Serveur Proton VPN (déchiffrement et désencapsulation)
   ↓
Internet (flux réseau ordinaire)


L'application VPN reçoit le paquet IP ordinaire, le déchiffre, désencapsule le paquet IP interne, puis le remet à l'interface virtuelle.
Le noyau traite ensuite ce paquet comme s’il était arrivé par une interface réseau ordinaire.


Citer
Internet
   ↓
IP publique Proton VPN:51413
   ↓
NAT (ou DNAT ?) Proton VPN + pare-feu Proton VPN
   ↓
IP cible : 10.2.0.17:51413 (réseau virtuel : adresse IP du client VPN. Le port est associé à l'adresse IP).
   ↓
  ...
   ↓
Tunnel chiffré
   ↓
  ...
   ↓
Interface virtuelle de votre machine
   ↓
Application locale

Tu n'as pas besoin d'ouvrir des ports dans le pare-feu de ta machine.

On ne peut faire correspondre un port qu'à un seul autre.

    natpmpc -a 1 61300 udp 60 -g 10.2.0.1 && \
    natpmpc -a 1 55300 tcp 60 -g 10.2.0.1 && \
    natpmpc -a 1 44300 tcp 60 -g 10.2.0.1 && \

Dans tes commandes, le port 1 est redirigé successivement vers les ports 61300, 55300, 44300.
« Modifié: Aujourd'hui à 10:19:27 par basilix »

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 954
pVPN + Port forwarding TCP & UDP + (lib)natpmp + UFW
« Réponse #2 le: Aujourd'hui à 10:24:11 »
Je me suis trompé. Le trafic transitant par le tunnel doit être filtré par défaut.

Par exemple :

sudo ufw allow in on wg0 to any port 51413 proto tcp

while true; do
    natpmpc -a 1 0 udp 60 -g 10.2.0.1 &&
    natpmpc -a 1 0 tcp 60 -g 10.2.0.1 ||
    break
    sleep 45
done

Apparemment, selon ChatGPT, on ne peut gérer qu'un seul port Proton VPN. On ne pourrait pas définir soi-même le port public.