Comment exécuter votre propre serveur OpenVPN sur un Raspberry PI

Bonjour à tous!

Dans ce court article, je vais vous expliquer comment configurer votre propre serveur VPN (Virtual Private Network) sur un Raspberry PI avec OpenVPN. Après avoir configuré le serveur, nous installerons un serveur d'obscurcissement afin de masquer notre trafic en indiquant que nous utilisons un VPN. Cela nous aidera à échapper à une forme de censure.

Pourquoi utiliser un VPN?

Tout d'abord, expliquons pourquoi vous voudrez peut-être utiliser un serveur VPN:

  1. Évitez les attaques de l'homme au milieu. Si vous avez un utilisateur malveillant sur votre réseau local - même votre colocataire - cette personne est capable de surveiller votre trafic non chiffré et de le falsifier.
  2. Cachez votre activité Internet à votre FAI (fournisseur d'accès Internet) ou à votre université, dans mon cas.
  3. Débloquez les services. Mon université bloque tous les paquets UDP (User Datagram Protocol). Cela signifie que je ne peux utiliser aucune application qui communique via UDP. Je ne peux pas utiliser mon client de messagerie, jouer à des jeux ou même utiliser Git!

J'ai décidé de configurer un VPN sur mon Internet domestique à l'aide d'un Raspberry Pi. De cette façon, je peux me connecter à mon réseau domestique pendant que je suis à l'université. Si vous avez besoin d'un serveur VPN dans un autre pays, vous pouvez acheter un serveur privé virtuel de 5 $ / mois auprès de DigitalOcean. Vous pouvez utiliser mon lien de parrainage pour obtenir 10 $ de réduction - c'est deux mois de VPN gratuit. Mais vous n'êtes pas obligé de l'utiliser si vous ne le souhaitez pas.

Installer OpenVPN

Cette étape est vraiment simple, car nous utiliserons un script shell pour le faire pour vous. Il vous suffit donc de «presser» ensuite et de terminer.

L'installation prendra un certain temps, selon la taille de clé choisie. Sur mon Raspberry Pi 3 modèle B, cela a pris environ 3 heures.

Veuillez accéder à ce référentiel et suivre les instructions

Angristan / OpenVPN-installer

OpenVPN-install - Configurez votre propre serveur OpenVPN sur Debian, Ubuntu, Fedora CentOS et Arch Linux github.com

Si vous ne connaissez pas l'adresse IP de votre serveur, mettez simplement 0.0.0.0. J'ai choisi 443pour le port et TCP (Transmission Control Protocol) pour le protocole.

Remarque : Ceci est très important car mon université n'autorise que les ports TCP / 80 et TCP / 443 , le reste est pratiquement bloqué. De plus, Obfsproxy ne fonctionne qu'avec TCP, alors assurez-vous d'avoir choisi TCP !

Une fois le script terminé, vous obtiendrez un fichier .ovpn . Il peut être importé dans votre client VPN préféré et tout devrait fonctionner immédiatement.

Tester la connexion

Importez le fichier .ovpn dans votre client VPN et changez l'adresse IP 0.0.0.0en IP locale de votre Raspberry PI. Selon la configuration de votre réseau, il peut être de la forme 192.168.*.*.

Remarque: cela ne fonctionnera que si vous êtes connecté au même WiFi que le Pi.

J'ai configuré mon routeur pour que le PI reçoive toujours une adresse IP réservée. Vous devrez peut-être vérifier les paramètres de votre routeur si vous souhaitez faire quelque chose de similaire.

Si la connexion est réussie, félicitations, vous disposez désormais d'un serveur VPN! Mais, vous ne pouvez pas y accéder de l'extérieur… pour le moment.

Si vous souhaitez uniquement un serveur OpenVPN sans proxy d'obfuscation, vous pouvez passer à la redirection de port .

Installation du proxy d' obfuscation

Obfs4 est un proxy de brouillage. Il déguise votre trafic Internet pour qu'il ressemble à du bruit. Quelqu'un qui fouine votre trafic ne saura pas vraiment ce que vous faites, et cela vous protégera des attaques de détection actives utilisées par le grand pare-feu de Chine.

Remarque: cette méthode ne fonctionnera pas si votre adversaire autorise uniquement le trafic sur liste blanche :(

Installons maintenant le serveur proxy.

0. Installez le package requis:

apt-get update && apt-get install obfs4proxy
  1. Créez un répertoire qui contiendra la configuration.
sudo mkdir -p /var/lib/tor/pt_state/obfs4

2. Créez le fichier de configuration.

sudo nano /var/lib/tor/pt_state/obfs4/obfs4.config

Dans le fichier de configuration, vous allez coller les éléments suivants:

TOR_PT_MANAGED_TRANSPORT_VER=1TOR_PT_STATE_LOCATION=/var/lib/tor/pt_state/obfs4TOR_PT_SERVER_TRANSPORTS=obfs4TOR_PT_SERVER_BINDADDR=obfs4-0.0.0.0:444TOR_PT_ORPORT=127.0.0.1:443

TOR_PT_SERVER_BINDADDR est l'adresse sur laquelle le proxy écoutera les nouvelles connexions. Dans mon cas, c'est 0.0.0.0:444- pourquoi 444 et non 443? Eh bien, parce que je ne veux pas changer la configuration du serveur OpenVPN qui écoute actuellement sur 443. Aussi, je mapperai cette adresse plus tard à 443 en utilisant la redirection de port.

TOR_PT_ORPORT doit pointer vers le serveur OpenVPN. Dans mon cas, mon serveur fonctionne sur127.0.0.1:443

3. Créez un fichier de service SystemD.

sudo nano /etc/systemd/system/obfs4proxy.service

Puis collez-y le contenu suivant:

[Unit]Description=Obfsproxy Server[Service]EnvironmentFile=/var/lib/tor/pt_state/obfs4/obfs4.configExecStart=/usr/bin/obfs4proxy -enableLogging true -logLevelStr INFO[Install]WantedBy=multi-user.target

4. Démarrez le proxy Obfuscation.

Maintenant, assurez-vous qu'OpenVPN est en cours d'exécution et exécutez les commandes suivantes pour démarrer le proxy et lui permettre de démarrer au démarrage.

sudo systemctl start obfs4proxysudo systemctl enable obfs4proxy

5. Enregistrez la clé de certificat

Une fois le service démarré, exécutez la commande suivante et enregistrez la clé de certificat.

cat /var/lib/tor/pt_state/obfs4/obfs4_bridgeline.txt

The key is of the form Bridge obfs4 : GERPRINT> cert=KEY iat-mode=0 . You will need it when you’re connecting to the VPN.

6. Testing the connections.

Open up your VPN client and change the ip from 443 to 444 in order to connect to the proxy instead of the OpenVPN server.

After that, find the Pluggable Transport option in your OpenVPN client and see if it supports obfs4.

If everything works, then you’re all set! Congratulations! Only a few more things to tweak before using this VPN from the outside world.

Port Forwarding

In order to access the OpenVPN server from the outside world we need to unblock the ports, because they are most likely blocked. As you remember, I have reserved my PI’s IP address on my router to always be 192.168.1.125 so it doesn’t change if the PI disconnects or if the router reboots.

This way I have defined the following rules in my Port Forwarding table:

The outside port 443 will point to the obfuscation’s server port 444. If you don’t have an obfuscation server, then leave 443->443.

The port 25 will point to the PI’s SSH port 22. This is only for my own convenience.

In case I want to access the OpenVPN server directly without the obfuscation proxy, I have created a rule 444->443

The service port is the OUTSIDE port that will be used with your PUBLIC IP address. To find your public IP, use a service like whatsmyip.com.

The internal port is the INSIDE port. It can be used only when you are connected to the network.

Note: The first rule is saying redirect all the connections from PUBLIC_IP:443 to 192.168.1.125:444

Testing

  1. Find your public IP and replace your old IP with the public IP in the .ovpn file or in the VPN client.
  2. Connect to the VPN.

That’s it.

Dynamic DNS

In most cases, your IP will change because it’s a dynamic IP. A way to overcome this is to create a small program on the PI that saves your IP and sends you an email every day or so. You may also store the IP in an online database such as Firebase.

My router has Dynamic DNS setting. This way I can use a service provider like NoIP and get a domain like example.no-ip.com that will always point to my public IP address.

Other Resources:

  • A Childs Garden Of Pluggable Transports
  • Viscosity-Obsfurcation/
  • //www.pluggabletransports.info/transports/

If you have any questions hit me up on Twitter.