Utiliser Raspberry en client VPN

Bonjour à tous,

J’utilise Cyberghost vpn.
Je ne peux pas le paramétrer dans ma livebox pour l’utiliser sur mon réseau local.
Est-ce possible d’utiliser un Raspberry en tant que client VPN et de connecter les appareils qui ne supportent pas nativement Cyberghost, directement sur le Raspberry?
Vous le comprendrez, je n’y connais pas grand chose, mais du coup, avant de me lancer je voudrais juste savoir si c’est techniquement possible.
Si c’est possible, est-ce qu’il faut absolument un Raspberry avec 2 prises Ethernet (une pour qu’il se connecte au travers de la livebox et une pour que les autres appareils se connectent )?

Merci d’avance.
Bonne journée.

Bonjour,

Avant toute chose bien se renseigner de l’utilisation et de l’apport réel d’un VPN pour tous les équipements d’une habitation, et pas sur les sites des vendeurs de VPN, forcément! Personnellement je me pose encore la question. D’expérience, j’ai été bani de certains services car mon IP était celle aussi utilisée par des hackers. Et oui les hackers en herbe (et il y en a beaucoup) utilisent ces mêmes services et se présentent de fait avec les mêmes adresses IP.

Il faut savoir que l’utilisation d’un VPN réduit le débit réseau. Le fait de passer par un routeur comme un PI ralenti encore le débit. De ma vision, pour utiliser le PI nativement en routeur, il faut configurer 2 réseaux le filaire et le WIFI. Du coup tous les équipements doivent se connecter via le WIFI, qui ralenti encore le débit. Dans ce cas, si certains équipement n’utilisent pas le WIFI, il faut un autre routeur filaires vers WIFI. Bref ça devient une usine à gaz. Il y a forcément d’autres possibilités…

Pour jouer et apprendre les notions de réseau c’est un excellent exercice. Pour l’utiliser de façon permanente, je suis beaucoup plus réservé.

A+

1 « J'aime »

Bonjour,
Merci pour tes informations. C’est bien ce que je pensais… s’il n’y a pas moyen d’avoir la sortie par un Ethernet c’est bien moins interressant.

hello,

si tu veux deux ethernet sur un raspberry il te faut un adaptateur USB vers ETHERNET
dans les 10€ chez amasse zone de préférence en USB 3.

j’utilise un PI4 2Go comme routeur (firewall + DNS, sans VPN) avec une interface TP-LINK UE300 et j’ai pas senti de différence de débit. ( mais clairement le traitement du VPN demande plus de ressource…)

le lsusb donne :
ID 2357:0601 TP-Link UE300 10/100/1000 LAN (ethernet mode) [Realtek RTL8153]

de mémoire :roll_eyes: l’interface est directement reconnue par le système…

Merci pour l’info, cela reste bien interressant. Je vais donc commencer à étudier un petit système basé sur Raspberry. Merci bien.

Bonjour,
Je reviens vers vous car, j’ai sauté le pas, et j’ai acheté un Raspberry pi 4B 2go, ainsi que la même interface que @bof pour obtenir une deuxième prise ethernet.
pour l’instant, j’ai installé raspberry pi os lite, openvpn et j’ai paramétré cyberghost en suivant le tuto ici qui n’est qu’une traduction du site officiel de cyberghost. Je suis dans une configuration sans écran, en gestion par ssh depuis mon pc sous ubuntu.
j’ai plusieurs problèmes qui se posent:

  • je n’arrive plus a faire un ping sur n’importe quel site. la commande ‹ curl ident.me › me renvoie bien une ip du pays que j’ai choisi avec cyberghost. J’arrive d’ailleurs, à télécharger des mises à jour, ou installer de nouveaux programmes donc je suis bien connecté à internet.

  • autre probleme, quand je branche l’interface usb-ethernet, il doit y avoir un conflit entre les 2 ethernet: je vois bien l’interface dans lsusb, mais si je fais un ‹ ip addr show › (ou tout autre commande réseau, comme un ping ou un curl) ça reste bloqué avec un curseur clignotant et la commande n’abouti que quand je débranche l’interface…

Je suis preneur de toute information ou conseil, car je ne suis pas calé du tout, et je ne sais plus par quel bout le prendre.
Merci d’avance.

je tiens a préciser que je ne maîtrise pas les VPN … cependant si tu veux transformer ton Rpi en passerelle VPN pour ton autre PC, il faudra d’abord le transformer en passerelle ( on va dire router )

Eth0 : connecté à la box il reçoit l’adresse du DHCP de la box.
Eth1 : l’interface usb/ethernet connecté au PC local

pour que ça fontionne il faut :
. activer le forwarding (pour permettre le passage entre eth0 et eth1)
sudo vi /etc/sysctl.d/routed-ap.conf
avec dedans:

`# activer forwarding
net.ipv4.ip_forward=1`

ensuite :
. soit installer un serveur DHCP
mettre Eth1 en adresse fixe ( le PC reste en DHCP)

la deux écoles soit dans /etc/dhcpcd.conf de la forme

