MTU bei Wireguard über PPPoE

Started by MenschAergereDichNicht, December 19, 2021, 02:41:35 PM

Previous topic - Next topic
December 19, 2021, 02:41:35 PM Last Edit: December 19, 2021, 02:51:54 PM by MenschAergereDichNicht
Hallo,

ich versuche aktuell ein Wireguard über PPPoE anzubinden und habe Probleme beim Handshake. Ich sehe auf dem WAN-Interface eingehende UDP-Anfragen und ich sehe auch, dass der Wireguard-Service versucht eine Handshake-Antwort zu schicken (das Verbose-Log des Service sagt, dass er es versucht und ich sehe am WAN-Interface ausgehende UDP Pakete).

Leider kommt die Handshake-Antwort nicht beim Client an.

Meine Vermutung ist, dass es daran liegt, dass die Checksumme der ausgehenden UDP-Pakete (laut tcpdump) nicht  korrekt ist.

Ich habe bereits versucht die Tunnel MTU auf einen niedrigeren Wert einzustellen (1412), weil der Default-Wert (1420) meiner Meinung nach im PPPoE-Fall nicht korrekt ist. Das hat aber bisher nicht geholfen.

Wenn ich über "ifconfig" die Interfaces anzeigen lasse, sehe ich für pppoe0 und wg0 folgendes:


pppoe0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1492
inet6 fe80::000:1111:2222:3333%pppoe0 prefixlen 64 scopeid 0xc
inet6 aaaa:bbb:cccc:dddd:eee:ffff:dddd:eeee prefixlen 64 autoconf
inet 11.111.111.111 --> 22.22.222.222 netmask 0xffffffff
nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
--help: flags=8002<BROADCAST,MULTICAST> metric 0 mtu 1420
options=80000<LINKSTATE>
groups: tun
nd6 options=103<PERFORMNUD,ACCEPT_RTADV,NO_DAD>
wg0: flags=8043<UP,BROADCAST,RUNNING,MULTICAST> metric 0 mtu 1412
options=80000<LINKSTATE>
inet 10.11.20.1 netmask 0xffffff00 broadcast 10.11.20.255
groups: tun
nd6 options=103<PERFORMNUD,ACCEPT_RTADV,NO_DAD>
Opened by PID 84129


Mich irritiert die Zeile unter dem pppoe0-Interface mit dem "--help" am Anfang. Der Teil scheint ebenfalls zur Tunnel-Gruppe zu gehören (groups: tun). Dort wird aber nach wie vor eine MTU von 1420 angezeigt, obwohl ich den Tunnel (wie man unten sieht) auf 1412 eingestellt habe.

Mir ist allerdings nicht ganz klar, was die "--help"-Zeile anzeigen soll. Bisher habe ich nichts dazu gefunden. Evtl. kennt sich hier jemand damit aus?

ich habe wireguard ganz eifach konfiguriert (sense als server) mit einer pppoe glas leitung. läuft
bitte mal einen grafischen netzwerkplan und genaue angaben zu der verwendeten hardware
Internet: Willy.tel Down: 1Gbit/s, UP: 250Mbit/s Glasfaser  |
Router/Firewall: pfSense+ 23.09  |
Hardware: Netgate 6100

December 20, 2021, 11:28:53 AM #2 Last Edit: December 22, 2021, 01:15:35 PM by MenschAergereDichNicht
Die Hardware ist eine APU 4D4. Mit vier Intel-Netzwerkschnittstellen.

Der relevante Teil des Netzwerks ist ganz einfach

-------------------------
| Client                      |
| IPv6 Server-Adresse |
| IPv4 Tunnel             |
-------------------------
        |
        |
        |
---------------------------                             
|  Provider-Netz            |
|  keine öffentliche IPv4 |
|  sondern IPv6!            |
---------------------------
          |
          | Glasfaser
          |
--------------------
|Medienkonverter |
--------------------
          |
          | igb3 | VLAN 22 | PPPoE
          |
-----------------------------
| APU 4D4 WAN Interface |
|        (pppoe0)               |
-----------------------------

Vorher mit DSL hatte ich anstelle des Medienkonverters eine Fritzbox als Modem und die APU via DHCP an die Fritzbox angebunden. Damit lief das Wireguard-VPN. Der Provider ist nach wie vor der gleiche und sowohl bei DSL (DS-Lite) als auch bei dem Glasfaseranschluss gibt es eine öffentliche IPv6 und keine öffentliche IPv4.

