VPN - eduVPN - Linux mit firewalld und WireGuard
Problem
eduVPN mit Wireguard-VPN funktioniert nicht, eduVPN mit OpenVPN schon. Der VPN-Server wird über IPv6 kontaktiert. Als Personal Firewall ist firewalld (https://firewalld.org/) installiert.
Ursache
Bei Wireguard wird das Routing durch den Tunnel mit Rule-Based-Routing realisiert. ( https://www.wireguard.com/netns/) Zudem werden Wireguard-Pakete, diese enthalten die VPN-Payload, markiert. Jene markierten Pakete werden über die Standard-Route und nicht durch den Tunnel geschickt. Damit kann man die Routing-Schleife umgehen, die entsteht, wenn die Server-IP im Bereich der getunnelten Subnetze liegt. Das ist bei uns bei Split- und bei Full-Tunnel der Fall. Da es keine spezielle Host-Route auf den Server gibt, wie bei OpenVPN, ist auch Roaming einfacher möglich.
Bei installiertem firewalld werden bei dieser Konstruktion die Antwortpakete vom VPN-Server durch den aktivierten IPv6 Reverse-Path-Filter verworfen. Diese Pakete kommen natürlich über das Standard-Interface, es existiert allerdings eine Route im Tunnel für diese Adresse. Damit greift der Filter und verwirft das Paket.
https://github.com/firewalld/firewalld/issues/603
https://github.com/firewalld/firewalld/issues/1203
Lösung
Neben der Deaktivierung von firewalld und Verwendung einer anderen Personal Firewall oder eigener Regeln kann man auf eigenes Risiko den IPv6 Reverse Path filter deaktivieren.