si la box est en 192.168.1.1 on pourra créer un sous réseau pour ton intranet en 192.168.2.0/24

# adresse fixe eth1
interface eth1
static ip_address=192.168.2.1

soit dans /etc/network/interfaces.d/eth1

auto eth1 
    iface eth1 inet static
    address 192.168.2.1/24

installer le serveur DHCP
sudo apt install isc-dhcp-server
( un peu de doc ici : isc-dhcp-server [Wiki ubuntu-fr] )

. soit mettre Eth1 et la carte du PC en adresse fixe

la solution que j’utilise pour le forwarding c’est en installant UFW et en modifiant le fichier /etc/default/ufw en changeant la ligne DEFAULT_FORWARD_POLICY =`"ACCEPT"
ds /etc/ufw/sysctl.conf
net/ipv4/ip_forward=1

et en ajoutant a la fin du fichier /etc/ufw/before.rules après le dernier COMMIT déjà présent à la fin de ce fichier, la règle pour le NAT :

`# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic through eth0
-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

# End each table with the 'COMMIT' line or these rules won't be processed
COMMIT`

les autres règles pour UFW sont expliquées là : ufw [Wiki ubuntu-fr]

voilà j’espère avoir pas oublier des trucs ! il y a d’autres façon de faire ( utiliser un bridge,ne pas utiliser de règle NAT, etc.)

après comme indiqué au début je ne sais pas comment s’intègre le VPN dans ce RPI/routeur mais si eth0 se connecte a l 'internet et si c’est l’interface du VPN ça devrait fonctionner pour les PC sur eth1…

tu trouveras peut être des info utiles ici :https://support.cyberghostvpn.com/hc/en-us/articles/213811185-Read-me-first-How-to-use-CyberGhost-on-a-Router-Raspberry-Pi-Synology-NAS-Sat-Receiver

Merci @bof pour ton aide.

J’ai beaucoup galéré, mais j’ai réussi à faire fonctionner mon raspi en routeur vpn avec une entrée filaire et une sortie filaire aussi. mon débit est très bon et je ne ressens pas de perte de performances à travers le routeur.

Par contre, j’ai du adapter tes explications car, au départ je n’arrivais à rien.
Tout d’abord j’ai remis une install Raspi Os sans vpn et j’ai essayé de suivre tes explications, mais j’avais un soucis d’installation d’isc-dhcp-server (des messages en rouge lors de l’install), du coup, j’ai tout supprimé et installé ubuntu server sur la machine.
j’ai du adapter la mise en ip fixe car ubuntu utilise netplan avec des fichiers en yaml, mais ça va.
Ensuite, pour le vpn, j’ai encore suivi le tuto que j’indiquais dans mon message d’hier, qui correspond à une traduction du site de cyberghost.
En fait, openvpn crée une interface réseau qui lui est propre en tun0.
on la vois quand on fait ip addr show
Il m’a suffit de remplacer eth0 par tun0 dans le fichier /etc/ufw/before.rules dans la ligne :

-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

et j’ai bien eu mon tunnel créé entre mon pc branché sur l’adaptateur usb-ethernet (eth1) et mon adresse ip dans un pays exotique (choisi dans les paramètres de mon vpn).

J’ai tout de même un petit soucis dans cette configuration. mon adaptateur n’est pas reconnu au démarrage du Raspi. Il suffit de démarrer, débrancher puis rebrancher l’adaptateur, et hop, tout se met à fonctionner.
Si tu connais une astuce pour que celui-ci soit détecté sans avoir à y toucher, je suis preneur.

Comme je suis un peu têtu, et que j’aime beaucoup apprendre, je crois que je vais retenter avec un Raspberry pi os, mais il va falloir que je règle en premier le problème d’adaptateur usb-ethernet qui sous raspi os semble rentrer en conflit avec l’eth0 et bloque celui-ci quand il est branché.

Je compléterais mon sujet quand j’aurais réussi, au cas où cela pourrait intéresser quelqu’un.

ça pourrait vouloir dire qu’il y a peut être un problème dans l’ordre de démarrage ou qu un service démarre avant qu’un autre qu’il lui est nécessaire ne soit pas finit.

de l info là : Running Services After the Network Is Up

le /var/log/syslog contient peut être des infos utiles ( dmesg|less )

Alors, j’ai un système qui fonctionne parfaitement. Je vais détailler comment j’ai procédé.
On ne sait jamais, cela pourrait aider quelqu’un.

Donc, je pars d’un Raspberry Pi 4B 2Go, qui est donc branché sur une prise de ma livebox (qui a comme IP 192.168.1.1). Je branche mon adaptateur TP-LINK UE300 sur une des prises USB 3.0. Je travaille avec SSH (donc sans écran) en me connectant avec un PC sous Ubuntu.

J’ai installé Raspberry Pi OS (Legacy) Lite. C’est la version Bullseye (donc Débian 11) car j’ai tenté avec Bookworm (donc Débian 12) mais j’avais toujours un soucis, dès que je branchais l’adaptateur.
Installation au moyen de l’application Raspberry Pi Imager, sur une carte micro-sd.

Il faut créer un fichier ssh pour indiquer au Raspi d’activer le ssh à l’installation (il est désactivé par défaut)
Dans un terminal ouvert dans la partition boot de la carte micro-sd (bien à la racine de boot, et non pas dans le fichier boot de la partition root):

sudo nano ssh

Ne rien écrire et faire CTRL+O puis CTRL+X
Le fichier est créé, il ne reste plus qu’à démonter la carte sd et l’installer dans le raspi, puis démarrer.
On attend un peu pour être sûr qu’il a bien démarré (j’ai utilisé l’appli fing que j’avais sur mon portable pour voir quand l’ip du raspi était bien connectée).
Après le démarrage, il faut connaitre l’IP du raspi (j’ai fixé celle-ci dans les paramètres de ma Livebox, donc aucun soucis).

ssh pi@192.168.1.100 (c’est l’adresse du raspi que j’avais forcée); le mot de passe par défaut du Raspi est :

raspberry

il faut valider la connexion la première fois:

yes

Il faut changer son mot de passe:

passwd

Il demande d’abord l’actuel puis le nouveau mdp 2 fois.
Ensuite il faut configurer le raspi:

sudo raspi-config
  • 8 Update (pour mettre à jour Raspi-config)

  • 6 Advanced:

    • A1 pour maximiser l’espace utilisé sur la micro-SD
  • 5 Localisation:

    • L1: Choisir fr_FR.UTF-8 UTF8; puis le re-sélectionner dans la 2ème page
    • L2: Choisir Europe puis Paris
    • L3: juste à valider (rien à choisir).
    • L4: Choisir FR
  • faire Tabulation pour aller sur FINISH. Le raspi redémarre. (on doit donc attendre puis se reconnecter. Bien penser que le mot de passe a été modifié :wink:).

Faire ensuite les mises à jour

sudo apt update && sudo apt upgrade -y

Une fois fini, j’ai redémarré.

sudo reboot

On se reconnecte, puis on installe les applications dont on va avoir besoin

sudo apt-get install openvpn openssl openresolv ufw

A partir de là, je reprends ce que m’a expliqué @bof dans son message du 03/11:
J’active l’ip forwarding

sudo nano /etc/sysctl.d/routed-ap.conf

coller dedans

# activer forwarding
net.ipv4.ip_forward=1

CTRL+O, CTRL+X

J’ai utilisé la methode de l’ip fixe sur le raspi et sur le pc qui est branché sur l’adaptateur Ethernet:

sudo nano /etc/network/interfaces.d/eth1

Coller dedans

auto eth1 
    iface eth1 inet static
    address 192.168.2.1/24

CTRL+O, CTRL+X

sudo nano /etc/default/ufw

Rechercher DEFAULT_FORWARD_POLICY ="DROP" et la changer en DEFAULT_FORWARD_POLICY ="ACCEPT"
CTRL+O, CTRL+X

sudo nano /etc/ufw/sysctl.conf

Enlever le # devant la ligne net/ipv4/ip_forward=1
CTRL+O, CTRL+X

sudo nano /etc/ufw/before.rules

Rajouter à la fin du fichier, juste après le dernier COMMIT:

# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic through eth0
-A POSTROUTING -s 192.168.2.0/24 -o tun0 -j MASQUERADE

# End each table with the 'COMMIT' line or these rules won't be processed
COMMIT

CTRL+O, CTRL+X

J’ai aussi autorisé le SSH dans ufw car la première fois, je n’ai plus pu me reconnecter par ce biais (obligé de tout recommencer):

sudo ufw allow ssh

ou

sudo ufw allow from 192.168.1.3/24  to any port 22

Remplacer l’adresse 192.168.1.3 par celle du pc qui doit commander le raspi
activer le parefeu ufw

sudo ufw enable

Ensuite il faut paramétrer le vpn.
Il faut suivre le tuto de cyberghost VPN (c’est ce que j’utilise comme vpn) ou cette page en francais.
Puis:

sudo reboot

une fois que tout est redémarré, se connecter, et tester l’adresse ip pour savoir si on est bien situé dans le pays exotique qu’on souhaitait:

curl ident.me

On peut aussi regarder en faisant:

ip addr show

une interface réseau tun0 qui correspond au tunnel vpn qui s’est créée et c’est à partir d’elle qu’on fait de l’ip forwarding vers eth1
Ensuite, sur le pc qui se connectera à travers le vpn, il faut paramétrer en ip fixe (avec une ip 192.168.2.X, avec X au choix sauf 0 et 1 :wink:)et indiquer comme ip de passerelle 192.168.2.1 (l’IP de la prise eth1 qui est l’adaptateur USB-ETHERNET).
Une fois connecté, on peut tester si tout s’est bien passé en allant sur https://www.whatismyip.com/ et voir en toutes lettres sa localisation.

J’espère que cela pourra aider… Si j’ai commis des erreurs ou que cela peut être amélioré ou optimisé, je suis toujours preneur d’informations…