Port forwarding

Bonjour @ tous,
j’ai parcouru ce site http://www.linux-france.org/prj/edu/archinet/systeme/ch13s04.html, mais j’avous que je n’arrive pas bien à situer mon cas là dedans…
D’ou mon post.
Voilà, j’ai une machine locale (Windxxx :119 ); qui se connecte en VPN sur une debian wheezy qui se trouve hébergée sur le net.
J’aimerai ouvrir certains ports sur wheezy (utilisés par les applications sur ma machine Windows), mais avant de faire n’importe quoi :075 , je préfère m’en référer à vous. :ugeek:

Qu’entends-tu exactement par “ouvrir certains ports” ? Ce n’est pas la même chose que le “port forwarding” (redirection de port vers une autre adresse et/ou un autre port).

La page pointée concerne la fonctionnalité de relais de port TCP par SSH, qu’on peut considérer comme une forme de redirection. Mais s’il y a déjà un VPN, SSH est sans doute superflu. La méthode classique pour faire une redirection de port, consiste à créer une règle iptables avec la cible DNAT. Note : si la redirection par iptables est faite vers une autre machine, la machine qui l’effectue doit fonctionner en routeur IP.

Port forwarding.
Mais vu que le VPN m’alloue une seconde IP locale en + d’une IP public, je pense qu’il faudrait forwarder ces mêmes ports sur le serveur VPN OVH :think: ?
Je suis sur OpenVPN

Port forwarding.
Mais vu que le VPN m’alloue une seconde IP locale en + d’une IP public, je pense qu’il faudrait forwarder ces mêmes ports sur le serveur VPN OVH :12 ?
Je suis sur OpenVPN.

Un début de réponse ici http://www.dbzoo.com/blog/remapping_network_11_via_openvpn :think: ?

up ? :smiley:

Peux-tu préciser ?
Si le VPN attribue une adresse IP publique au client, pas besoin de redirection. Les ports du clients sont directement joignables par cette adresse publique.

Evidemment c’est le serveur VPN qui doit faire les redirections (si elles sont nécessaires), quel que soit le moyen (ssh, iptables…).

OpenVPN sur Windows créé une carte virtuelle “TAP-Windows” qui m’alloue (lorsque je me connecte en VPN) une IP 10.x.x.x pour pouvoir me connecter au serveur OVH, et mon IP publique devient celle du serveur OVH.

Donc le VPN n’attribue pas d’adresse publique et il faut bien des redirections.

ok.
Et pour ce faire ?

Par exemple, pour rediriger les paquets reçus par l’interface eth0 à destination du port TCP 31337 vers l’adresse 10.20.30.40 :

Si le serveur fait du filtrage dans la chaîne FORWARDING, il faut aussi accepter les paquets redirigés et les paquets de réponse.

Pour faire simple, j’ai un port TCP 44455 et un UDP 55544 à rediriger (par exemple).
ça donnerait:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 44455 -j DNAT --to IP_CARTE_TAP-Windows iptables -t nat -A PREROUTING -i eth0 -p udp --dport 55544 -j DNAT --to IP_CARTE_TAP-Windows
:geek:
Et ce routage est permanent (même après reboot) ?

Ce n’est pas du routage, c’est du NAT. Cela modifie juste l’adresse de destination des paquets, et le routage fait son travail habituel avec la nouvelle adresse.

Les règles iptables sont volatiles, comme à peu près tout ce qui concerne le noyau et qui n’est pas enregistré dans un fichier ou un disque. Il faut un mécanisme pour les recréer à chaque démarrage. Les possibilités sont multiples : un script d’init, une commande pre-up dans la définition de l’interface eth0 dans /etc/network/interfaces, une invocation dans la configuration d’openvpn…

OK.
Par exmple, je peux inscrire ça dans le fichier rc.local ?

Par exemple.

euh… ça ne fonctionne pas…

C’est pas de chance…

(Si tu trouves que ce message manque de substance, relis le tien.)

lol.
j’ai donc édité le fichier rc.local de mon serveur pour y ajouter ces 2 lignes (post du sessus) sans succès.
Le serveur a différentes interfaces: l0, tun0, venet0 et venet0:0
J’ai essayé le NAT sur les 4 interfaces, mais les ports sont toujours fermés en VPN…

Re euh…
Shame on me, je n’avais pas les yeux en face des trous… :030 :075
Avec la bonne syntaxe, ça fonctionne à merveille !
Merci beaucoup. :023 :041 :clap:

“venet0”, je suppose que ton serveur est un VPS ?

L’interface dans la règle doit être celle qui fait face à internet.

“lo” est l’interface de loopback, interface virtuelle qui existe sur chaque machine et lui sert uniquement à communiquer avec elle-même.

“venet0:0” n’est pas une vraie interface, c’est une notation d’“alias”, un artifice obsolète pour configurer une adresse IP supplémentaire sur une vraie interface qui est ici “venet0”. On ne peut pas l’utiliser dans les règles iptables ou les routes.

“tun0” est l’interface du VPN.