Le site de TechnoLibre n'a qu'une adresse DHCP. Trois adresses fixes sont louees sur un VPS (le relais), qui repond a l'ARP pour elles et les route en /32 dans un tunnel WireGuard que la frontiere initie. Aucune traduction : l'adresse du client arrive intacte. - underlay.py : `tunnel: wireguard` dispense de VLAN ; role d'hote `relais`. - devis_opnsense.py : `opnsense_face_publique`. Les entrees publiques s'y posent avec reply-to ; les sorties des locataires du pool passent par le relais ; une redirection n'y vise plus `wanip`. Le devis de Chezlepro est identique au caractere pres. - appliquer_opnsense.py : replyto et gateway transmis et dans l'identite (seulement s'ils existent) ; le NAT sortant en mode automatic arrete l'application au lieu de dupliquer. - role serveur_relais, inventorie depuis la carte comme un hyperviseur ; cle privee dans la voute du site. Deploye, idempotent. - site_inventaire.py : les hyperviseurs ne sont plus filtres sur 192.168.11. ; site-appliquer charge la voute designee par SETOPS_UNDERLAY ; voute.py n'exige plus d'un locataire un secret du site. - prouver.py : P67 lit le plan par underlay.plan_site() ; P53 couvre la face publique. - Tests : test_underlay_tunnel, test_face_publique_relais, test_mode_nat_sortant. 95 preuves (make verifier), make test passe. CHANGELOG 144 et 145. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
24 lines
1.4 KiB
Django/Jinja
24 lines
1.4 KiB
Django/Jinja
# {{ ansible_managed }}
|
|
# Relais de {{ serveur_relais_site }} — role serveur_relais.
|
|
# Les adresses relayees sont ROUTEES dans le tunnel, jamais attribuees a l'interface
|
|
# {{ serveur_relais_interface_publique }} : le VPS repond seulement a l'ARP de son hebergeur pour elles (proxy).
|
|
# Relayees : {{ serveur_relais_adresses_relayees | join(', ') }}.
|
|
[Interface]
|
|
Address = {{ serveur_relais_tunnel_adresse }}
|
|
ListenPort = {{ serveur_relais_tunnel_port }}
|
|
MTU = {{ serveur_relais_tunnel_mtu }}
|
|
Table = off
|
|
PostUp = wg set %i private-key /etc/wireguard/relais.key
|
|
PostUp = {% for a in serveur_relais_adresses_relayees %}ip route add {{ a }}/32 dev %i{{ ' ; ' if not loop.last }}{% endfor %}
|
|
|
|
PostUp = {% for a in serveur_relais_adresses_relayees %}ip neigh add proxy {{ a }} dev {{ serveur_relais_interface_publique }}{{ ' ; ' if not loop.last }}{% endfor %}
|
|
|
|
PostDown = {% for a in serveur_relais_adresses_relayees %}ip neigh del proxy {{ a }} dev {{ serveur_relais_interface_publique }}{{ ' ; ' if not loop.last }}{% endfor %}
|
|
|
|
|
|
# {{ serveur_relais_pair_nom }} (frontiere de {{ serveur_relais_site }}) : c'est elle qui initie, depuis une
|
|
# adresse DHCP — d'ou l'absence d'Endpoint ici. Sources admises : son adresse de tunnel et
|
|
# les adresses relayees.
|
|
[Peer]
|
|
PublicKey = {{ serveur_relais_pair_cle_publique }}
|
|
AllowedIPs = {{ ([serveur_relais_pair_adresse ~ '/32'] + (serveur_relais_adresses_relayees | map('regex_replace', '$', '/32') | list)) | join(', ') }}
|