Chargement en cours

Transformer son Ubuntu en Routeur VPN Hotspot pour OPNsense

Bienvenue dans ce retour d’expérience technique ! L’objectif était clair : créer un Hotspot Wi-Fi sur Ubuntu où tout le trafic des clients connectés est routé de manière transparente vers un tunnel WireGuard géré par un pare-feu OPNsense distant.

Voici comment nous avons dompté le routage Linux et les règles de pare-feu pour que tout fonctionne (sans casser les sites web hébergés sur l’OPNsense !).


🏗️ L’Architecture du Réseau

Le setup repose sur trois piliers :

  1. Le LAN OPNsense : Réseau 10.10.10.0/24.
  2. Le Tunnel WireGuard : Point-à-point entre Ubuntu (10.0.0.2) et OPNsense (10.0.0.1).
  3. Le Wi-Fi LAN (Hotspot) : Géré par Ubuntu sur le réseau 10.42.0.0/24.

🛠️ Étape 1 : Le Routage sur Ubuntu

Le plus gros défi a été d’empêcher Ubuntu d’utiliser sa connexion Internet locale pour le hotspot. Nous avons utilisé le Policy Based Routing (PBR).

Création d’une table de routage dédiée

Pour que les clients Wi-Fi utilisent le tunnel sans impacter le reste du PC Ubuntu :

Bash

# On crée une table de routage (200) pour le hotspot
sudo ip rule add from 10.42.0.0/24 table 200
sudo ip route add default dev wg0 table 200

Le nettoyage des routes conflictuelles

Nous avons dû supprimer les routes « fantômes » qui tentaient d’envoyer le trafic du LAN OPNsense vers la box internet locale :

Bash

sudo ip route del 10.10.10.0/24 via 192.168.99.78 dev enp2s0

🛡️ Étape 2 : Sécurité et Forwarding (UFW)

Pas question de désactiver le pare-feu ! Nous avons configuré UFW pour qu’il accepte de jouer le rôle de routeur.

  1. Activation du Forwarding : Dans /etc/default/ufw, nous avons passé DEFAULT_FORWARD_POLICY à "ACCEPT".
  2. Règles de transit :Bashsudo ufw route allow in on wlp1s0 out on wg0 sudo ufw route allow in on wg0 out on wlp1s0
  3. Le piège du RP Filter : Linux rejette les paquets s’il juge le chemin retour illogique. Nous avons dû assouplir le filtrage :Bashsudo sysctl -w net.ipv4.conf.all.rp_filter=0

🧱 Étape 3 : Configuration OPNsense

Côté serveur, deux réglages ont sauvé le projet :

  • Allowed IPs : Il a fallu déclarer le réseau du hotspot (10.42.0.0/24) dans le Peer Ubuntu pour que WireGuard accepte les paquets.
  • NAT Outbound : Pour que les clients Wi-Fi aient Internet, OPNsense doit effectuer le NAT de leurs requêtes vers son propre WAN.
  • Correction des sites web : En retirant le 0.0.0.0/0 des Allowed IPs sur l’OPNsense, nous avons rendu aux sites web leur accès au WAN normal, évitant qu’ils ne tentent de répondre via le tunnel.

📱 Étape 4 : Le « Fix » pour les applications mobiles

Certaines applications (Instagram, Banques, Teams) « moulinaient » sans charger. Le coupable ? Le MTU. Les paquets VPN sont plus lourds.

La solution : Réduire la taille maximale des paquets (MSS Clamping) à 1300 sur l’interface WireGuard d’OPNsense. Cela force les serveurs à envoyer des paquets plus petits qui rentrent parfaitement dans le tunnel.


📝 Conclusion

Ce setup est désormais un véritable pont réseau transparent. Le PC client connecté au Wi-Fi d’Ubuntu est vu par l’OPNsense comme s’il était dans une pièce à côté, tout en conservant une sécurité stricte sur chaque nœud.

Les points clés à retenir :

  • Le routage ne fait pas tout, le MSS Clamping est vital pour le Web moderne.
  • UFW peut rester actif, il suffit de lui apprendre à router.
  • Le NAT n’est pas obligatoire sur le client si le serveur connaît la route de retour !

C’était un projet complexe mais gratifiant. Si vous avez des questions sur le routage IP sous Linux ou WireGuard, n’hésitez pas !


Qu’en penses-tu ? Est-ce que ce résumé reflète bien toutes les étapes techniques que nous avons traversées ?