OPNSense - IPv6-TCP-Verbindungen auf die Firewall schlagen fehl
Guten Morgen zusammen,
ich hab mich nun auch mal dazu durchgerungen, IPv6 bei mir daheim einzuführen.
Ich habe die OpenVPN-Verbindungen logischerweise auf der Firewall terminiert, hatte zunächst mit TCP gearbeitet.
Zusätzlich habe ich für meine NAS den HA-Proxy konfiguriert, der unter IPv4 auch super funktioniert.
IPv6 nach draußen geht einwandfrei (HTTP(S), OpenVPN UDP, DNS, SMTP, etc. was man so braucht).
Leider habe ich jetzt das Problem, dass IPv6 TCP-Verbindungen von "draußen", welche auf der Firewall terminieren, scheinbar irgendwo runterfallen.
Eine Live-View der Firewall-Regeln zeigt mir eingehende (WAN-Interface) IPv6-Verbindungen auf den entsprechenden Ports (OpenVPN als auch HAProxy jeweils TCP) als grün an, sprich die Firewall lässt den Traffic schonmal durch, allerdings sah ich im VPN-Log keine Einträge (Verbosity Level 5) und auch im HAProxy Log war nix zu finden.
Eine Packet-Capture-Auswertung mittels Wireshark von der WAN-Schnittstelle mit den jeweiligen Ports ergab zwar jeweils ein SYN-ACK, allerdings gefolgt von haufenweise Retransmissions von beiden Seiten.
Die OpenVPN-Verbindungen habe ich dann mal auf UDP umgestellt -> das funktionierte dann (zumindest lässt sich die Firewall von einem Client aus erreichen, hab da noch einen TLS Handshake Error aber um den kümmere ich mich gesondert, das ist ein OpenVPN-Thema).
Was ich auch schon ausprobiert habe, war ein NAT (ja ich weiß unter IPv6 macht man das nicht aber testweise hab ichs gemacht) von der Public IPv6 der Firewall auf die interne IPv6 (RFC4193) meiner NAS -> siehe da, da funktioniert der Zugriff via HTTPS auf einem High-Port. Die Config des HAProxys hatte ich entsprechend um IPv6 erweitert, sprich zum PublicService habe ich [::]:35798 hinzugefügt, das ist wohl das Pendant zum 0.0.0.0:35798 unter IPv4. Das funktionierte jedoch nicht. Auch das Eintragen der derzeit bestehenden Public IPv6 mittels IPV6:35798 oder [IPV6]:35798 hat keinen Erfolg gezeigt. Den "Real-Server" zusätzlich mittels IPv6 einzutragen und bei den "Virutal Services" mit anzugeben sollte zwar nicht notwendig sein, hab ich aber auch probiert -> geht nicht.
Wenn ich die Verbindung (sowohl zum HAProxy als auch zum OpenVPN-Server) von "innen" heraus aufbaue, sprich aus dem LAN, funktioniert das Ganze einwandfrei. Ich hatte deshalb ja schon die Firewall im Verdacht aber die scheint es ja nicht zu sein.
Hier noch ein paar Eckdaten zur Config:
LAN-Netze: 192.168.10.0/24, fd00:192:168:10::/64 (ja ich weiß, ich generier mir noch ein Pseudo-Random-Prefix), IPv6: Track-Interface: WAN
WAN: IPv4 PPPoE, IPv6 DHCP (vom Provider bekomm ich eine IPv6 Adresse auf die WAN-Schnittstelle zugewiesen und ein /56 Prefix zusätzlich)
Remote-VPN-Netze UDPv4: IPv4 192.168.101.0/24, IPv6 fd00:192:168:101::/64
Remote-VPN-Netze UDPv6: IPv4 192.168.105.0/24, IPv6 fd00:192:168:105::/64
Site-to-Site-VPNs: 192.168.100.0/24 und fd00:192:168:100::/64, 192.168.103.0/24 und fd00:192:168:103::/64 sowie 192.168.104.0/24 und fd00:192:168:104::/64
An einem der Site-to-Site-VPNs hängt noch das Netz 192.168.177.0/24 (rein IPv4)
Die beiden Remote-VPNs laufen in zwei Instanzen, einmal UDP4 und einmal UDP6.
EDIT: Die CA für die beiden OpenVPN-Instanzen ist exakt die selbe, das sollte aber eigentlich kein Problem sein oder?
EDIT2: Was mich im OpenVPN-Log etwas stutzig macht:
Proto UDPv4? Obwohl sowohl auf dem Server (OPNSense) als auch auf dem Client (Windows) udp6 in der Config steht...
Da ich persönlich die Firewall aber ausschließe halte ich die Regeln für wenig relevant, außerdem ist das Firewall-Regelwerk recht umfangreich, die relevanten Regeln wären aber:
Floating: Interface: WAN, Direction: In, IPv4+IPv6, Protokoll: UDP, Source: Any, Destination: WAN-Address, Ports: VPN-Ports (Alias) -> Allow --- Ich hab Geoblocking, deshalb für VPN eine Floating Rule, weil über VPN will ich immer rein, Geoblocking hab ich aber vorübergehend ausgeschaltet.
WAN: Interface: WAN, Direction: In, IPv4+IPv6, Protokoll: TCP, Source: Any, Destination: WAN-Address, Ports: 35798 -> Allow
Ansonsten gibts keine Regeln, die sich mit denen überschneiden.
NAT ist lediglich outbound für IPv4 aktiv.
EDIT3: Ich hab jetzt testweise auch mal die HTTPS-Gui per Firewall-Regel auf dem WAN-Interface freigegeben, das geht auch nicht, gleiches Thema: Firewall grün, Packet Capture: TCP SYN->ACK->Retransmissions ohne Ende.
Ich hoffe ihr könnt mir in meinem Wirrwarr weiterhelfen, wenn ihr sonst noch Infos braucht, kann ich die gern nachreichen.
Danke schonmal!
Gruß
Ketanest
ich hab mich nun auch mal dazu durchgerungen, IPv6 bei mir daheim einzuführen.
Ich habe die OpenVPN-Verbindungen logischerweise auf der Firewall terminiert, hatte zunächst mit TCP gearbeitet.
Zusätzlich habe ich für meine NAS den HA-Proxy konfiguriert, der unter IPv4 auch super funktioniert.
IPv6 nach draußen geht einwandfrei (HTTP(S), OpenVPN UDP, DNS, SMTP, etc. was man so braucht).
Leider habe ich jetzt das Problem, dass IPv6 TCP-Verbindungen von "draußen", welche auf der Firewall terminieren, scheinbar irgendwo runterfallen.
Eine Live-View der Firewall-Regeln zeigt mir eingehende (WAN-Interface) IPv6-Verbindungen auf den entsprechenden Ports (OpenVPN als auch HAProxy jeweils TCP) als grün an, sprich die Firewall lässt den Traffic schonmal durch, allerdings sah ich im VPN-Log keine Einträge (Verbosity Level 5) und auch im HAProxy Log war nix zu finden.
Eine Packet-Capture-Auswertung mittels Wireshark von der WAN-Schnittstelle mit den jeweiligen Ports ergab zwar jeweils ein SYN-ACK, allerdings gefolgt von haufenweise Retransmissions von beiden Seiten.
Die OpenVPN-Verbindungen habe ich dann mal auf UDP umgestellt -> das funktionierte dann (zumindest lässt sich die Firewall von einem Client aus erreichen, hab da noch einen TLS Handshake Error aber um den kümmere ich mich gesondert, das ist ein OpenVPN-Thema).
Was ich auch schon ausprobiert habe, war ein NAT (ja ich weiß unter IPv6 macht man das nicht aber testweise hab ichs gemacht) von der Public IPv6 der Firewall auf die interne IPv6 (RFC4193) meiner NAS -> siehe da, da funktioniert der Zugriff via HTTPS auf einem High-Port. Die Config des HAProxys hatte ich entsprechend um IPv6 erweitert, sprich zum PublicService habe ich [::]:35798 hinzugefügt, das ist wohl das Pendant zum 0.0.0.0:35798 unter IPv4. Das funktionierte jedoch nicht. Auch das Eintragen der derzeit bestehenden Public IPv6 mittels IPV6:35798 oder [IPV6]:35798 hat keinen Erfolg gezeigt. Den "Real-Server" zusätzlich mittels IPv6 einzutragen und bei den "Virutal Services" mit anzugeben sollte zwar nicht notwendig sein, hab ich aber auch probiert -> geht nicht.
Wenn ich die Verbindung (sowohl zum HAProxy als auch zum OpenVPN-Server) von "innen" heraus aufbaue, sprich aus dem LAN, funktioniert das Ganze einwandfrei. Ich hatte deshalb ja schon die Firewall im Verdacht aber die scheint es ja nicht zu sein.
Hier noch ein paar Eckdaten zur Config:
LAN-Netze: 192.168.10.0/24, fd00:192:168:10::/64 (ja ich weiß, ich generier mir noch ein Pseudo-Random-Prefix), IPv6: Track-Interface: WAN
WAN: IPv4 PPPoE, IPv6 DHCP (vom Provider bekomm ich eine IPv6 Adresse auf die WAN-Schnittstelle zugewiesen und ein /56 Prefix zusätzlich)
Remote-VPN-Netze UDPv4: IPv4 192.168.101.0/24, IPv6 fd00:192:168:101::/64
Remote-VPN-Netze UDPv6: IPv4 192.168.105.0/24, IPv6 fd00:192:168:105::/64
Site-to-Site-VPNs: 192.168.100.0/24 und fd00:192:168:100::/64, 192.168.103.0/24 und fd00:192:168:103::/64 sowie 192.168.104.0/24 und fd00:192:168:104::/64
An einem der Site-to-Site-VPNs hängt noch das Netz 192.168.177.0/24 (rein IPv4)
Die beiden Remote-VPNs laufen in zwei Instanzen, einmal UDP4 und einmal UDP6.
EDIT: Die CA für die beiden OpenVPN-Instanzen ist exakt die selbe, das sollte aber eigentlich kein Problem sein oder?
EDIT2: Was mich im OpenVPN-Log etwas stutzig macht:
2021-10-19T05:04:23 openvpn[44321] 2a00:20:c042:5d7:4ccb:21c6:9688:fc3c Expected Remote Options String (VER=V4): 'V4,dev-type tun,link-mtu 1549,tun-mtu 1500,proto UDPv4,keydir 1,cipher AES-256-GCM,auth [null-digest],keysize 256,tls-auth,key-method 2,tls-client'
2021-10-19T05:04:23 openvpn[44321] 2a00:20:c042:5d7:4ccb:21c6:9688:fc3c Local Options String (VER=V4): 'V4,dev-type tun,link-mtu 1549,tun-mtu 1500,proto UDPv4,keydir 0,cipher AES-256-GCM,auth [null-digest],keysize 256,tls-auth,key-method 2,tls-server'
Da ich persönlich die Firewall aber ausschließe halte ich die Regeln für wenig relevant, außerdem ist das Firewall-Regelwerk recht umfangreich, die relevanten Regeln wären aber:
Floating: Interface: WAN, Direction: In, IPv4+IPv6, Protokoll: UDP, Source: Any, Destination: WAN-Address, Ports: VPN-Ports (Alias) -> Allow --- Ich hab Geoblocking, deshalb für VPN eine Floating Rule, weil über VPN will ich immer rein, Geoblocking hab ich aber vorübergehend ausgeschaltet.
WAN: Interface: WAN, Direction: In, IPv4+IPv6, Protokoll: TCP, Source: Any, Destination: WAN-Address, Ports: 35798 -> Allow
Ansonsten gibts keine Regeln, die sich mit denen überschneiden.
NAT ist lediglich outbound für IPv4 aktiv.
EDIT3: Ich hab jetzt testweise auch mal die HTTPS-Gui per Firewall-Regel auf dem WAN-Interface freigegeben, das geht auch nicht, gleiches Thema: Firewall grün, Packet Capture: TCP SYN->ACK->Retransmissions ohne Ende.
Ich hoffe ihr könnt mir in meinem Wirrwarr weiterhelfen, wenn ihr sonst noch Infos braucht, kann ich die gern nachreichen.
Danke schonmal!
Gruß
Ketanest
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1404220343
Url: https://administrator.de/contentid/1404220343
Ausgedruckt am: 19.11.2024 um 05:11 Uhr
10 Kommentare
Neuester Kommentar
Hallo,
Das reply-to gibt es bei den Einstellungen für das Gateway bei policy-based Routing https://docs.opnsense.org/manual/firewall.html#policy-based-routing
Das ist im Regelfall nicht erforderlich! Zumindest nicht für normales VPN wenn die Firewall eine öffentliche IP hat. Bei normalen Firewallregeln wird kein Gateway definiert.
Grüße
lcer
Zitat von @aqui:
Wo bitte gibt es in einer FW Regel ein "Reply To" ?? Eigentlich unsinnig und muss man auch nirgendwo setzen. Ggf. hast du hier ein falsches Verständnis des Regelwerkes. Was übrigens für v4 und v6 identisch ist. Aber egal...Hauptsache ist es rennt jetzt wie es soll !
Wo bitte gibt es in einer FW Regel ein "Reply To" ?? Eigentlich unsinnig und muss man auch nirgendwo setzen. Ggf. hast du hier ein falsches Verständnis des Regelwerkes. Was übrigens für v4 und v6 identisch ist. Aber egal...Hauptsache ist es rennt jetzt wie es soll !
Das reply-to gibt es bei den Einstellungen für das Gateway bei policy-based Routing https://docs.opnsense.org/manual/firewall.html#policy-based-routing
Das ist im Regelfall nicht erforderlich! Zumindest nicht für normales VPN wenn die Firewall eine öffentliche IP hat. Bei normalen Firewallregeln wird kein Gateway definiert.
Grüße
lcer