logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 06-09-2018 23:02:51

technarf
Membre
Inscription : 06-09-2018

redirection de ports via VPN (openvpn)

Bonjour,
Je m'arrache les quelques cheveux qui me restent depuis quelques jours maintenant.

Pour essayer de faire simple, j'ai deux clients (des raspberry pi sous raspbian) qui se connectent à un serveur VPN (openvpn configuré via pivpn -le serveur est aussi un raspberry- puis customisé comme j'ai pu). Chaque client dispose d'une IP fixe 10.8.0.2 et 10.8.0.3 pour se connecter au serveur dont l'IP est 10.8.0.1 sur l'interface tun0. L'adresse du VPN sur son réseau local est 192.168.1.100 sur l'interface eth0 (le serveur est physiquement sur un réseau distant). Le but est de rediriger le port 8443 sur la machine 10.8.0.2 et le port 443 sur la machine 10.8.0.3 qui hébergent chacune un site web différent.
La box qui fournit internet au serveur VPN est configurée pour que les ports 1194, 443 et 8443 soient redirigés sur l'IP 192.168.1.100.
J'y connais vraiment rien en redirection, et j'ai configuré iptables de la sorte sur le serveur :

iptables -L -t nat


Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  anywhere             192.168.1.100        tcp dpt:8443 to:10.8.0.2:8443
DNAT       tcp  --  anywhere             192.168.1.100        tcp dpt:https to:10.8.0.3:443

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  10.8.0.0/24          anywhere


iptables -L


Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination



Si je connecte seulement la machine 10.8.0.2 au VPN, j'arrive bien à accéder à son site web en tapant https://adressepubliqueduserveur:8443.
Si je connecte seulement la machine 10.8.0.3 au VPN, j'arrive bien à accéder à son site web en tapant https://adressepubliqueduserveur:443 (le ":443" est même superflu).

Là où les choses se gâtent, c'est quand je connecte mes deux clients au VPN en même temps. Dans ce cas, j'arrive à accéder aux 2 sites, mais très rapidement le système devient instable et je subis des déconnections à répétition qui rendent la consultation des sites web totalement impossible...
Les problèmes ne viennent pas d'un trafic trop important, il n'y a qu'un utilisateur à la fois (moi).
Le fichier conf du serveur est :

dev tun
proto udp
#proto tcp
port 1194
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/servername.crt
key /etc/openvpn/easy-rsa/pki/private/servername.key
dh none
ecdh-curve secp384r1
topology subnet
server 10.8.0.0 255.255.255.0
# Set your primary domain name server address for clients
push "dhcp-option DNS 192.168.1.254" #La box du serveur a l'adresse 192.168.1.254
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
# Prevent DNS leaks on Windows
push "block-outside-dns"
# Override the Client default gateway by using 0.0.0.0/1 and
# 128.0.0.0/1 rather than 0.0.0.0/0. This has the benefit of
# overriding but not wiping out the original default gateway.
push "redirect-gateway autolocal def1 bypass-dhcp"
#client-to-client
ifconfig-pool-persist /etc/openvpn/ipp.txt
keepalive 15 120
remote-cert-tls client
tls-version-min 1.2
tls-crypt /etc/openvpn/easy-rsa/pki/ta.key
cipher AES-256-CBC
auth SHA256
compress lz4
user nobody
group nogroup
persist-key
persist-tun
#persist-local-ip
crl-verify /etc/openvpn/crl.pem
status /var/log/openvpn-status.log 20
status-version 3
syslog
verb 6
#DuplicateCNs allow access control on a less-granular, per user basis.
#Remove # if you will manage access by user instead of device.
#duplicate-cn
# Generated for use by PiVPN.io
# Client config directory (pour assigner des ip fixes par exemple)
client-config-dir /etc/openvpn/ccd


Et les fichiers conf des clients ressemblent à ça :

