Set-OPS-Public/roles/serveur_relais/tasks/main.yml

97 lines
3 KiB
YAML
Raw Normal View History

2026-10-13 21:20:04 -04:00
---
# Voir defaults/main.yml pour ce qu'est le relais, et d'ou viennent ses valeurs.
- name: Le relais a tout ce qu'il faut pour exister
ansible.builtin.assert:
that:
- serveur_relais_tunnel_adresse | length > 0
- serveur_relais_tunnel_port | int > 0
- serveur_relais_pair_adresse | length > 0
- serveur_relais_pair_cle_publique | length > 0
- serveur_relais_adresses_relayees | length > 0
- serveur_relais_cle_privee | length > 0
- serveur_relais_console not in serveur_relais_adresses_relayees
fail_msg: >-
Relais incomplet. Les valeurs viennent de la carte du site (reseau `relais`, hotes
`role: relais` et `role: frontiere` avec `cle_publique`), de `opnsense.yml` (adresse du
site et pool) et de la voute du site (`vault_relais_wg_cle_privee`). La console ne doit
pas etre une adresse relayee : elle menerait au SSH par le tunnel.
no_log: true
- name: Installer WireGuard et nftables
ansible.builtin.apt:
name: "{{ serveur_relais_paquets }}"
state: present
update_cache: true
cache_valid_time: 3600
# Faire suivre : sans lui, les paquets arrives pour une adresse relayee meurent ici.
- name: Autoriser le transit IPv4
ansible.builtin.copy:
dest: /etc/sysctl.d/90-relais.conf
content: "net.ipv4.ip_forward = 1\n"
owner: root
group: root
mode: "0644"
notify: Appliquer les reglages noyau du relais
# LLMNR et mDNS ecoutaient sur l'adresse publique (5355) : aucun service ici ne s'annonce.
- name: Couper LLMNR et mDNS
ansible.builtin.copy:
dest: /etc/systemd/resolved.conf.d/90-relais.conf
content: "[Resolve]\nLLMNR=no\nMulticastDNS=no\n"
owner: root
group: root
mode: "0644"
notify: Redemarrer systemd-resolved
- name: Dossier de WireGuard
ansible.builtin.file:
path: /etc/wireguard
state: directory
owner: root
group: root
mode: "0700"
- name: Cle privee du relais (depuis la voute du site)
ansible.builtin.copy:
dest: /etc/wireguard/relais.key
content: "{{ serveur_relais_cle_privee }}\n"
owner: root
group: root
mode: "0600"
no_log: true
notify: Redemarrer le tunnel du relais
- name: Configuration du tunnel
ansible.builtin.template:
src: wg0.conf.j2
dest: "/etc/wireguard/{{ serveur_relais_interface_tunnel }}.conf"
owner: root
group: root
mode: "0600"
notify: Redemarrer le tunnel du relais
# VALIDE AVANT D'ETRE POSE : un jeu de regles refuse par nft, recharge sur un VPS dont la
# seule porte est le SSH, serait la fin de l'acces.
- name: Pare-feu du relais
ansible.builtin.template:
src: nftables.conf.j2
dest: /etc/nftables.conf
owner: root
group: root
mode: "0755"
validate: "nft -c -f %s"
notify: Recharger le pare-feu du relais
- name: Tunnel actif au demarrage
ansible.builtin.systemd:
name: "wg-quick@{{ serveur_relais_interface_tunnel }}"
enabled: true
state: started
- name: Pare-feu actif au demarrage
ansible.builtin.systemd:
name: nftables
enabled: true