URL: https://linuxfr.org/forums/linux-general/posts/auto-hebergement-derriere-cgnat-et-openvpn-avec-connexion-internet-d-un-tiers Title: Auto-hébergement derrière CGNAT et OpenVPN avec connexion internet d'un tiers Authors: ROUGEXIII Date: 2025年05月12日T10:13:24+02:00 License: CC By-SA Tags: vpn, openvpn et lxc Score: 3 Bonjour la compagnie 👋, Je lance aujourd'hui une bouteille à la mer. Bien que je n'avais plus le temps de faire autre chose que les mises à jour sur mon petit serveur auto-hébergé à la maison, celui-ci était bien utilisé, notamment par ma famille que j'avais (difficilement) réussi à convaincre de basculer sur mon serveur de messagerie matrix (avec en complément un bridge whatsapp) Ma ligne internet est coupée depuis 5 jours 🥵 et la réparation via le FAI pourrait désormais ne pas avoir lieu avant la fin du mois 😱... Une box 4G m'a été prêtée mais évidement pas possible d'attaquer l'IP publique de cette box 4G pour atteindre le serveur. Depuis j'essaye de mettre en place un VPN pour utiliser la connexion internet d'un tiers habitant à proximité. J'ai réussi à installer un serveur temporaire OpenVPN chez lui et à établir la connexion depuis le réseau derrière la box 4G 👍️ 🆘 Si certains sont calés en iptables, nftables et OpenVPN, j'aurais besoin d'un coup de mains pour que tout cela communique correctement. (ce n'est pas le cas actuellement). => Je suppose qu'il faut créer des routes, des ponts, d'autres choses? Avant la coupure cela fonctionnait ainsi:  Chaque service tourne dans un conteneur LXC unpriviligied indépendant. Alors je sais beaucoup de services étaient attaqués directement par leur port alors qu'il aurait mieux fallu passer par le reverse proxy. Mais bon je n'y suis pas arrivé pour tous les services et cela fonctionnait donc voilà :) Mise en place de la Box 4G, du VPN hébergé sur le serveur (à gauche ma maison avec le serveur qui fonctionnait jusque là; à droite la maison d'un tiers chez qui j'ai installé le serveur temporaire avec OpenVPN (également dans un conteneur LXC unprivilegied) (ce qui est entouré en vert est nouveau):  J'arrive à établir la connexion entre mon routeur OpenWRT (à gauche) ou un PC en 192.168.11.4 (à gauche) et le serveur OpenVPN (à droite):  Lorsque c'est fait, je peux me connecter en ssh aux différents conteneurs en 10.0.4.x de droite à travers le VPN. Par contre, je perds l'accès internet à gauche. Voilà il me reste à configurer tout ça, ajouter les règles pour le client extérieur attaquant l'IP publique de droite atteigne son service sur le serveur de gauche en passant par le VPN:  J'ai déjà sollicité l'aide précieuse du salon matrix auto-hébergement ce qui a notamment permis d'avoir le subnet du serveur temporaire de droite différent de celui gauche (10.0.4.0 vs 10.0.3.0) Il m'a été conseillé de faire les choses suivantes : Sens Entrée: - Une redirection vers le serveur Temporaire de chacun des port **=> Je pense que c'est fait (voir règles décrites sur le croquis 004)** - X Nat sur l'ip 10.0.3.11/32, sur l'ip 10.0.3.12/32 , sur l'ip 10.0.3.13/32 etc... ou voir pour faire du /31 / 30 etc... **=> C'était avant d'arriver à changer le subnet de lxcbr0 sur le serveur temporaire (de droite). Du coup il doit être possible de faire cela d'un coup pour l'ensemble du subnet? Je n'ai aucune idée de comment faire** - Routage du serveur temporaire de 10.0.3.11/32, 10.0.3.12/32, 10.0.3.13/32 etc.... via le serveur OpenVPN **=> Idem** - Vérifier l'ip forward sur le serveur OpenVPN et mettre le routage de 10.0.3.11/32, 10.0.3.12/32, 10.0.3.13/32 etc... vers le client OpenVPN **=> Idem** - Vérifier l'ip forward sur le client OpenVPN **=> Je suppose qu'il s'agit de ce que j'ai mis dans la config du client OpenVPN, je vais décrire ci-dessous mais je ne maîtrise pas** Sens Sortie: - Router sur les serveur 10.0.3.11/32, 10.0.3.12/32, 10.0.3.13/32 l'ip du serveur temporaire en /32 via le client OpenVPN **=> C'était avant d'arriver à changer le subnet de lxcbr0 sur le serveur temporaire (de droite). Du coup il doit être possible de faire cela d'un coup pour l'ensemble du subnet? Je n'ai aucune idée de comment faire** - Sur le client OpenVPN faire le routage l'ip du serveur temporaire en /32 **=> Idem** La config du serveur OpenVPN propre au réseau: port 1194 proto udp dev tun topology subnet client-config-dir ccd push "redirect-gateway def1 bypass-dhcp" client-to-client keepalive 5 60 cipher AES-256-GCM max-clients 5 max-routes-per-client 50 stale-routes-check 300 verify-client-cert require auth SHA512 tls-server tls-version-min 1.3 remote-cert-tls client crl-verify crl.pem push "block-outside-dns" user openvpn group openvpn mute 10 explicit-exit-notify 1 La config du client OpenVPN propre au réseau: client dev tun remote IPPubliquedutiers(droite) 1194 udp auth SHA512 cipher AES-256-GCM tls-client tls-version-min 1.3 remote-cert-tls server connect-retry 5 600 resolv-retry infinite nobind verb 3 mute 10 explicit-exit-notify 1 Voilà j'aimerais mettre en place tout ce qu'il faut pour que: - Le serveur derrière la Box 4G en CGNAT soit accessible de l'extérieur au travers du VPN - Avoir accès internet sur le réseau de gauche lorsque le VPN est connecté (via la Box 4G ou via la connexion du tiers, peu importe.) - Ne rien rater sur la sécurité du bouzin - Comprendre ce que je fais (oui parce que pour la mise en place du VPN j'ai suivi au moins 6 tutos avec certains points restés obscurs) En tout cas, déjà, merci beaucoup d'avoir lu jusque là ^^