hartgas
Goto Top

Pfsense IPv6 Subnetz Routingprobleme

Hi,

ich bin gerade dabei mein IPv6 Subnetz (/64) von Hetzner auf meine pfSense zu routen und dann entsprechend den VMs manuell zuzuweisen. Die Sense ist über v6 erreichbar.

Proxmox Host:
2a01:xxxx:xxxx:xxxx::1
pfSense:
2a01:xxxx:xxxx:xxxx::2

Proxmox:
iface enp7s0 inet6 static
        address 2a01:xxxx:xxxx:xxxx::1/128
        gateway fe80::1
        up sysctl -p

iface vmbr0 inet6 static
        address 2a01:xxxx:xxxx:xxxx::1/64
        up ip -6 route add 2a01:xxxx:xxxx:xxxx::/64 via dev 2a01:xxxx:xxxx:xxxx::2 vmbr0

VM Config:
source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

allow-hotplug ens18
iface ens18 inet dhcp

iface ens18 inet6 static
    address 2a01:xxxx:xxxx:xxxx::3
    netmask 64
    gateway 2a01:xxxx:xxxx:xxxx::2

Die VM bekommt den Fehler: Destination unreachable: Address unreachable


Aktueller Stand ist, dass das /64 Subnetz auf dem WAN der Sense anliegt.
Nur weiß ich nicht, was ich noch wie konfigurieren muss, damit ich bspw. die 2a01:xxxx:xxxx:xxxx::3 der Debian 12 VM "geben" kann und das Routing dann auch klappt. Das ist aktuell mein Problem wo ich nicht mehr weiterkomme 😔

Wäre cool wenn mir hierbei jemand helfen könnte der hier den Durchblick hat
v6

Content-ID: 62756076712

Url: https://administrator.de/contentid/62756076712

Ausgedruckt am: 21.11.2024 um 18:11 Uhr

12168552861
12168552861 13.03.2024 aktualisiert um 09:58:12 Uhr
Goto Top
Hi,
Das klappt so natürlich nicht. Wenn du ein einzelnes 64er Subnetz hast das zu dir geroutet wird und das du an mehrere Interfaces nutzen willst, dann musst du es in kleinere Subnetze aufteilen damit dieses korrekt geroutet werden kann.
Also bspw. das 64er dann in 72er Netze zerlegen:

# Für den Proxmox an enp7s0v
2a01:xxxx:xxxx:xxxx::1/72

# Am Proxmox eine Route für das VM Subnetz welche auf die pfSense zeigt
ip -6 route add 2a01:xxxx:xxxx:xxxx:200::/72 via 2a01:xxxx:xxxx:xxxx:100::2 dev vmbr0

# Für den Proxmox an vmbr0
2a01:xxxx:xxxx:xxxx:100::1/72

# Für die pfSense am WAN
2a01:xxxx:xxxx:xxxx:100::2/72
mit GW 
2a01:xxxx:xxxx:xxxx:100::1/72

# Für die pfSense am LAN zur VM
2a01:xxxx:xxxx:xxxx:200::1/72

# Für die VM die hinter der Sense am LAN hängt
2a01:xxxx:xxxx:xxxx:200::2/72
mit GW
2a01:xxxx:xxxx:xxxx:200::1/72

Ist ja genauso wie bei IPv4. Da kannst du auch nicht ein großes Subnetz auf mehrere Interfaces gleichzeitig packen sondern musst dort ebenfalls in kleinere Einheiten subnetten damit das Routing wieder klappt.

So wird dann ein Schuh draus. 😁

Etwas Lektüre zum Thema IPv6 ist auch nie verkehrt: https://danrl.com/ipv6/

Gruß pp
aqui
aqui 13.03.2024 um 10:53:30 Uhr
Goto Top
Die Sense ist über v6 erreichbar.
Wo denn an welchem Port?? Und WIE hast du das an den entsprechenden Ports (WAN und lokales LAN) eingerichtet. Dazu machst du leider keinerlei helfende Angaben. face-sad

Normalerweise distribuieren die Hoster per Prefix Delegation und DHCPv6 einen Prefix >64 an deinen WAN Port der pfSense. Doe LAN Ports sind dann entsprechend in der v6 IP Adressierung auf "Tracking WAN" eingestellt und reichen den Prefix dann als /64er Subnetze an die lokalen LAN Ports weiter und damit dann auf deine VMs.
Das Gateway musst du dort an den VMs nicht eintragen, denn das lernen die automatisch per RAs.

Leider machst du zur v6 Adressierung wenig komkrete Angaben und zwingst zum Kristallkugeln. Deine netze stellst du immer nur rein als "2a01..." dar was keinerlei Aufschluss über die wirklich verwendeten IPv6 Netze zeigt. face-sad Hier wären ein paar mehr detailiertere Infos hilfreich um zielgerichtet helfen zu können.
Zum Rest hat Kollege @puderpader ja schon alles gesagt. Hier ist noch zu beachten das wenn du kleinere Masken nutzt als /64 einige Funktionen wie SLAAC usw. nicht mehr funktionieren.
hartgas
hartgas 14.03.2024 um 02:57:14 Uhr
Goto Top
@puderpader @aqui

Ich habe die fehlenden Infos nochmal anhand meiner PVE network config bereitgestellt.
Mir würde der einfachste Weg komplett genügen, der das Ziel hat, VMs hinter der pfSense eine funktionierende v6 Adresse zu geben (manuell würde komplett ausreichen, da es mir tatsächlich nur um 2 VMs geht, die einfach eine funktionierende v6 Adresse benötigen) Ich brauche nur ein einziges funktionierendes Netz.

Eine IPv6 Adresse für den Proxmox Host und eine für die pfSense (WAN) und der Rest soll dann bestmöglich einfach nur nutzbar für VMs sein ohne irgendwelche Besonderheiten. Bspw. die Verteilung per DHCPv6 wäre alles nur Optional aber kein muss.

Ich hoffe, dass das alle offenen Fragen beantwortet.

auto lo
iface lo inet loopback
iface lo inet6 loopback

auto enp7s0
iface enp7s0 inet static
        address 65.xxx.xxx.105/32
        gateway 65.xxx.xxx.65
        pointopoint 65.xxx.xxx.65

iface enp7s0 inet6 static
        address 2a01:4f9:xxx:xxx::1/128
        gateway fe80::1
        up sysctl -p

auto vmbr0
iface vmbr0 inet static
        address 65.xxx.xxx.105/32
        bridge-ports none
        bridge-stp off
        bridge-fd 0
        pre-up brctl addbr vmbr0

        up ip route add 65.xxx.xxx.249/32 dev vmbr0
        up ip route add 65.xxx.xxx.250/32 dev vmbr0

iface vmbr0 inet6 static
        address 2a01:4f9:xxx:xxx::1/64
        up ip -6 route add 2a01:4f9:xxx:xxx::/64 via dev 2a01:4f9:xxx:xxx::2 vmbr0

auto vmbr1
iface vmbr1 inet manual
        bridge-ports none
        bridge-stp off
        bridge-fd 0
#LAN

pfSense WANv6 Config:
lan
wanv6
12168552861
12168552861 14.03.2024 aktualisiert um 07:31:55 Uhr
Goto Top
S.o. da stehen deine Todos 😉
aqui
aqui 14.03.2024 aktualisiert um 09:48:04 Uhr
Goto Top
pfSense WANv6 Config:
WAN Interface hast du ja schon korrekt eingestellt. Allerdings fehlt das LAN?! 🤔

Hier bekommst du ja bei einer statischen Adressierung ein freies /64 Netz von deinem Hoster oder Provider. Dieses musst du dann mit dem Typ Static ebenfalls am LAN Interface konfigurieren und fertig ist der Lack!
Die Firewall arbeitet ja als Router zwischen diesen beiden Interfaces, folglich benötigst du, wie auch analog bei IPv4, zwei unterschiedliche Netzwerke!
Das des LANs musst du also von deinem Hoster oder Provider bekommen bzw. anfragen sofern er dir keinen größeren Präfix per PD am WAN per DHCPv6 verteilt.
All diese Fragen zu der Provider/Hoster v6 Adressierung hast du bis dato noch NICHT beantwortet und zwingst hier dann zum Kristallkugeln! face-sad

Auch solltest du darauf achten IPv6 global in der pfSense unter System-Advanced-Networking zu aktivieren sonst geht eh nix in puncto v6!
v6
hartgas
hartgas 15.03.2024 um 03:13:33 Uhr
Goto Top
Das des LANs musst du also von deinem Hoster oder Provider bekommen bzw. anfragen sofern er dir keinen größeren Präfix per PD am WAN per DHCPv6 verteilt.
All diese Fragen zu der Provider/Hoster v6 Adressierung hast du bis dato noch NICHT beantwortet und zwingst hier dann zum Kristallkugeln! face-sad

Ich weiß leider nicht was du damit meinst.

Ich habe von Hetzner lediglich ein Subnetz bekommen - sonst nichts weiter (nach meinem Verständnis habe ich dann doch alles was ich brauche - siehe Screenshot).

Ich brauche nun für das LAN Interface einen lokalen IPv6 Bereich, genau wie bei IPv4 oder wie soll ich das verstehen?

Ich habe mir einfach mit https://unique-local-ipv6.com/# einen random Prefix generiert und entsprechend eingetragen. Ist das soweit korrekt?

Mit der VM kann ich nun zumindest schon mal bis zur pfSense kommen, aber nicht weiter.

Sorry wenn ich mich gerade ein wenig dumm anstelle, aber bei IPv6 steig ich einfach noch nicht durch..
vm_v6-01
vm_v6-03_tracert
lan_v6
random_ula
vm_v6-02
hetznerv6sn
aqui
aqui 15.03.2024 aktualisiert um 10:07:42 Uhr
Goto Top
Ich weiß leider nicht was du damit meinst.
Oha...IP Routing Grundschule erste Klasse.... 🙄
Eine Firewall hat wie ein Router üblicherweise im Minimum 2 IP Netze. Einmal der WAN Port und einmal der LAN Port. An letztem befinden sich die VMs.
Folglich benötigst du 2 IPv6 Netze eins für WAN und eins für LAN.
Da IPv6 kein NAT (IP Adress Translation) kennt, müssen dies immer 2 öffentliche IPv6 Netze sein und keine Unique Local Adressses, ULA wie du sie unten verwendest!
Öffentliche IP Adressen sind registriert und bekommt man immer zugeteilt ergo darf man sie nicht selber "würfeln"!
Hoffe bis da kannst du noch folgen..?!

Da du immer nur vom v6 Netz am WAN Port redest aber nicht WELCHES v6 Netz du am LAN Port zu benutzen gedenkst fehlt dir ja eine offizielle IPv6 Netzadresse für LAN. Du hast am LAN Port ja auch noch gar kein IPv6 Netz konfiguriert.

Offizielle IPv6 Adressen kann man sich nicht einfach würfeln und bekommt diese vom Provider zugeteilt. Das ist auch logisch, denn der Provider muss ja auch wissen wie er dieses Netz zu dir routen muss. Wie gesagt...Routing Grundlagen..siehe oben!

Für diese v6 Adressierung an deinem LAN Port gibt es nun 2 Optionen und du musst deinen Provider oder Hoster fragen welche er verwendet. Dazu musst du mal den Telefonhörer in die Hand nehmen und dessen Hotline anrufen oder dein Email verwenden.

  • Option 1.) Dein Provider oder Hoster teilt dir statisch ein IPv6 Netzwerk zu. Was du dann stinknormal über den Adresstyp "Static" in deiner pfSense konfigurierst. Fertisch. Ist analog wie bei IPv4.
  • Option 2.) Dein Provider oder Hoster teilt dir über den WAN Port der pfSense per Prefix Delegation automatisch so ein Netzwerk zu. Dann musst du nichts statisch definieren sondern setzt den Adresstyp am LAN einfach auf "Tracking from WAN". Dann konfiguriert dir die pfSense das LAN Segment automatisch mit dem vom Provider oder Hoster via DHCPv6 Prefix Delegation zugeteiltem Netz.

