97 lines
3 KiB
YAML
97 lines
3 KiB
YAML
|
|
---
|
||
|
|
# 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
|