Raspberry Pi comme passerelle VPN

Après avoir été utilisé comme Proxy et Client TV Voici maintenant une autre utilisation possible d'un Raspberry Pi: comme Passerelle VPNDans ce cas précis, pour fournir une connexion VPN à plusieurs appareils. Pratique si tous les appareils ne prennent pas directement en charge le VPN.

Mise à jour 14.05.2015 : J'ai le Configuration d'une passerelle VPN à utiliser avec le Raspberry Pi 2 mis à jour une fois de plus. Bien entendu, la vitesse dépend toujours du fournisseur de VPN utilisé et de nombreux autres facteurs.

Carte Raspberry Pi 2 : plus de puissance grâce à un quadruple cœur et 1 Go de RAM
Carte Raspberry Pi 2 : plus de puissance grâce à un quadruple cœur et 1 Go de RAM

Bien qu'il existe déjà un image finalequi fournit un Raspberry Pi comme passerelle OpenVPN, mais finalement la configuration complète ne s'est pas avérée si compliquée que je ne puisse pas l'installer en plus sur le Raspberry Pi déjà existant. Plus le Raspberry (ou l'ordinateur monocarte de votre choix) est rapide, plus le VPN aura de puissance par la suite.

Exigences

Afin de faire fonctionner le Raspberry Pi comme une passerelle OpenVPN, quelques conditions doivent être remplies :

  • Raspberry Pi resp. Pi 2 Intégré dans le réseau avec une adresse IP fixe (non obligatoire)
  • Accès VPN (j'utilise IPredator resp. PureVPN)
  • Une compréhension de base du routage et de Linux est un avantage car tout se passe sur la console.

Une fois que vous avez rassemblé toutes les pièces, il est temps de procéder à l'installation. Conseils d'IPredator voici les points clés les plus importants. Tout d'abord, openvpn doit être installé :

~ # sudo aptitude install openvpn

Ensuite, nous avons besoin du fichier .conf du fournisseur respectif, qui contient également les paramètres et les clés nécessaires. Il doit être copié dans /etc/openvpn doivent être copiés. Dans le même répertoire, nous créons un fichier .auth (le nom correct de ce fichier doit être indiqué dans le fichier .conf sous le nom de l'utilisateur). auth-user-pass doit être saisie). Le fichier .auth ne contient que deux lignes avec le nom d'utilisateur et le mot de passe pour la connexion VPN.

Dans le fichier .conf de la connexion VPN, les entrées suivantes doivent être ajoutées (elles peuvent être obsolètes selon le fournisseur, vous n'en avez pas besoin pour PureVPN) :

script-sécurité 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

redirect-gateway

L'appel du script update-resolv-conf lors de l'établissement et de la fermeture de la connexion VPN garantit que le serveur DNS correct est toujours utilisé, redirect-gateway garantit que les paquets de données des clients du réseau passent ensuite par la connexion VPN. Une fois tous ces réglages effectués, le premier test peut commencer : avec la commande openvpn -config /etc/openvpn/my-config.conf une connexion VPN est établie, dans un deuxième terminal vous pouvez vérifier si elle a fonctionné correctement. Là, vous devriez ifconfig afficher un nouveau périphérique tun0 :

tun0 Link encap:UNSPEC Adresse matérielle 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          adresse inet:x.x.x.x P-z-P:x.x.x.x masque:255.255.255.0
          UP POINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
          Paquets RX:6005 erreurs:0 abandonnés:0 dépassements:0 trames:0
          Paquets TX:6335 erreurs:0 abandonnés:0 dépassements:0 porteurs:0
          Collisions:0 Longueur de la file d'attente d'émission:100
          Octets RX:1554591 (1.4 MiB) Octets TX:625622 (610.9 KiB)

Avec cela, la connexion VPN fonctionne déjà, OpenVPN peut maintenant être activé régulièrement via /etc/init.d/openvpn start et démarre aussi automatiquement après un redémarrage - maintenant les paquets de données des appareils du réseau local doivent seulement être acheminés via cette connexion.

Configurer la passerelle

Tout d'abord, le transfert de paquets doit être activé. Comme nous voulons qu'il reste même après un redémarrage, dans le fichier /etc/sysctl.conf supprimer le signe de commentaire avant l'entrée suivante :
net.ipv4.ip_forward=1. Après cela, redémarrez le Pi une fois, alors nous saurons également si la Connexion VPN est automatiquement établi - si c'est le cas, activez la redirection dans iptables (les paramètres suivants ont fonctionné pour moi au moins, mais iptables peut être un peu délicat - si nécessaire, vous devez expérimenter un peu ici) :

~ # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
~ # iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

Si vous voulez utiliser iptables avec les mêmes paramètres même après un redémarrage, c'est une bonne idée d'utiliser le paquetage iptables-persistants pour l'installation - ceci sauvegardera et rechargera les entrées actuelles d'iptables.

Utilisation de Wireguard

En utilisant iptables, vous pouvez rediriger le trafic vers l'interface wireguard au lieu du périphérique tun0 de la connexion OpenVPN. Si une connexion filaire existe, la commande suivante affiche le nom de l'interface réseau :

~ # ip a

Dans ma configuration, l'interface est "wg0-client" - si vous voulez acheminer le trafic via cette interface, les règles iptables doivent être adaptées en conséquence :

~ # iptables -t nat -A POSTROUTING -o wg0-client -j MASQUERADE

Le défi jusqu'à présent est de trouver un service VPN approprié qui permette l'établissement d'une connexion Wireguard en ligne de commande. Quiconque connaît un service VPN Wireguard approprié est invité à le partager dans les commentaires - l'utilisation d'une application spéciale ne fonctionne généralement pas.

Configuration des terminaux

Paramètres IP pour l'utilisation de la passerelle OpenVPN
Paramètres IP pour l'utilisation de la passerelle OpenVPN

Les appareils iOS utilisent la passerelle OpenVPNSur les appareils finaux, l'adresse IP du Raspberry Pi doit maintenant être entrée comme routeur. Dans mon cas, il s'agit de 192.168.0.44 ; sur un appareil iOS 7, les paramètres ressemblent à ceux qui figurent sur la gauche. Dès que cela a été fait, tous les paquets de données (à l'exception de la résolution DNS, qui est toujours gérée par le routeur du réseau domestique) sont acheminés via le Raspberry Pi et de là via la connexion VPN - cela est facilement reconnaissable à la détermination de l'emplacement de par exemple. howismyip.comLa Suède en tant que pays.

Raspberry Pi 2 comme passerelle VPN

Speedtest Raspi 2 Passerelle VPN
Speedtest Raspi 2 Passerelle VPN

Avec le nouveau et nettement plus puissant Raspberry PI 2 Modèle B cette configuration peut bien sûr être réalisée exactement de la même manière. La vitesse dépend principalement du fournisseur de VPN utilisé - et du serveur auquel la connexion est établie. Avec un serveur en Suède et PureVPN comme fournisseur, 15 Mbit/s sont possibles (c'est-à-dire à peu près autant qu'une connexion DSL moyenne, les connexions vers les États-Unis sont beaucoup plus lentes : ici, un bon 6,5 Mbit/s est atteint. Pour Netflix, cependant, cela reste suffisant après quelques mises en mémoire tampon.

Afin d'accélérer la navigation sur les sites américains, j'ai également ajouté une fonction Cache DNS sur le Raspberry Pi 2 installé : pdnsd met en cache les requêtes DNS qui, autrement, seraient également envoyées en premier via la connexion VPN et assure ainsi une "expérience de surf" plus rapide lors de l'utilisation de la connexion VPN.

Raspi 2 : Trafic sur la connexion VPN lors du streaming Netflix
Raspi 2 : Trafic sur la connexion VPN lors du streaming Netflix

Vitesse de la passerelle OpenVPN et conclusion

Bien entendu, la vitesse de cette construction dépend de plusieurs facteurs : la vitesse de la connexion réseau du Raspberry Pi, la vitesse de la connexion VPN, la vitesse de la connexion DSL à Internet, la vitesse du WLAN. Dans mon scénario, un iPhone 5 connecté via un WLAN 2,4 GHz obtient un bon 6,7 Mbit/s en téléchargement via la passerelle Raspberry Pi et un peu moins de 600kb/s en upload. Au lieu d'IPredator, vous pouvez bien sûr utiliser n'importe quel autre fournisseur OpenVPN - par ex. PureVPN.

Comme toujours avec les instructions pour le Pi ou le Raspberry Pi 2, qui sont basées sur le Raspian standard, le tout pourrait également être réalisé avec un PC x86 - mais alors avec une consommation d'énergie nettement plus élevée.

[amazon box="B07TF5PPN"]

22 commentaires

  1. Merci pour cet article. Je l'ai installé sur mon Pi 2 sans aucun problème. Cependant, le VPN via la passerelle est extrêmement lent. Les pings vers google.com sont également de 400ms.
    Jusqu'à présent, j'ai pu exclure la charge du processeur et de la mémoire comme cause. Ce n'est pas le serveur VPN lui-même, une connexion directe depuis un autre ordinateur fonctionne très rapidement. Le Pi ne fonctionne que comme une passerelle sans VPN sans aucun problème.
    Avez-vous des conseils sur la façon de résoudre le problème ?

      1. J'ai commandé un Raspberry Pi 2. Je vais vérifier à nouveau et mettre à jour l'article. Je trouverai peut-être une configuration qui le permette à une vitesse raisonnable.

  2. Offre intéressante @PureVPN

    PureVPN offre un compte de 2 ans avec un SmartDNS gratuit pour 1,95 euros/mois pendant 2 ans.

    Pas de journaux.

    Elle compte plus de 500 serveurs dans 141 pays. (Jusqu'à 2 fois la vitesse des autres services VPN).

    Utilisation simultanée sur un maximum de 5 appareils.

    GARANTIE DE REMBOURSEMENT DE 7 JOURS.

    Cryptage de niveau militaire.

    Streaming sans censure avec SmartDNS

    Une excellente affaire 🙂

    https://www.purevpn.com/bestvpnprovider-special.php

  3. Ce fil de discussion est un peu plus ancien, mais j'ai encore deux questions.

    En supposant que je connecte l'ordinateur portable à mon fournisseur de réseau privé virtuel (VPN) via la RPi, mais pas le reste des appareils connectés au réseau, puis-je encore accéder aux partages du réseau ?
    L'ordinateur portable est donc toujours régulièrement connecté au réseau et seule la connexion vers l'extérieur est sécurisée ?

    2. mon fournisseur de VPN ne me fournit pas un fichier .conf mais un fichier .ovpn. Avez-vous une idée de la manière dont on peut intégrer cela ?

    Merci et salutations

    1. 1. seules les connexions à l'internet doivent être acheminées via le RPi. Tout le reste du local devrait rester normal.

      2. le fichier .ovpn est votre fichier .conf...

  4. Probablement une question très stupide et je vais être défoncé tout de suite ( 😉 ), mais :

    Pas besoin d'un deuxième adaptateur LAN, comme dans d'autres configurations de routeurs ?

    1. Non, tout se fait via une interface. L'"interface" externe obtient son IP via OpenVPN, en interne le LAN reste accessible via l'adresse habituelle.

      Mais bien sûr, cela fonctionnerait aussi avec deux interfaces, par exemple avec une clé USB WLAN.

  5. J'ai tout mis en place et fonctionne, cependant :

    "avec la commande openvpn -config /etc/openvpn/my-config.conf une connexion VPN est établie", "OpenVPN peut maintenant être activé régulièrement via /etc/init.d/openvpn start et démarre aussi automatiquement après un reboot".

    Malheureusement, ce n'est pas le cas. Dans mon cas, c'est le fichier /etc/openvpn/vpn.conf qui n'est évidemment pas utilisé, même si je l'entre dans /etc/default/openvpn sous AUTOSTART="vpn". Que dois-je faire ? (Pour le moment, je dois lancer manuellement le VPN, encore et encore).

    BTW : Est-il possible de configurer OpenVPN pour utiliser plus d'un cœur de processeur ?

    Astuce : Les transferts de port peuvent également être définis via iptables : par exemple, "iptables -t nat -I PREROUTING -i tun0 -p tcp -dport 10000 -j DNAT -to-destination 192.168.178.100".

    1. Essayez d'enregistrer le fichier de configuration avec l'extension .ovpn. Il se peut qu'il ne reconnaisse pas le fichier proprement autrement ; j'ai fait cette observation avec une configuration différente. Si cela fonctionne, je mettrai à jour les instructions en conséquence.

  6. Aloha,

    désolé d'avoir "abusé" de la fonction commentaire, mais ...

    Est-ce que quelqu'un a pu mettre en place avec succès des transferts de port via iptables en utilisant la configuration décrite ci-dessus et pourrait m'aider avec ma configuration si nécessaire ?

    [email protected]

  7. L'ensemble fonctionne assez bien pour moi avec le Pi 2, j'obtiens entre 10 et 20 Mbit. J'utilise l'ensemble pour mon WLAN partagé. Mon ordinateur, qui ne se connecte PAS via votre Pi, fait des choses étranges depuis lors. Soit le site web ne s'ouvre qu'au 2ème ou 3ème appel, soit certaines des photos ne se chargent pas. J'ai eu des problèmes similaires auparavant lorsque mon Synology NAS était censé remplir exactement la même fonction.

    1. Alors quelque chose interfère probablement déjà. Êtes-vous sûr qu'aucun paramètre DNS ne se chevauche ?

  8. Bonjour Falk,

    Pouvez-vous dire exactement ce que définit iptables avec ces commandes définies dans TuT ?

    Puis-je également annuler tous les changements ?

  9. Que dois-je faire si je ne veux pas avoir de passerelle vpn mais que seul le trafic sortant du raspberry doit passer par le prestataire vpn ?

    Le RAS est connecté à mon routeur (internet) via lan.

    1. @moejoe
      Il suffit d'installer OpenVPN et de le démarrer avec le fichier de configuration inchangé (.ovpn).

  10. Vous pouvez tout défaire avec iptables - - flush. Il ne vous reste plus qu'à désinstaller iptables-persistent.

    1. En fait, cela ne devrait pas être si compliqué, ce n'est pas une mauvaise idée. Le problème ici est plus susceptible de consister à trouver un service VPN approprié qui prend en charge Wireguard sans applications spéciales, etc.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *