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.
Vous devez faire trois choses sur votre serveur VPN (le linode) pour faire ce travail:
Vous devez activer la transmission IP:
sysctl -w net.ipv4.ip_forward=1
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
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.
J'ai aussi eu ce problème et j'ai essayé de le résoudre pendant des heures .. Voici ma solution:
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 lecommon 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"
http://www.yougetsignal.com/tools/open-ports/ et http://canyouseeme.org/ n'a pas détecté correctement les ports. Je devais en outre commencer mon application sur le client que les sites Web ont pu voir ces ports.
Pas besoin de supplément SNAT
règles. Seules ces règles étaient nécessaires:
sysctl -w net.ipv4.ip_forward=1 iptables -t nat -A PREROUTING -p tcp --dport 28006 -j DNAT --to 10.1.134.110
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.
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.