Skip to main content

Configuration Serveurs

Serveur OVH

# =============================================================================
# WireGuard — VPS OVH (Hub du mesh)
# IP WireGuard : 10.0.0.1/24
# Rôle         : hub de signalisation + exit node OVH + Portainer UI
# Version      : 2 — LAN cloisonnés par iptables FORWARD
# =============================================================================
#
#   - Les LAN (192.168.1.0/24 et 192.168.2.0/24) ne font pas parti des AllowedIPs
#     des peers serveurs. OVH ne "connaît" plus les LAN des sites physiques.
#   - La politique FORWARD passe à DROP par défaut : seul le trafic
#     explicitement autorisé est routé. Tout le reste est silencieusement jeté.
#   - Conséquence : un client connecté à OVH ne peut PAS atteindre
#     192.168.1.x ou 192.168.2.x, même s'il connaît l'adresse.
#
# PRÉREQUIS :
#   - Port UDP 51820 ouvert dans le firewall OVH (manager OVH > Security Groups)
#   - Vérifier le nom de l'interface réseau : ip link show
#     (peut être eth0, ens3, ens4, enp1s0 selon le VPS)
#
# =============================================================================

[Interface]
Address    = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <CLE_PRIVEE_OVH>

PostUp = \
  sysctl -w net.ipv4.ip_forward=1; \
  \
  # --- Masquerading ---
  # Permet aux clients exit-node OVH de sortir sur internet
  # avec l'IP publique du VPS comme adresse source.
  iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; \
  \
  # --- Politique FORWARD : DROP par défaut ---
  # Tout paquet cherchant à traverser ce serveur (wg0 → eth0 ou eth0 → wg0)
  # est refusé SAUF si une règle ci-dessous l'autorise explicitement.
  # C'est le verrou de sécurité principal.
  iptables -P FORWARD DROP; \
  \
  # --- Trafic établi / relatif ---
  # Autorise les réponses aux connexions déjà ouvertes (TCP ACK, UDP retour…).
  # Sans cette règle, même les connexions autorisées seraient bloquées en retour.
  iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT; \
  \
  # --- Client ovh-exitnode (10.0.0.10) ---
  # Peut sortir sur internet via eth0 (exit node OVH).
  # Ne peut PAS atteindre 192.168.1.x ou 192.168.2.x :
  # aucune règle ne l'y autorise, le DROP s'applique.
  iptables -A FORWARD -s 10.0.0.10/32 -o eth0 -j ACCEPT; \
  \
  # --- Client private-only (10.0.0.40) ---
  # Accès au mesh (10.0.0.0/24) uniquement, pas d'internet, pas de LAN.
  # Il peut joindre 10.0.0.1, 10.0.0.2, 10.0.0.3 mais rien au-delà.
  iptables -A FORWARD -s 10.0.0.40/32 -d 10.0.0.0/24 -j ACCEPT; \
  \
  # --- Serveurs Marseille et Albi (trafic inter-mesh) ---
  # Autorisés à communiquer avec les autres IPs WireGuard (10.0.0.x).
  # Pas d'accès aux LAN distants via OVH : les LAN ne sont pas dans
  # les AllowedIPs des peers (voir blocs [Peer] ci-dessous), donc
  # WireGuard lui-même refuse de router ces paquets avant même iptables.
  iptables -A FORWARD -s 10.0.0.2/32 -d 10.0.0.0/24 -j ACCEPT; \
  iptables -A FORWARD -s 10.0.0.3/32 -d 10.0.0.0/24 -j ACCEPT

PostDown = \
  iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; \
  iptables -P FORWARD ACCEPT; \
  iptables -F FORWARD


# =============================================================================
# PEER : Serveur Marseille
# =============================================================================
[Peer]
PublicKey = <CLE_PUBLIQUE_MRS>

# OVH n'accepte pas de router des paquets à destination du LAN de Marseille.
# Seule l'IP WireGuard de MRS est déclarée : les clients OVH ne peuvent
# pas atteindre le LAN de Marseille en passant par ce tunnel.
AllowedIPs = 10.0.0.2/32