Mit der Umstellung auf Glasfaser habe ich das WAN-Interface von DHCP auf PPPoE umgestellt. Seitdem sehe ich die oben beschriebenen Probleme.

Zur Überprüfung der Verbindung habe ich folgendes gemacht:

  • Ich habe den Wireguard-Go-Service per Kommandozeile gestartet und den Log-Level erhöht. Dann sieht man auf der Kommandozeile während des Handshakes eine Ausgabe. Dort sehe ich, dass eine Anfrage eingeht und der Server eine Handshake-Antwort verschickt.
  • Ich habe mit tcpdump auf dem pppoe0-Interface gelauscht und mir alle UDP Pakete für den Wireguard-Port ausgeben lassen. Man sieht auch dort, dass Anfragen reinkommen und Antworten verschickt werden.
Leider bleiben die verschickten Antworten irgendwo "hängen". D.h. sie erreichen nicht den Client.

Das einzige was mir bisher aufgefallen ist, ist die ungültige Checksumme bei den ausgehenden Paketen. Es sind ausschließlich die UDP-Pakete des Wireguard-Service die ungültige Checksummen aufweisen. Andere ausgehende UDP-Pakete sind korrekt.

Eventuell könntest du mal ein ifconfig in der opnsense-Shell machen und die Werte von pppoe0 und wg0 hier angeben. Mich würde interessieren wie das bei dir, insbesondere in Zusammenhang mit der MTU, aussieht.
Falls du richtig viel Zeit hast, wäre es nett wenn du dir einen Handshake mit Hilfe von tcpdump anschauen könntest (tcpdump -i pppoe0 -v 'udp port 51820').
Wie sieht die Checksumme bei den ausgehenden UDP-Paketen aus? Ist die korrekt oder verkehrt?

Zusätzlich würde mich die Ausgabe von ifconfig -l interessieren.

Bei mir sieht das so aus:


igb0 igb1 igb2 igb3 enc0 lo0 pflog0 pfsync0 igb1_vlan13 igb1_vlan15 igb3_vlan22 pppoe0 --help wg0


Insbesondere das "--help" - Interface fällt mir dabei auf (es gehört auch zu der "tun"-Gruppe), weil es einen merkwürdigen Interface-Namen hat und weil die MTU nach wie vor einen anderen Wert besitzt als den eingestellten.
Leider habe ich bisher keine Informationen zu diesem Interface gefunden.

December 24, 2021, 01:46:21 AM #4 Last Edit: December 24, 2021, 02:28:11 AM by MenschAergereDichNicht
Das "--help"-interface ist offenbar ein Artefakt eines Versuchs den wireguard-go - Dienst über die Kommandozeile zu starten.

Wenn man "wireguard-go --help" aufruft, wird dieses interface angelegt.

Das ist etwas ungewöhnlich. Ich glaube nicht, dass das Vorhandensein des Interfaces ein Problem darstellt. Allerdings würde ich es trotzdem gerne wieder loswerden. Das scheint bei dem Namen allerdings etwas problematisch zu sein.

spiel doch ein backup deiner config ein wo das interface noch nicht drinn ist (sp würde ich es machen)
vor großen änderungen mache ich immer ein backup der config.
Internet: Willy.tel Down: 1Gbit/s, UP: 250Mbit/s Glasfaser  |
Router/Firewall: pfSense+ 23.09  |
Hardware: Netgate 6100

Hi,

das Interface wird angelegt, wenn man auf der Kommandozeile wireguard-go --help eingibt. Im Hintergrund läuft dann der Prozess weiter. Einfach den Prozess beenden, dann ist das Interface wieder weg.
Die PID des Prozess findest du mit folgendem Befehl:
sudo /bin/sh -c ps aux | grep -e "[w]ireguard-go --help" | awk '{print $1}'
Und dann einfach
sudo kill <pid>
wobei pid das Ergebnis des ersten Befehls ist.

Oder einfach: Reboot der OPNsense.

Dann sollte das --help Interface weg sein.

Bei dem eigentlichen Problem kann ich dir leider nicht helfen.

Gruß
KH