web-dev-qa-db-fra.com

Port en avant au client VPN?

J'ai rencontré un peu d'un puzzle et je n'ai pas eu beaucoup de chance pour trouver une solution. En ce moment je suis (malheureusement) connecté au Net via Verizon 3G. Ils filtrent tout le trafic entrant, il est donc impossible pour moi d'ouvrir des ports pour accepter les connexions.

J'ai actuellement une machine virtuelle Linux sur Linode.com, et la pensée a traversé mon esprit pour installer pptpd et tenter de faire un transfert de port iptables. J'ai installé pptpd installé et ma machine à domicile se connecte heureusement. Cela dit, voici quelques informations générales:

Serveur (Debian) WAN IP: x.x.x.x sur Eth0 - PPTPD IP: Y.Y.Y.1 sur PPP0 - Client VPN IP: Y.Y.Y.100

Pour vérifier que je n'allais pas insensé, j'ai tenté des connexions du serveur aux ports ouverts du client et que le client accepte les connexions via l'IP VPN.

Ce que je veux accomplir, c'est:

Internet -> WAN IP: port -> Port VPN VPN: Port

Donc, par exemple, si j'avais Port 6000 Ouvrir sur mon client, une personne pourrait utiliser Telnet à X.x.x.x: 6000 et le serveur l'attraperait et le transmettrait à 192.168.3.100:6000.

J'ai essayé au moins 20 différentes configures de Googled Up iptables et aucun n'a encore travaillé. Quelqu'un a-t-il des idées ou peut-être même une approche totalement différente que je pourrais ne pas être au courant? L'objectif ici est d'écouter une connexion horrible du pare-pare-feu, de préférence tous les deux TCP et le trafic UDP.

22
Vile Brigandier

Vous devez faire trois choses sur votre serveur VPN (le linode) pour faire ce travail:

  1. Vous devez activer la transmission IP:

    sysctl -w net.ipv4.ip_forward=1
    
  2. Configurer la destination NAT (DNAT) pour transférer le port. Vous avez probablement déjà compris cela parce que c'est un transfert de port standard, mais pour la complétude:

    iptables -t nat -A PREROUTING -d x.x.x.x -p tcp --dport 6000 -j DNAT --to-dest y.y.y.100:6000
    
  3. Configurer Source NAT (SNAT) de sorte que de la perspective de votre client VPN, la connexion provient du serveur VPN:

    iptables -t nat -A POSTROUTING -d y.y.y.100 -p tcp --dport 6000 -j SNAT --to-source y.y.y.1
    

La raison pour laquelle vous avez besoin du SNAT est parce que, sinon votre client VPN enverra ses paquets de retour directement à l'hôte qui a lancé la connexion (z.z.z.z) via sa passerelle par défaut (c'est-à-dire Verizon 3G) et non via le VPN. Ainsi, l'adresse IP source sur les paquets de retour sera votre adresse Verizon 3G et non X.x.x.x. Cela provoque toutes sortes de problèmes, car z.z.z.z a vraiment lancé la connexion à x.x.x.x.

Dans la plupart des configurations de transfert de port, le SNAT n'est pas nécessaire car l'hôte effectuant le transfert de port est également la passerelle par défaut pour l'hôte de destination (par exemple, un routeur Home).

Notez également que si vous souhaitez transférer le port 6000 à un port différent (dire 7000), la règle SNAT devrait correspondre sur 7000, pas 6000.

25
AGWA

J'ai aussi eu ce problème et j'ai essayé de le résoudre pendant des heures .. Voici ma solution:

  • J'avais plus d'un VPNClient avec le même IPAddress. Donc j'ai donné à chacun d'eux un statique IPAddress

Définissez un répertoire dans lequel les scripts clients doivent être stockés, par exemple./etc/openvpn/staticclients et créez le répertoire

mkdir /etc/openvpn/staticclients

Ajoutez ce répertoire comme option à votre openvpn configfile sur le serveur:

client-config-dir /etc/openvpn/staticclients

Pour chaque client, vous devez créer un fichier. Le nom de fichier doit correspondre à la common name Attribut spécifié sur le certificat du client. Cette commande obtient le CN du certificat des ordinateurs:

Cet exemple appuie le IPAddress 10.1.134.110/10.1.134.109 au client avec le common name [~ # ~] testclient [~ # ~] et appuie également un itinéraire supplémentaire pour le sous-réseau 10.1.135.0.

cat /etc/openvpn/staticclients/TESTCLIENT

ifconfig-Push 10.1.134.110 10.1.134.109
Push "route 10.1.135.0 255.255.255.0 10.1.134.62"
sysctl -w net.ipv4.ip_forward=1

iptables -t nat -A PREROUTING -p tcp --dport 28006 -j DNAT --to 10.1.134.110
3
Dominic Jonas

La plupart des serveurs ont transféré IP désactivé dans la configuration par défaut. Vous devez l'activer si vous souhaitez rediriger les connexions entrantes via votre VPN.

Essaye ça:

sysctl -w net.ipv4.ip_forward = 1

Je veux dire en plus de la configuration iptables.

2
Andrey Voitenkov

Ce que vous voulez réaliser est (probablement) très possible avec pptpd ou openvpn et iptables, cependant, vous trouverez peut-être un meilleur candidat à ce cas d'utilisation. Je viens de lire Ceci qui explique comment configurer la TINC pour exactement ce cas d'utilisation. C'est une alternative (potentiellement plus simple) à la partie pptdp ou openvpn. Ensuite, vous auriez besoin exactement des mêmes règles pour les IPTables.

0
chmac