Endpoint            = <IP_PUBLIQUE_MRS>:51820
PersistentKeepalive = 25


# =============================================================================
# PEER : Serveur Albi
# =============================================================================
[Peer]
PublicKey = <CLE_PUBLIQUE_ALBI>

# Même principe : les clients OVH ne peuvent pas atteindre le LAN de Albi.
AllowedIPs = 10.0.0.3/32

Endpoint            = <IP_PUBLIQUE_ALBI>:51820
PersistentKeepalive = 25


# =============================================================================
# PEER : Client ovh-exitnode
# Tout le trafic internet sort par OVH. IP publique = VPS OVH.
# =============================================================================
[Peer]
PublicKey  = <CLE_PUBLIQUE_CLIENT_OVH_1>
AllowedIPs = 10.0.0.10/32


# =============================================================================
# PEER : Client private-only
# Accès réseau mesh uniquement (10.0.0.x). Aucun exit node, aucun LAN.
# =============================================================================
[Peer]
PublicKey  = <CLE_PUBLIQUE_CLIENT_PRIVATE_1>
AllowedIPs = 10.0.0.40/32


# =============================================================================
# NOTE : Les clients mrs-exitnode (10.0.0.20) et albi-exitnode (10.0.0.30)
# se connectent DIRECTEMENT à Marseille et Albi respectivement.
# Ils ne passent pas par OVH → pas de bloc [Peer] ici pour eux.
# =============================================================================

 

Serveur Albi & Marseille

# =============================================================================
# WireGuard — Serveur physique Albi & Marseille (Spoke)
# Fichier : /etc/wireguard/wg0.conf  (ou monté dans le conteneur Docker)
# IP WireGuard : 10.0.0.3/24 & 10.0.0.2/24
# LAN local    : 192.168.2.0/24 & 192.168.1.0/24
# Rôle         : spoke du mesh + exit node Albi ou+ Mrsaccès LAN Albi + Portainer Agent
+# sauvegardesVersion      : 2 — LAN cloisonné, accessible uniquement aux clients Albi ou Marseille
# =============================================================================
#
# RÈGLE DE SÉCURITÉ FONDAMENTALE :
#   192.168.2.0/24 est accessible UNIQUEMENT depuis :
#     - 10.0.0.30/32  (client albi-exitnode)
#     - 10.0.0.31/32  (client albi-lan)
#   Tout autre peer (OVH, Marseille, clients exit-MRS, private-only…)
#   est bloqué par iptables FORWARD.
#
# PRÉREQUIS SUR LALES BOX :
#   1. Port forwarding UDP 51820 → IP_LOCALE_SERVEUR_ALBI (ex: 192.168.2.100)
#      (dans l'interface admin de la box)
#   2. Route statique pour l'accès LAN via VPN :
#      Destination : 10.0.0.0/24 — Passerelle : 192.168.2.100 (IP locale du serveur)
#   Même2. logiqueRoute que pour Marseille : sans cette route, les appareils
#      du LAN d'Albi ne peuvent pas répondre aux clients VPN.
#
# GÉNÉRATION DES CLÉSstatique :
#        wgDestination genkey: |10.0.0.0/24
tee#        /etc/wireguard/privatekeyPasserelle  |: wg pubkey > /etc/wireguard/publickey192.168.2.100
#
# =============================================================================

[Interface]
Address    = 10.0.0.3/24
ListenPort = 51820
PrivateKey = <CLE_PRIVEE_ALBI>

#PostUp Même= configuration\
  desysctl routage-w quenet.ipv4.ip_forward=1; Marseille.\
  \
  # PermetMasquerading à Albi d'être un: exit node (IPAlbi publique+ = box Albi)
