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>
34 lines
1.7 KiB
YAML
34 lines
1.7 KiB
YAML
---
|
|
# LE RELAIS — la face publique d'un site qui n'a qu'une adresse DHCP (2026-10-13).
|
|
#
|
|
# Un VPS loue des adresses fixes ; il repond a l'ARP de son hebergeur pour elles (proxy) et
|
|
# les ROUTE en /32 dans un tunnel WireGuard que la frontiere du site INITIE. Aucune
|
|
# traduction : les adresses arrivent intactes sur la frontiere, qui les porte et qui filtre.
|
|
# Le relais ne decide d'aucun service — il fait suivre, et refuse tout le reste.
|
|
#
|
|
# Tout ce qui suit est DERIVE par `scripts/site_inventaire.py` de la carte du site
|
|
# (`underlay.yml` : reseau `relais`, hote `role: relais`) et de `opnsense.yml` (adresse du
|
|
# site et pool des locataires). Rien n'est a recopier ici.
|
|
serveur_relais_tunnel_adresse: "" # ex. 10.31.60.1/30
|
|
serveur_relais_tunnel_port: 0 # 51800 + index du site
|
|
serveur_relais_tunnel_mtu: 1420
|
|
serveur_relais_pair_nom: frontiere
|
|
serveur_relais_pair_adresse: "" # l'adresse de la frontiere dans le tunnel
|
|
serveur_relais_pair_cle_publique: ""
|
|
serveur_relais_adresses_relayees: [] # l'adresse du site, puis le pool des locataires
|
|
serveur_relais_site: ""
|
|
|
|
# La console SSH reste sur l'adresse PROPRE du VPS : les adresses relayees ne lui sont
|
|
# jamais attribuees, et ne mennent jamais a son SSH.
|
|
serveur_relais_console: "{{ ansible_host }}"
|
|
# L'interface ou l'hebergeur livre les adresses (celle de la route par defaut).
|
|
serveur_relais_interface_publique: "{{ ansible_facts.default_ipv4.interface }}"
|
|
serveur_relais_interface_tunnel: wg0
|
|
|
|
# La cle privee vit dans la voute du site : reconstruire le relais ne change pas sa cle,
|
|
# donc ne touche pas a la frontiere.
|
|
serveur_relais_cle_privee: "{{ vault_relais_wg_cle_privee | default('') }}"
|
|
|
|
serveur_relais_paquets:
|
|
- wireguard-tools
|
|
- nftables
|