IPv6 Traffic forwarding geht nicht

  • Hallo,

    ich habe eine Verbindung zwischen zwei Servern (einer hier der VPS) via wireguard. Ich möchte Traffic der bei dem VPS hier ankommt zu dem anderen Server routen. Das ganze klappt auch großartig für IPv4, nur nicht für IPv6.

    Das hier benutze ich um den Traffic zu forwarden:

    Und das hier ist die Ausgabe von ip address:

    Ich kann alle IPs (also auch die iPv6) von außen pingen, das ist absolut kein Problem, nur der Traffic kommt nicht an.Entsprechend frage ich mich ob ich da irgendwas übersehen habe was vlt. netcup speziell ist oder ob ich sonnst einen Fehler in meiner Config habe.

    Danke schon mal

    Autchi

  • Wenn Du kein zusätzliches IPv6-Subnetz hast (das direkt geroutet wird), brauchst Du wahrscheinlich einen NDP-Proxy. Siehe ip -6 neigh add proxy …, bzw. falls es viele Adressen sind z.B. ndppd.

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Ich habe gerade mal ip -6 neigh add proxy 1:2:3:4:c86a:75ff:fe6d:46a5 dev eth0 ausgeführt, bringt leider keine Veränderung im Verhalten.

    Habe jetzt aber auch mal ip neighbor show ausgeführt und das hier bekommen:

    Code
    172.18.0.2 dev br-a5846efba401 lladdr 02:42:ac:12:00:02 REACHABLE
    45.142.176.1 dev eth0 lladdr 00:00:5e:00:01:01 REACHABLE
    172.17.0.2 dev docker0 lladdr 02:42:ac:11:00:02 STALE
    45.142.176.2 dev eth0 lladdr bc:0f:fe:33:fc:e3 STALE
    45.142.176.3 dev eth0 lladdr bc:0f:fe:37:fb:a3 STALE
    fe80::be0f:fe00:a833:fce3 dev eth0 lladdr bc:0f:fe:33:fc:e3 router STALE
    1:2:3::3 dev eth0 FAILED
    fe80::1 dev eth0 lladdr 00:00:5e:00:02:02 router REACHABLE
    1:2:3::2 dev eth0 FAILED
    fe80::be0f:fe00:a837:fba3 dev eth0 lladdr bc:0f:fe:37:fb:a3 router STALE

    Was ich jetzt nicht ganz verstehe, ich habe eigentlich nur 1:2:3:4::/64, aber irgendwie sagt es was über die neighbors 1:2:3::3 und 1:2:3::2.

    Bin jetzt vollends verwirrt, das Problem ist, ich gehe hier auch mit gefährlichem Halbwissen dran, grundlegendes Verständnis von IPv4 ist da, aber das übertrage ich relativ nur auf IPv6, da kenne ich die Regeln nicht (das war wohl vor 12 Jahren noch "zu neu" um im Studium gelehrt zu werden, aber wird auch jetzt noch nicht).

  • Sieht soweit gut aus, wie schauen deine wireguard allowed IPs aus und was passiert, wenn du auf den einzelnen (Tunnel)-Interfaces mit tcpdump dir den Verkehr anguckst?

    Evtl. fehlt einfach nur eine Rückroute.

    Bin jetzt vollends verwirrt, das Problem ist, ich gehe hier auch mit gefährlichem Halbwissen dran, grundlegendes Verständnis von IPv4 ist da, aber das übertrage ich relativ nur auf IPv6, da kenne ich die Regeln nicht (das war wohl vor 12 Jahren noch "zu neu" um im Studium gelehrt zu werden, aber wird auch jetzt noch nicht).

    Kann man ganz gut übertragen, außer bei ARP und der spezifischen L2 Implementation.

    Einmal editiert, zuletzt von H6G (18. September 2024 um 21:40)

  • danke für den tipp mit tcpdump, da hätte ich auch vorher selbst drauf kommen können. Komplett komisches verhalten, ich kann die IP pingen, das wird in tcpdump auch angezeigt, aber sobald ich per http(s) darauf zugreife geht nichts (auch nicht in tcpdump)... habe jetzt auch mal andere Ports probiert geht genau so wenig, irgendwie scheint es mir fast so als würde da noch eine Firewall oder so laufen. Ich habe aber mal sudo ufw status ausgeführt, das gibt mir aus, dass ufw gar nicht installiert ist.

    Es wird immer komischer, so sollte IPv6 sich doch nicht verhalten oder übersehe ich da was?

  • scheint es mir fast so als würde da noch eine Firewall oder so laufen

    Naja, du hast ja eine Firewall laufen:

    Code
    nft 'add rule ip6 nat prerouting ip6 daddr 1:2:3:4:c86a:75ff:fe6d:46a6 tcp dport 80 dnat 1:2:3:4:5:6:7:9'
    nft 'add rule ip6 nat prerouting ip6 daddr 1:2:3:4:c86a:75ff:fe6d:46a6 tcp dport 443 dnat 1:2:3:4:5:6:7:9'

    Wenn ich jetzt keinen Denkfehler habe: brauchst du dazu nicht noch eine snat Regel? Kann aber auch eine Finte sein.

    Was häufig passiert bei ICMP funktioniert, aber TCP nicht: MTU Fehler. Welche MTU haben die Wireguard Interfaces und funktioniert auch ein Ping mit größerer Payload (ggf. mit DNF Bit gesetzt)?

    Edit:
    snat hast du ja drinne (siehe masquerade nft add rule nat postrouting masquerade) - muss das auch noch explizit für IPv6 gesetzt werden?

    Einmal editiert, zuletzt von H6G (19. September 2024 um 12:26)

  • ich habe mal nft list ruleset ausgeführt und rein geschaut, für mich sieht es so aus als wäre das bei IPv6 auch drin.

    Das mit der MTU ist auch ein guter Gedanke, aber ich bin per Kabel angebunden, das heißt die Default MTU von 1420 sollte perfekt sein. Ich habe mal ping -s 1372 -M do fd00:0:0:0:0042:c0ff:fea8:01c1 durchgeführt, das geht wunderbar durch. Wenn ich es über 1372 drehe geht es natürlich nicht mehr, dann haben wir mehr Protokoll overhead.

  • table ip6 nat { chain postrouting { type nat hook postrouting priority srcnat; policy accept; }

    Da fehlt zumindest das masquerade - so kommt das Paket zumindest mit einer Global Routable Address als Source am anderen Ende an.

    Ich kenne mich mit nftables nicht aus, aber in der IPv4 Chain ist zumindest das masquerade markiert - unabhängig von der Richtung.

    Ich würde hier das NAT auch auf die Tunnelrichtung beschränken.

    Auch wenn es theoretisch funktionieren könnte, ist NAT bei IPv6 nicht wirklich verbreitet. Würde hier auch ein Reverse Proxy oder ein Routing Setup mehr Sinn machen?

    2 Mal editiert, zuletzt von H6G (19. September 2024 um 15:45)