Souhaitez mettre en œuvre un VPN pour une seule application
Je cherche pour ajouter le support d'un VPN pour mon logiciel,
J'ai connu PPTP et OpenVPN , les deux fait un système à l'échelle de la liaison, l'installation d'un pilote TAP pour toutes les applications d'acheminer leur trafic.
Comment pourrais-je mettre en œuvre une prise en charge VPN pour mon application ? Theres une bibliothèque, par exemple, de l'indice ou la façon de le faire ?
Mon logiciel est fait en C++ /MFC. En utilisant le standard de CAsyncSocket.
Pourquoi ne pas simplement utiliser SSL/TLS si il ne s'agit que d'une application?
N'a pas pu être SSL, car j'ai besoin de fournir des ports. Le VPN sera utilisé pour annonimization d'un logiciel p2p.
N'a pas pu être SSL, car j'ai besoin de fournir des ports. Le VPN sera utilisé pour annonimization d'un logiciel p2p.
OriginalL'auteur bratao | 2011-02-11
Vous devez vous connecter pour publier un commentaire.
Forwading entrant les connexions à votre application est relativement facile:
stunnel vous permet de suivre le trafic des ports spécifiques par le biais d'un tunnel SSL. Il exige que vous exécuter sur les deux extrémités.
Plus décent SSH clients, tels que OpenSSH ou Mastic également en charge la redirection de port, avec l'avantage supplémentaire que tout serveur SSH distant pouvez généralement agir comme de l'autre bout du tunnel, sans aucune modification.
Vous pouvez également utiliser OpenVPN et d'autres solutions VPN, mais cela nécessite des règles de transfert pour être ajouté au serveur distant.
Transfert sortant connexions, cependant, est un peu plus compliquée, sans modification de votre application. La bonne façon de le faire est de mettre en œuvre la CHAUSSETTES protocole, de préférence SOCKS5. Alternativement, vous pouvez utiliser une application externe, comme FreeCap, de rediriger toutes les connexions à partir de votre application.
Après vous faites cela, vous pouvez transférer vos connexions à tous les serveur SOCKS. La plupart des clients SSH, par exemple, vous permettent de utiliser le protocole SOCKS pour router les connexions sortantes par le serveur distant.
Au passage, OpenVPN serveurs ne sont pas forcément à la passerelle par défaut pour l'ensemble du trafic. Certains ne pousse cette entrée de table de routage pour les clients, mais il peut être modifié. Dans mon propre OpenVPN configuration que je utilisez uniquement le VPN pour accéder au réseau privé et ne pas passer le tout à travers elle.
Si vous pouvez forcer votre application pour lier tous les sockets à un ou plusieurs spécifiques ports, vous pouvez utiliser la propriété intellectuelle des règles de filtrage sur votre système pour rediriger toutes les connexions à partir de ces ports à travers le VPN.
EDIT:
Tunneling paquets UDP est un peu plus difficile. Généralement, vous avez besoin d'un processus de proxy sur le serveur distant et le client local qui va tunnel connexions entrantes et sortantes par une persistance de la connexion TCP.
Votre meilleur pari serait un plein SOCKS5 mise en œuvre du client dans votre application, y compris l'UDP-ADJOINT de commande pour les paquets UDP. Ensuite, vous aurez à trouver un proxy SOCKS5 qui prend en charge de tunneliers.
J'ai parfois utilisé Délégué qui semble être la Suisse de poche-couteau de procurations. Autant que je sache, il prend en charge l'UDP-ASSOCIER la commande dans son SOCKS5 la mise en œuvre et il prend également en charge la connexion de deux Délégué processus grâce à une connexion TCP. Il est aussi disponible pour Linux et Windows. Je ne me souviens pas si elle peut aussi chiffrer la connexion TCP, mais vous pouvez toujours tunnel que l'un par stunnel ou SSH si vous en avez besoin.
Si vous avez des droits d'administrateur système sur un serveur VPN distant, cependant, vous pourriez probablement avoir plus simples:
Votre application P2P lier sortant les sockets UDP pour le client VPN de l'interface. Vous avez beaucoup ont besoin à l'installation secondaire route par défaut pour l'interface. De cette façon, votre application de courrier sortant, les paquets passent par le serveur distant.
Avoir le serveur distant avant entrants paquets UDP à des ports spécifiques par le biais de la connexion VPN de nouveau à vous.
Cela devrait être simple, mais si vous vous souciez vraiment de l'anonymat, vous pourriez être intéressé en veillant à ce que votre application P2P n'a pas de fuite de DNS ou d'autres demandes qui peuvent être suivis.
Très bonne réponse, mais c'est un p2p , il utilise les ports TCP et UDP. Chaussettes de support pour le protocole UDP est pratiquement inexistante. Theres un opcode pour UDP obligatoire dans socks5, mais pas de ceux implament. Notez également que mon logiciel est en cours d'exécution sur Windows. Le serveur peut être dans Linux ou Windows.
Meilleure réponse, merci !
OriginalL'auteur thkala
SSH connectivité dans votre application ou de l'utilisation de SSL. Vous aurez à utiliser un protocole de service au lieu de la technologie VPN. Bonne chance!
OriginalL'auteur kirtcathey
Je pense que vous avez tout simplement besoin de SSL: http://www.openssl.org/
OpenVPN est basé sur le protocole SSL, mais il est plein de vpn.
La question est de savoir de quoi avez-vous besoin? Si vous avez besoin de chiffrement (demande de connexion privée) - et non pas d'un vpn (réseau privé virtuel) pour aller ssl.
Conseils peuvent être trouvés ici:
Ajout de la prise en charge SSL pour TCP &UDP code?
http://sctp.fh-muenster.de/dtls-samples.html
http://fixunix.com/openssl/152877-ssl-udp-traffic.html
OriginalL'auteur Andreas Rehm