Neuinstallation TL-WR841N: TCP Verbindungen brechen zusammen (bei Nutzung von IPv6 per SixXS)

Hallo Freifunker,

ich habe einen Freifunk-Router TL-WR841N von einem Freifunker (Freifunk Rheinland) hier in Mettmann bekommen. Zur Info: Ich bin neu bei FF, kenne die Technik also noch nicht wirklich. Der FF-Router hängt bei mir am Internet, hat jedoch keine anderen FF-Router in Funknähe.

Nun habe ich das Problem, dass nach dem Einschalten des Routers der Internet-Zugang für Clients nur ein paar Minuten funktioniert (HTTP, SSH). Nach etwa 5 Minuten geht dann aber nicht mehr viel. SSH-Verbindungen werden ggf. noch aufgebaut, aber sobald ich ein paar Daten übertrage (z.B. „ls“), steht die TCP-Verbindung. Bei HTTP kommt ebenfalls nichts mehr durch. Im Fehlerfall funktioniert das Routing übrigens. Sowohl IPv4 als auch IPv6 wird geroutet, ein Ping geht durch. DNS geht auch noch, aber eben kein TCP.

Ich habe Traces auf einem Webserver und auf einem Client gemacht. Im Fehlerfall - als ca. 5 Minuten nach dem Einschalten - funktioniert der TCP Handshake zwar noch (SYN, SYN/ACK, ACK), allerdings kommen HTTP-Antwortpakete, die der Server sendet (z.B. HTTP 200) nicht mehr auf dem Client an. Es scheint so, dass irgendwo eine Firewall oder ein Proxy dicht macht, entweder im Tunnel oder auf dem FF-Router. Den Client habe ich per WLAN als auch per LAN-Port am FF-Router getestet. Ich habe neben einem Linux-Notebook auch Android-Geräte getestet. Bei allen das gleiche Verhalten.

Ich habe eine FritzBox 7390 im Einsatz. Jedoch habe ich den FF-Router nicht per Gastzugang angebunden (das will ich erst machen, wenn alles funktioniert). Ich habe auch einen anderen LAN-Port an der FritzBox probiert, nur zur Sicherheit. Ansonsten klappen bei mir alle anderen Arten von Tunnel, wie OpenVPN oder SSH-Tunnel ohne Probleme. Die FritzBox hat keine besonderen Filter oder Kindersicherung o.ä. aktiviert. Ich gehe zu 95% davon aus, dass das Blocken der TCP Pakete auf FF-Seite passiert (Tunnel, Proxy, Router o.ä.). Oder ist der FF-Router vielleicht nicht richtig provisioniert?

Ich habe vor dem Fehlerfall und danach jeweils Routingtabellen und Interfaces geprüft. Es ändert sich nichts. Folgende Prozesse laufen im Gutfall, aber nicht mehr im Fehlerfall (kann, muss aber nichts bedeuten):

2423 root 1488 S {dhcpv6.script} /bin/sh /lib/netifd/dhcpv6.script br-client ra-updated
2424 root 1388 R ps
2425 root 1488 S {dhcpv6.script} /bin/sh /lib/netifd/dhcpv6.script br-client ra-updated
2426 root 1036 R jshn -w

Was man nach einiger Zeit erkennt, sind wget Prozesse von einem autoupdater. Die hängen ebenfalls, was ein Indiz dafür ist, dass der Router selbst die FF-Netze nicht mehr erreicht:

31392 root 1388 S /bin/sh -c /usr/sbin/autoupdater --fallback
31397 root 2060 S {autoupdater} /usr/bin/lua /usr/sbin/autoupdater --fallback
31398 root 1388 S sh -c wget -O- ‚http://[fda0:747e:ab29:cafe::fec1]/stable/sysupgrade//stable.manifest‘
31399 root 1396 S wget -O- http://[fda0:747e:ab29:cafe::fec1]/stable/sysupgrade//stable.manifest

Ein paar weitere Angaben:

  • Model: TP-Link TL-WR841N/ND v9
  • Firmware release: 2014.4-stable-2
  • FF-ME-Am-Herrenhaus, Freifunk Rheinland e.V.
  • http://[2a03:2260:40:0:16cc:20ff:fe31:1e74]/cgi-bin/status
  • Meine FritzBox hängt per SixXs-Tunnel an IPv6.

Bin ratlos. Jede Hilfe ist willkommen.

Viele Grüße
Ralf

Internet-Anbieter?
Mal testweise IPv6 ausgeschaltet?

1 Like

Internet-Anbieter: Unitymedia
IPv6 habe ich testweise noch nicht ausgeschaltet. Könnte ich in der Tat mal machen (wobei ich damit die IPv6-Konnektivität zu meinem Heimserver abschalte, was ich immer ungern mache ;-).

Ich habe gerade mal den autoupdater direkt nach dem Einschalten manuell aufgerufen

/bin/sh -c /usr/sbin/autoupdater --fallback

Hat ein Update auf Firmware release: 2014.4-stable-3 gemacht.

Dort hast du einen alten Anschluss mit echter IPv4 und ohne IPv6, oder warum Sixxs-Tunnel?

Ja, „echtes IPv4“ ohne IPv6 von Unitymedia. Da drauf dann IPv6 per SixXs mit eigenem Prefix über die FritzBox. Klappt alles ohne Probleme. Nur FF noch nicht :wink:

Ich schätze, dass du nur kleine Pakete durchbekommst, vermutlich nur bis zu Größe von 1142 Byte. Versuch mal einen ping (linux: ping -s 1142 ip-address mit wachsenden Werten). Ursache wahrscheinlich: der Sixx-Tunnel arbeitet nur mit 1280 Byte. Da dass für IPv6 auch schon das Minmum ist, müssen Pakete vor dem Sixx-Tunnel passend fragmentiert werden.

