--- # roles/wireguard/tasks/failsafe.yml # Sicherstellt, dass SSH über VPN funktioniert und ein Fallback vorhanden ist - name: Stelle sicher, dass wireguard_network gesetzt ist assert: that: - wireguard_network is defined fail_msg: "wireguard_network muss gesetzt sein (z. B. 10.8.0.0/24)" - name: Automatisch externe IP als fallback_ip setzen (nur wenn nicht gesetzt) shell: curl -s ifconfig.me register: detected_fallback_ip when: fallback_ip is not defined changed_when: false - name: Setze fallback_ip dynamisch als Ansible-Fact (wenn nicht gesetzt) set_fact: fallback_ip: "{{ detected_fallback_ip.stdout }}" when: fallback_ip is not defined - name: (Optional) Erlaube temporär Fallback-SSH von aktueller IP ufw: rule: allow port: 22 proto: tcp from_ip: "{{ fallback_ip }}" - name: Erlaube SSH-Zugriff über VPN ufw: rule: allow port: 22 proto: tcp from_ip: "{{ wireguard_network }}" - name: (Warnung) Prüfe ob VPN-Interface aktiv ist shell: ip a show dev wg0 register: vpn_interface_check failed_when: false - name: Hinweis, wenn VPN-Interface nicht aktiv ist debug: msg: "⚠️ VPN-Interface wg0 scheint nicht aktiv zu sein. SSH über VPN wird nicht funktionieren." when: vpn_interface_check.rc != 0 - name: (Optional) SSH von überall blockieren – nur wenn VPN aktiv when: - ssh_lockdown | default(false) - vpn_interface_check.rc == 0 ufw: rule: deny port: 22 proto: tcp from_ip: 0.0.0.0/0