client
dev tun
proto udp
#proto tcp
remote adressepubliqueduserveur 1194
resolv-retry infinite
askpass /etc/openvpn/client/Client.pass
nobind
persist-key
persist-tun
ping 10
ping-restart 120
remote-cert-tls server
tls-version-min 1.2
verify-x509-name servername name
cipher AES-256-CBC
auth SHA256
compress lz4
verb 3
explicit-exit-notify 3
status /var/log/openvpn-status.log 20
[Certificats...]



Si ça se trouve, c'est tout bête comme problème, mais je sèche totalement. Je peux éventuellement fournir des logs à la demande...
Merci d'avance si quelqu'un sait comment résoudre mon problème et pouvoir passer du site web d'une machine à l'autre sans que les connexions deviennent instables...

Hors ligne

#2 07-09-2018 05:57:01

Freemaster
Membre
Lieu : Nord
Distrib. : Debian amd64
Inscription : 31-07-2018
Site Web

Re : redirection de ports via VPN (openvpn)

Salut,

remplace dev tun, par dev tap... sur le serveur, et sur les clients

o_O

Hors ligne

#3 07-09-2018 08:16:02

technarf
Membre
Inscription : 06-09-2018

Re : redirection de ports via VPN (openvpn)

Merci pour l'info, je vais aller tester ça de ce pas...

Hors ligne

#4 07-09-2018 09:33:51

raleur
Membre
Inscription : 03-10-2014

Re : redirection de ports via VPN (openvpn)

technarf a écrit :

iptables -L -t nat


La sortie de cette commande est incomplète et peu lisible. Il vaut mieux utiliser iptables-save.

technarf a écrit :

Là où les choses se gâtent, c'est quand je connecte mes deux clients au VPN en même temps. Dans ce cas, j'arrive à accéder aux 2 sites, mais très rapidement le système devient instable et je subis des déconnections à répétition qui rendent la consultation des sites web totalement impossible


Il faudrait caractériser le dysfonctionnement de façon beaucoup plus fine, notamment en testant la connectivité IP dans les VPN (ping pour mesurer la perte de paquets avec différentes tailles...)
Où sont les deux clients VPN par rapport au réseau du serveur ?

Freemaster a écrit :

remplace dev tun, par dev tap


Qu'est-ce qui motive cette suggestion ?


Il vaut mieux montrer que raconter.

Hors ligne

#5 07-09-2018 12:36:10

technarf
Membre
Inscription : 06-09-2018

Re : redirection de ports via VPN (openvpn)

En lisant un peu sur internet ce que fait tap par rapport à run, il semblerait en effet que tap est plus approprié dans mon cas (je veux faire un pont entre 2 machines d'un réseau local qui ne dispose pas d'adresse publique et le "reste du monde").
J'ai appliqué ce paramètre ce matin et de ce que j'ai pu voir a distance, il semblerait que ça fonctionne comme attendu maintenant... Je reviendrai si je rencontre des problèmes.... Merci en tous cas.

Hors ligne

#6 07-09-2018 13:02:56

Freemaster
Membre
Lieu : Nord
Distrib. : Debian amd64
Inscription : 31-07-2018
Site Web

Re : redirection de ports via VPN (openvpn)

tap -> le serveur agit comme un switch
tun -> tunnel ip à ip... à chaque connexion au serveur, il s'octroie une ip unique pour monter le tunnel, donc quand on a plusieurs clients, le tap est le plus adapté... par contre le client sous android, cela ne fonctionne qu'en tun smile

o_O

Hors ligne

#7 07-09-2018 13:14:14

raleur
Membre
Inscription : 03-10-2014

Re : redirection de ports via VPN (openvpn)

Il n'est pas du tout nécessaire de ponter les deux clients, une redirection de port n'a besoin que de routage IP donc le mode tun devrait suffire. Le mode tap est plus lourd puisqu'il faut émuler une couche ethernet en plus.
Le serveur VPN devrait pouvoir utiliser la même adresse IP locale pour tous les tunnels en mode TUN. Et même dans le cas contraire, je ne vois pas ce que ça change. Il faudrait comparer les tables de routage dans les deux modes.

Il vaut mieux montrer que raconter.

Hors ligne

Pied de page des forums