Fazit:
Für dich geht es primär darum zuallererst von deinem Provider oder Hoster zu klären WIE er dir dies von dir benötigte IPv6 Netzwerk für den LAN Port zuteilt!! Da es kein NAT/Masquerading im IPv6 gibt sind ULAs also der falsche Weg.
Nebenbei ist fd25:bade:affe:cafe:: /64 eine deutlich schönere Adresse als deine da oben! 🤣
https://redmine.ungleich.ch/projects/ipv6/wiki/IPv6_words_-_name_your_ne ...
http://sophiedogg.com/funny-ipv6-words/
hartgas
hartgas 17.03.2024 aktualisiert um 23:05:51 Uhr
Goto Top
Da Hetzner das Subnetz auf die link-local vom Server routet habe ich es jetzt so gelöst, dass ich es von dort aus weiter auf die link-local IP des WAN-Interfaces geroutet habe. Anschließend habe ich dann nur noch das Subnetz auf das LAN-Interface gelegt. Nun funktioniert es endlich wie es soll..

Leider habe ich gerade noch ein weiteres Problem. Wenn ich von der VM (hinter der fw) einen Iperf3 oder Ookla-Speedtest mache, kriege ich 1 Gbit im Download, jedoch nur <10Mbit bis gar nichts im Upload. Wenn ich die Firewall mit "pfctl -d" deaktiviere, bekomme ich ganz normal 1 Gbit im Down- sowie Upload. Bei IPv4 hingegen bekomme ich auch mit eingeschalteter Firewall 1 Gbit im Down- sowie Upload. Kannst du dir dieses Verhalten erklären?

