Set-OPS-Public/roles/serveur_relais/defaults/main.yml
Daniel Allaire f9e45b1676 relais : la face publique d'un site sans adresse fixe, et le site de reprise de TechnoLibre
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>
2026-10-13 21:20:04 -04:00

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