Skip to main content

SwilaPass - Bypassing Firewall avec un RPi

Si tu veux faire ce tutoriel sur autre chose qu'un rpi, vérifie que le kernel (uname -r) est une version au délà de 4.19

J'ai mis à jour ce tutoriel pour fonctionner avec le projet wg-easy pour avoir une sympatique interface pour gérer les différents clients du VPN (et aussi simplifier l'installation)

Dans ce tutoriel:

  • Configurer un raspberry PI sans écran, clavier ou souris à connecter dessus (headless)
  • Ouvrir les ports d'un modem
  • Installation de Docker sur un serveur Debian/Raspbian
  • Installation de wg-easy sur Docker (wg-easy contient wireguard en plus d'une interface pour y accéder simplement)
  • Ajouter et configurer des clients Wireguard sur PC et téléphone

🧰 Matériel requis

  • Un ordinateur
  • Un raspberry Pi (dans ce cas, un Rpi4)
  • Une carte micro SD (et un adaptateur pour l'ordi si besoin)
  • Une alimentation pour le raspberry
  • Un cable éthernet pour une connection optimale

🔌 Préparation du raspberry

  • D'abord il faut installer l'OS de raspberry, dans ce cas ci, on va utiliser rpi-imager pour l'installer sur la micro SD et on va choisir Raspberry Pi OS Lite.
yay rpi-imager
sudo rpi-imager
  • Dans l'installateur, sélectionne Raspberry Pi OS Lite pour l'OS, puis ta carte micro SD, puis va dans les paramètres et configure le.
  • Brancher le Raspberry Pi et attendre un peu, ensuite se connecter via SSH: (avec le mot de passe choisi dans l'étape précédente)
ssh pi@raspberrypi

🌐 Préparation du réseau

  • Trouve l'addresse privée de ton raspberry pi
hostname -I
  • Va sur http://192.168.1.1 et connecte toi (les identifiants sont souvent écrit derrière le modem)
  • Va dans la redirection des ports et ajoute la règle suivante:
Protocol Début du port externe Fin du port externe Port interne Hôte interne Nom
UDP 53 53 53 <ip locale du raspberry pi> wireguard

🐳 Installation de Docker

Pour installer docker on peut utiliser les commandes suivantes :

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo   "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce
sudo systemctl start docker

📦 Installation de wg-easy

Maintenant vous pouvez simplement lançer le bloc de commandes suivant pour automatiquement installer Wireguard (une petite interface web en prime) :

read -p "Le mot de passe pour l'administration de votre VPN: " PASSWORD
sudo docker run --name wg-easy -d \
  -e WG_HOST=$(curl ifconfig.me) \
  -e PASSWORD=$PASSWORD \
  -e WG_PORT=53 \
  -e WG_DEFAULT_ADDRESS=192.168.215.x \
  -p 53:51820/udp -p 51821:51821/tcp \
  --restart unless-stopped \
  --cap-add=NET_ADMIN \
  --cap-add=SYS_MODULE \
  --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
  --sysctl="net.ipv4.ip_forward=1" \
  weejewel/wg-easy

Note: Vous devez juste être sur qu'il n'y a pas de firewall et si il y en a un, que les ports 53 et 51821 soit accessibles.

Je vous invite vivement de transformer cette commande en Docker-Compose comme vu dans 📝 Utiliser Docker Compose

⚙ Configurer les clients

Maintenant il suffit d'installer Wireguard sur son téléphone et son ordi. Puis d'aller sur le lien http://ADDR_LOCALE_DU_RPI:51821 et se connecter.

Une fois dans le panel, il suffit de cliquer sur "New" puis donner un nom à l'appareil. Ensuite on peut afficher son QR code ou son fichier de configuration qu'il suffit d'ajouter dans l'application.

Sur Linux il faut l'ajouter dans /etc/wireguard/wg0.conf en ayant wireguard-tools installé. Ensutite on peut lançer sudo systemctl start wg-quick@wg0 pour démarrer le VPN.

Et c'est tout !