OpenVPN : Partager le port 80 avec port-share
I. Présentation
Il arrive souvent que seuls les ports comme 80 et 443 soient autorisés, pour des raisons de sécurité (filtrage), et ainsi cela devient rapidement un casse-tête pour lancer notre instance OpenVPN qui nous permettrait de nous libérer de ces restrictions, pour tout simplement relever ses mails avec son client mail préféré.
Mais Il est possible que vous ayez déjà un serveur web qui fonctionne sur le port 80 ou 443, sur le même serveur. Vous avez de la chance, figurez-vous qu’OpenVPN possède l’option « port-share ». Cette option va vous permettre de partager un port avec une autre application comme Apache ou Ngnix.
II. Explication
Il n’est pas possible que deux applications utilisent le même port car cela mènerait à un conflit, en effet seule l’application s’exécute en premier pourrait l’utiliser.
Ce que dit la documentation d’OpenVPN à ce propos :
--port-share host port :
"When run in TCP server mode, share the OpenVPN port with another application, such as an HTTPS server. If OpenVPN senses a connection to its port which is using a non-OpenVPN protocol, it will proxy the connection to the server at host:port. Currently only designed to work with HTTP/HTTPS, though it would be theoretically possible to extend to other protocols such as ssh."
Ce qui veut dire que lorsque le serveur est exécuté en mode TCP, il est possible de partager le port d’OpenVPN avec une autre application qui s’appuierai sur du HTTPS. Si OpenVPN détecte une connexion sur son port que ne correspond pas à son protocole, OpenVPN agira en tant que proxy pour effectuer la connexion au serveur de la façon « Hôte : port ». Actuellement, il est uniquement conçu pour fonctionner avec HTTP et HTTPS, même s’il est théoriquement possible de l’étendre à d’autres protocoles comme le SSH.
Pour mettre en pratique la notion de port-share, voici ce que nous allons faire.
On va prendre l’exemple d’un serveur web qui est sur le port 80 à l’origine, et on va le passer sur le port 8080. Malgré tout, il restera accessible sur le port 80 grâce à OpenVPN qui fera office de relais.
Il faut commencer par modifier le port d’écoute de notre serveur web sur un port différent. Pour Apache, il faut modifier le fichier « ports.conf » dans « /etc/apache2/ ».
Par la suite il faut modifier le listen et le NameVirtualHost pour qu’ils correspondent à votre « site », comme ceci :
- Maintenant on peut modifier le fichier de configuration d’OpenVPN qui se trouve dans « /etc/openvn/server.conf » :
On modifie donc le protocole en TCP, le port en 80 et on ajoute la ligne « port-share 127.0.0.1 :8080 »
Maintenant il vous suffit d’aller sur votre site web comme auparavant et vous pouvez désormais aussi utiliser votre VPN sur le port 80. Sympa, non ?
Exemple encore plus pertinent, mise en place du VPN sur le port 443 🙂
Le trafic sécurisé d’OpenVPN aura un look moins suspect sur ce port.