Serveur OpenVPN pour transférer la connexion entrante au client

2

Scénario :

  • Le serveur sur Internet a le serveur OpenVPN en cours d'exécution.
  • Client-1 à domicile a une application qui s'exécute sur le port 5000 (UDP et TCP), se connectant au serveur sur OpenVPN (l'application se lie à 0.0.0.0).
  • Client-2 au travail veut se connecter à l'application du Client-1 via Internet, sans se connecter au même réseau OpenVPN.
  • Les deux clients utilisent Windows et Server utilise Linux (Ubuntu).

Client-1 <===TUN0===> SERVER <===ETH0===> Client-2

Question :

Comment puis-je configurer OpenVPN pour transférer les demandes de connexion entrantes provenant du port 5000 de son interface eth0 vers le port 5000 de l'interface tun0 du Client-1, de sorte que l'application du Client-1 puisse rediffuser du contenu sur le Client-2 à la fois sous UDP et TCP?

Icône
la source
Ceci est le guide d'utilisation d'OpenVPN, avec la solution à votre problème, openvpn.net/index.php/open-source/documentation/…
MariusMatutiae le
Désolé @MariusMatutiae, ce n'est pas à propos de ce que j'ai décrit. Imaginez le cas où vous auriez un routeur idiot qui ne pourrait pas effectuer de transfert de port et ne pourrait pas accéder au port de Client-1 à partir de Client'2. Ensuite, vous devez récupérer une machine virtuelle, configurer Openvpn pour connecter les clients et également effectuer le transfert de port pour le port spécifique de Client-1.
Ikon

Réponses:

3

Heureusement, j'ai trouvé la réponse dans cette question ServerFault .

Une configuration que j'ai tirée de ce tutoriel DigitalOcean .

Ayant activé la redirection de port dans, sysctlje devais encore ajouter quelques iptablesrègles /etc/ufw/before.rules, cela ressemble à ceci:

#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward
#


# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]

-A PREROUTING -i eth0 -p tcp -m tcp --dport 50100 -j DNAT --to-destination [Client-1's vpn address]:50100
-A PREROUTING -i eth0 -p udp -m udp --dport 50100 -j DNAT --to-destination [Client-1's vpn address]:50100

# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES


# Don't delete these required lines, otherwise there will be errors
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
.
.
.
.
.
# allow MULTICAST UPnP for service discovery (be sure the MULTICAST line above
# is uncommented)
-A ufw-before-input -p udp -d 239.255.255.250 --dport 1900 -j ACCEPT


# START OPENVPN RULES
-A FORWARD -d [Client-1's vpn address]/32 -p tcp -m tcp --dport 50100 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d [Client-1's vpn address]/32 -p udp -m udp --dport 50100 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
# END OPENVPN RULES


# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

Avec le sysctltransfert de port activé et les iptablesrègles de transfert de port spécifiques à l'ip , le port 50100 est maintenant ouvert et transféré vers le port du client-1.

Icône
la source
J'ai la même configuration sous OpenVPN sous Debian, à la suite du tutoriel de DO. Mais je ne peux toujours pas transférer le port en utilisant votre méthode ci-dessus.
Braincomb
Pour étendre la réponse acceptée, vous devrez peut-être ajouter une activation à votre server.conffichier: appuyez sur "redirect-gateway def1 bypass-dhcp"
6rak0
Mais cela transfère-t-il via le VPN?
Keith
@Ikon, s'il vous plaît me dire quelle adresse 10.8.0.0 est - il -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
Vassia Milovidov
@VasyaMilovidov Si je me souviens bien, il s'agit de la plage d'adresses du réseau OpenVPN utilisé. Il devrait correspondre à votre réseau dans votre configuration.
Ikon