Schätze ich.

1 Like

Okay, wir sind ein Stück weiter. Ich habe mal IPv6 (also den SixXs-Tunnel) auf meiner FritzBox komplett deaktiviert. Und siehe da: Verbindung der Clients über den FF-Router ist auch nach 15 Minuten stabil. Nach Wiedereinschalten von IPv6 auf der FritzBox blieb es stabil. Gehe ich also Recht in der Annahme, dass der FF-Router bei einem lokalen IPv6 Netz (WAN Port des FF-Routers) den FF-Tunnel per IPv6 aufbaut, also durch meinen SixXs-Tunnel?

Wenn ja, entnehme ich daraus, dass das Zusammenspiel des FF-Tunnels mit dem SixXs-Tunnel nicht funktioniert. Vielleicht ein MTU-Problem? Meine FritzBox steht bei IPv6 auf 1280 Bytes.

Ich sehe zwei Möglichkeiten:

  1. Die Tunnel aufeinander abstimmen.

  2. Dem FF-Router beibringen, dass er seinen Tunnel per IPv4 aufbauen soll. Geht das?

Ätsch! Dann war ich schneller!

Mögliche Lösungen:

  • mtu im fastd weiter runtersetzen
  • tunnel über ipv4 bauen: in den Definitionen der tunnel ipv4 davor setzen.

Ja, Du warst schneller, bzw. ich hatte mehr zu tippen :smile:

Die Frage ist nun, wie ich da raus komme. Denn IPv6 bei mir zu Hause deaktivieren, ist keine Option. Kann man den FF-Router auf IPv4 festlegen für den Tunnel?

Und wo mache ich das? Habe leider (noch) null Erfahrung mit dem FF-Router.

Die einfachste Variante ist, den FF-Router ins Gast-Vlan zu stecken. Da macht die Fritzbox dann kein IPv6. Die beiden Stellen im Router an denen man manipulieren kann, findest du mit „uci show fastd“ …

  • fastd.mesh_vpn.mtu=1406 ← runtersetzen (hab ich nicht probiert)
  • fastd.mesh_vpn_backbone_peer_xxxx ← ipv6 rausnehmen. Da das eine Liste sein kann, ist die Syntax merkwürdig… ich erinnere mich nicht mehr…
1 Like

Okay, habe ich gemacht. Mal sehen, ob es wirkt. Der Ping ging in der Tat nur bis 1142 durch.

Das mit dem Gast-Zugang hatte ich eh noch vor, aber ehrlich gesagt will ich mich darauf nicht verlassen, dass dort kein v6 läuft :wink: Kann sich ja auch ändern.

Gibt es per uci auch die Möglichkeit, den Tunnel auf IPv4 zu zwingen? Ich sehe folgende Parameter:

network.mesh_vpn=interface
network.mesh_vpn.ifname=mesh-vpn
network.mesh_vpn.mesh_no_rebroadcast=1
network.mesh_vpn.macaddr=16:d0:20:31:1e:74
network.mesh_vpn.mesh=bat0
network.mesh_vpn.proto=batadv

Klar, einfach MeshVPN auf IPv4 stellen im Installationsmenü („Expert-Mode“, vorletzter Reiter)

2 Likes

Hat leider nicht geklappt. Das mesh-vpn Interface bekommt bei einer MTU Size von 1142 noch nicht einmal eine IPv6 Link Local Adresse. Das VPN funktioniert nicht. Damit fällte diese Option aus.

Ansonsten: schau in das Ergebnis von uci show | grep ^fastd.mesh_vpn_backbone_peer. Wie sieht das bei dir aus? Da muss im Zweifel ein ipv4 davor. Syntax ist aber kompliziert, weil es sich um eine Liste handelt. Zwischen dem remote und dem Hostname muss ein ipv4…

Mach Gast-Vlan und verschiebe die Lösung auf später. Ansonsten hast du (das ein weiterer Fehler) in deinem LAN auch die FF-Prefixe (lernt die Fritzbox vom FF-Router), kannst sie aber nicht erreichen, da der FF-Router die nicht routet.

Sieht so aus bei einem verbundenen Peer:

fastd.mesh_vpn_backbone_peer_rheinufer1=peer
fastd.mesh_vpn_backbone_peer_rheinufer1.enabled=1
fastd.mesh_vpn_backbone_peer_rheinufer1.key=…
fastd.mesh_vpn_backbone_peer_rheinufer1.net=mesh_vpn
fastd.mesh_vpn_backbone_peer_rheinufer1.remote=„rheinufer1.freifunk-rheinland.net“ port 10040
fastd.mesh_vpn_backbone_peer_rheinufer1.group=mesh_vpn_backbone

Versuche:

uci set fastd.mesh_vpn_backbone_peer_rheinufer1.remote=‚ipv4 „rheinufer1.freifunk-rheinland.net“ port 10040‘

Kann sein, dass du den fastd neu starten musst: /etc/init.d/fastd

Keine Garantie, und ich muss jetzt zum Karneval!

Wenn alles klappt, ein uci commit

1 Like

Nein. In meinem lokalen Netz habe ich die FF-Prefixe nicht. Da gibt es eine Einstellung auf der FritzBox Auch IPv6-Präfixe zulassen, die andere IPv6-Router im Heimnetzwerk bekanntgeben, die ich deaktivert habe :wink:

Alles klar. Entweder so oder dann über das Installationsmenü. Vielen Dank für Deine Hilfe und viel Spass beim Karneval! Und danke auch an adorfer.