VM IPv6-Iperf3 mit ausgeschalteter Firewall ("pfctl -d): https://pastebin.com/g5V2j49w
VM IPv6-Iperf3 mit aktivierter Firewall ("pfctl -e): https://pastebin.com/V21ByqTB
aqui
aqui 18.03.2024 aktualisiert um 09:39:18 Uhr
Goto Top
habe ich es jetzt so gelöst, dass ich es von dort aus weiter auf die link-local IP des WAN-Interfaces geroutet habe.
Eigentlich Unsinn, denn es würde implizieren das der Hypervisor zw. seinen NIC Segmenten selber routet was aber in der Regel nie der Fall ist. Zwischen der NIC und dem WAN Interface findet ja immer ein Bridging statt wenn man es richtig einrichtet. Folglich liegen dann NIC und WAN Port in der gleichen Layer 2 Broadcast Domain und damit im gleichen IP Netzwerk was ein Routing dann obsolet macht.
Schon recht wirr was du da alles so veranstaltest...aber egal. Warum einfach machen wenn es wirr und umständlich auch geht. face-wink

Das Performance Problem kann daran liegen das du das Offloading der virtuellen WAN NIC an der Firewall eingeschaltet hast. Primär hängt die Verwendung dieser Features auch vom Typ der verwendeten virtuellen NIC im Hypervisor ab. (vmxnet3 etc.) Leider machst du da wenig hilfreiche Angaben, denn nur sehr wenig virtuelle Adapter supporten das. face-sad (Siehe dazu auch hier)
Die 3 relevanten Haken findest du im Advanced Menü
offload
Hier musst du je nach verwendetem Hypervisor Typ mal checken was da die besten Settings für dich sind. Erstmal solltest du damit starten sie alle auszuschalten.
Alle anderen Hinweise zum Proxmox Setup einer Firewall VM findest du HIER.

Nebenbei: Mit externen Bilderlinks die Zwangswerbung, Schnüffelpixel usw. enthalten machst du dir hier im Forum keine Freunde! face-sad
hartgas
hartgas 18.03.2024 um 12:28:25 Uhr
Goto Top
Hardware Checksum Offloading habe ich genau wie Hardware TCP Segmentation Offloading (disabled by default) und Hardware Large Receive Offloading (disabled by default) deaktiviert - hat nichts geändert.

AES-NI habe ich wie in dem von dir geschickten Thread umgesetzt - hat ebenfalls nichts geändert.

Könnte das ggf. was mit der MTU (nur bei v6, weil v4 funktioniert ja tadellos) zu tun haben?
Auch hier habe ich nichts verändert und ist sowie alles default eingestellt.
Das ist beim Upload sehr relevant, wenn ich das richtig in Erinnerung habe.

Wenn du noch mehr Infos brauchst, gib mir Bescheid welche du haben möchtest.
of.d2
of.d5
of.d4
of.d3
aqui
aqui 18.03.2024 aktualisiert um 12:49:38 Uhr
Goto Top
deaktiviert
Hast du die auch mal aktiviert?
Könnte das ggf. was mit der MTU (nur bei v6, weil v4 funktioniert ja tadellos) zu tun haben?
Ja, könnte. IPv6 Header Size ist ja mindestens 20 Byte größer. Wäre also einmal einen Test wert die MTU entsprechend anzupassen wenn die Firewall fragmentiert.
https://en.wikipedia.org/wiki/IPv6_packet
Hier rennt das mit aktiviertem Offloading auf einem NUC mit Typ vmxnet3 und Intel NICs sowohl bei einer OPNsense als auch pfSense VM in Wirespeed.
hartgas
hartgas 18.03.2024 aktualisiert um 15:43:26 Uhr
Goto Top
Hast du die auch mal aktiviert?
Ja, hat nicht geändert.

Ja, könnte. IPv6 Header Size ist ja mindestens 20 Byte größer. Wäre also einmal einen Test wert die MTU entsprechend anzupassen wenn die Firewall fragmentiert.
Gibt es da einen Wert den ich abseits des Default Wertes mal ausprobieren könnte?
12168552861
12168552861 18.03.2024 aktualisiert um 15:57:12 Uhr
Goto Top
Einfach mal mit Wireshark einen Mitschnitt machen dann sieht man ja direkt was Sache ist und ob das massenweise Retransmissions bzw. Fragmentierung auftritt und du musst nicht tagelang in der Gegend rum raten.
hartgas
hartgas 18.03.2024 um 16:34:21 Uhr
Goto Top
Zitat von @puderpader:

Einfach mal mit Wireshark einen Mitschnitt machen dann sieht man ja direkt was Sache ist und ob das massenweise Retransmissions bzw. Fragmentierung auftritt und du musst nicht tagelang in der Gegend rum raten.

Hab ich mal gemacht:
Ich würde mal stark behaupten, dass es so nicht aussehen sollte :D
Die Frage ist, wie fix ich das am besten?
Hab damit noch nicht so viel zutun gehabt - müsste ich mich erst mit beschäftigen und ihr scheint da deutlich mehr in der Thematik drin zu sein.
wireshark
hartgas
hartgas 18.03.2024 um 16:51:29 Uhr
Goto Top
Hier nochmal aber nur mit einem iperf3 v6 upload.
wireshark_iperf3_v6_upload
12168552861
12168552861 18.03.2024 aktualisiert um 17:03:02 Uhr
Goto Top
Jepp das sieht klar nach fehlerhafter MTU bzw. ICMPv6 Firewall Blocking aus. Also als aller erstes sicherstellen, das ICMPv6 durchgängig von Client bis Endgerät nicht in der Firewall blockiert wird, hier vor allem die ICMPv6 Typen 1,2,3 und 4. Auch die Sense selbst sollte diese akzeptieren, dito die VM. Denn für die Ermittlung der PMTU ist dies essentiell und wird zwingend benötigt, dann ist in der Regel auch keine Anpassung der MTU nötig wenn der Provider keine niedrigere als 1500 an deinem WAN vorschreibt (Konsultiere die DOCs des Hosters). Da IPv6 grundsätzlich auf ICMPv6 angewiesen ist, nicht wie bei IPv4 das noch nicht so viele Abhängigkeiten davon hatte, sollte man diesem immer eine Blick widmen.

Lesenswert wenn man mit IPv6 hantiert:
https://de.wikipedia.org/wiki/ICMPv6
https://danrl.com/ipv6/
hartgas
hartgas 18.03.2024 um 17:28:24 Uhr
Goto Top
Jepp das sieht klar nach fehlerhafter MTU bzw. ICMPv6 Firewall Blocking aus. Also als aller erstes sicherstellen, das ICMPv6 durchgängig von Client bis Endgerät nicht in der Firewall blockiert wird, hier vor allem die ICMPv6 Typen 1,2,3 und 4. Auch die Sense selbst sollte diese akzeptieren, dito die VM. Denn für die Ermittlung der PMTU ist dies essentiell und wird zwingend benötigt, dann ist in der Regel auch keine Anpassung der MTU nötig wenn der Provider keine niedrigere als 1500 an deinem WAN vorschreibt (Konsultiere die DOCs des Hosters). Da IPv6 grundsätzlich auf ICMPv6 angewiesen ist, nicht wie bei IPv4 das noch nicht so viele Abhängigkeiten davon hatte, sollte man diesem immer eine Blick widmen.
ICMPv6 war auf dem LAN, sowie WAN Interface die ganze Zeit aktiviert.
Ich habe bei Hetzner ein Ticket aufgemacht und warte nun auf eine Antwort. Die sollten eigentlich recht schnell antworten. Ich gebe dann nochmal Feedback.
hartgas
hartgas 18.03.2024 um 17:42:16 Uhr
Goto Top
Laut Hetzner ist die MTU ebenfalls 1500.
https://docs.hetzner.com/robot/dedicated-server/ip/additional-ip-adresse ...

@puderpader
hetzner_reply
aqui
aqui 18.03.2024 aktualisiert um 18:02:57 Uhr
Goto Top
das sieht klar nach fehlerhaftem ICMPv6 Firewall Blocking aus.
Vermutlich hat der TO, wie du schon richtig sagst, nicht beachtet das er einige zwingend benötigte ICMPv6 durch die Firewall passieren lassen muss!!
https://www.net.in.tum.de/fileadmin/TUM/NET/NET-2016-09-1/NET-2016-09-1_ ... Tabelle 5, Seiten 5 u. 6
Siehe dazu auch HIER.
sowie WAN Interface die ganze Zeit aktiviert.
LAN ist es ja immer, da ja nur inbound. Wichtig ist das WAN!
hartgas
hartgas 18.03.2024 um 18:24:27 Uhr
Goto Top
Sollte doch so passen oder nicht? Hab jetzt zum Test einfach mal alles erlaubt.
y01
y02
aqui
aqui 18.03.2024 aktualisiert um 19:21:50 Uhr
Goto Top
Die ICMP Regel am LAN Interface ist völlig unsinnig, da total überflüssig, denn das deckt die Protokollfamilie "IP" ja schon ab.
Die 2 getrennten Protokollregeln für v4 und v6 hätte man auch intelligenter zusammenfassen können.
lanrule
Je effizienter das Regelwerk desto performanter... face-wink
hartgas
hartgas 18.03.2024 um 19:27:12 Uhr
Goto Top
Die 2 getrennten Protokollregeln für v4 und v6 hätte man auch intelligenter zusammenfassen können.
lanrule
Je effizienter das Regelwerk desto performanter... face-wink

So hatte ich es vorher, dachte mir aber für die Übersichtlichkeit mache ich v6 einzeln (ich will erstmal nur dass es funktioniert).

Fehlt denn aktuell noch was, was ich machen muss?
Funktionieren tut es nach wie vor immer noch nicht.
hartgas
hartgas 19.03.2024 aktualisiert um 01:29:29 Uhr
Goto Top
Ich habe die ICMPv6 Regeln auf dem WAN sowie LAN Interface erstellt (inkl. aller Typen).
Bei States Details steht jedoch 0B/0B d.h. da geht nichts durch.

Deshalb möchte ich hier nochmal das generell auf das aktuelle Setup eingehen.

Hetzner routet das auf die link-local IPv6 auf unseren Server. Von dort aus route ich das Subnetz weiter auf die link-local IPv6 Adresse von dem WAN-Interface der pfSense:

iface vmbr0 inet6 static
        up ip -6 route add 2a01:4f9:6b:xxxx::/64 via fe80::be24:11ff:feff:1263 dev vmbr0

Anschließend habe ich das Subnetz 2a01:4f9:6b:xxxx::1/64 nur noch auf das LAN Interface gelegt.

Selbst wenn ich auf dem LAN sowie WAN Interface eine ANY ANY Rule erstelle, funktioniert es nicht.

Hier stimmt doch dann generell was nicht oder es muss an noch was anderem liegen...
lan-69 1
lan-69
lan-69 2
aqui
aqui 22.03.2024 um 10:07:52 Uhr
Goto Top
Hier stimmt doch dann generell was nicht
Dein Regelwerk am WAN Port unsinnig. Welchen Sinn macht es wenn du per Schrotschuss für IPv4 und IPv6 alles freigibst (any any) dadrunter dann aber überflüssigerweise nochmals UDP 51820 und RDP freigibst was die Regel dadrüber (First match wins!) eh alles schon inkludiert??
Sowas ist dann sinnfrei und verwirrt nur als das es logisch ist und hilft. face-sad
Das gleiche Drama auch am LAN Port...