# et de rendre sonaccès LAN accessible auxpour clients VPN connectés à Albi.
PostUp   =autorisés
  iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; \
  \
  # Politique FORWARD : DROP par défaut
  iptables -P FORWARD DROP; \
  \
  # Trafic établi / relatif (réponses aux connexions autorisées)
  iptables -A FORWARD -im wg0conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT; \
  \
  # --- Client albi-exitnode (10.0.0.30) ---
  # Accès internet complet (exit node Albi) + accès LAN Albi.
  iptables -A FORWARD -s 10.0.0.30/32 -o eth0 -j ACCEPT; \
  iptables -A FORWARD -os wg010.0.0.30/32 -d 192.168.2.0/24 -j ACCEPT; \
  sysctl\
  # -w-- net.ipv4.ip_forward=1Client albi-lan (10.0.0.31) ---
  # Accès LAN Albi uniquement, sans exit node (split tunnel).
  iptables -A FORWARD -s 10.0.0.31/32 -d 192.168.2.0/24 -j ACCEPT; \
  \
  # --- Serveur OVH (10.0.0.1) — mesh uniquement ---
  # Peut joindre 10.0.0.3 pour le mesh, pas le LAN d'Albi.
  iptables -A FORWARD -s 10.0.0.1/32 -d 10.0.0.3/32 -j ACCEPT; \
  \
  # --- Serveur Marseille (10.0.0.2) — sauvegardes uniquement ---
  # Peut joindre 10.0.0.3 pour les sauvegardes rsync/SSH.
  # Ne peut PAS atteindre 192.168.2.x.
  iptables -A FORWARD -s 10.0.0.2/32 -d 10.0.0.3/32 -j ACCEPT; \
  \
  # Tout le reste → DROP implicite

PostDown = \
  iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; \
  iptables -DP FORWARD -i wg0 -j ACCEPT; \
  iptables -DF FORWARD -o wg0 -j ACCEPT


# =============================================================================
# PEER : VPS OVH (hub du mesh)
# =============================================================================
[Peer]
PublicKey = <CLE_PUBLIQUE_OVH>
Endpoint  = <IP_PUBLIQUE_OVH>:51820

# AllowedIPsOVH :route symétriquevers Albi les paquets destinés à la config Marseille, miroir exact:
#   10.0.0.1/3/32     → IP WireGuard d'OVHAlbi
#   10.0.0.10/32    → Clientsclient exit-node OVHovh-exitnode
#   10.0.0.40/32    → Clientsclient réseau privé seul
#
#   Les clients exit-node Marseille (10.0.0.20/32) ne sont PAS listés ici :
#   leur trafic retour passe par le tunnel direct Albi↔Marseille, pas par OVH.private-only
AllowedIPs          = 10.0.0.1/32, 10.0.0.10/32, 10.0.0.40/32
PersistentKeepalive = 25


# =============================================================================
# PEER : Serveur Marseille (connexiontunnel directeP2P P2P)
# Tunnel direct Albi ↔ Marseille pour les sauvegardes.
# Le trafic rsync entre 10.0.0.2 et 10.0.0.3 ne touche jamais OVH :
# il est chiffré par WireGuard et va directement d'une box à l'autre.direct)
# =============================================================================
[Peer]
PublicKey = <CLE_PUBLIQUE_MRS>
Endpoint  = <IP_PUBLIQUE_MRS>:51820

# AllowedIPsAlbi :ne route pas vers le LAN de Marseille.
# Les sauvegardes utilisent 10.0.0.2/322 (IP WireGuard du serveur Marseille
#   192.168.1.0/24    → LAN local de Marseille (accessible depuis Albi)MRS).
AllowedIPs          = 10.0.0.2/32, 192.168.1.0/2432
PersistentKeepalive = 25


# =============================================================================
# PEER : Client exit-albi-exitnode (exit node Albi+ (profilLAN albi-exitnode)Albi)
# =============================================================================
[Peer]
PublicKey  = <CLE_PUBLIQUE_CLIENT_ALBI_1>
AllowedIPs = 10.0.0.30/32


# =============================================================================
# PEER : Client albi-lan (LAN Albi (profiluniquement, albi-lansplit — peut être le même appareil
# avec un profil client différent, ou un appareil distinct)tunnel)
# =============================================================================
# [Peer]
#
PublicKey  = <CLE_PUBLIQUE_CLIENT_ALBI_LAN>
#
AllowedIPs = 10.0.0.31/32