PPTP hinter einem Heimrouter scheitert auf zwei unabhängigen Wegen, und sie zu verwechseln kostet einen ganzen Abend. Der eine Fehler ist eine Lücke in der Weiterleitung: Der Router lässt TCP 1723 durch und verwirft IP-Protokoll 47, deshalb hängt der Client bei Fehler 619. Der andere ist ein Größenproblem: Der Tunnel kommt hoch, authentifiziert sich und friert dann ein, wenn ein Paket voller Größe passieren muss. Herauszufinden, welchen der beiden Sie haben, ist der erste echte Schritt; der Rest vergleicht, was Ihr Router ausdrücken kann, nicht welche Marke besser ist.

Zwei Transporte, und nur einer hat einen Port

PPTP teilt sich auf zwei Transporte auf: eine Steuerverbindung auf TCP 1723 und PPP-Rahmen, die in erweitertem GRE verpackt sind, also IP-Protokoll 47. GRE hat keine Portnummer, deshalb kann eine als Weiterleitung von Port 1723 geschriebene Regel es nicht abdecken, egal wie die Weboberfläche das Feld nennt. Ein Heimrouter bietet meist ein Kästchen namens PPTP-Passthrough statt einer Protokollregel an, und dieses Kästchen erledigt zwei Aufgaben: Es lässt Protokoll 47 durch die Firewall und bringt NAT bei, den GRE-Fluss zu verfolgen. Auf einem Linux-Router sind diese Aufgaben getrennte Module und getrennte Regeln, weshalb ein halb konfiguriertes Passthrough noch einen funktionierenden Steuerkanal erzeugt. Finden Sie heraus, welche Hälfte vorhanden ist, bevor Sie etwas ändern.

Die Firewall des Servers selbst muss Protokoll 47 von der Routeradresse ebenfalls zulassen. Eine Host-Firewall, die nur 1723/tcp annimmt, erzeugt Fehler 619 aus dem LAN heraus, wodurch eine kaputte Weiterleitung und eine kaputte Host-Regel identisch aussehen.

sudo iptables -S FORWARD | grep -i gre
sudo nft list ruleset | grep -i gre
lsmod | grep -E 'nf_conntrack_proto_gre|nf_nat_proto_gre'

Fehlen die Module, laden Sie sie mit sudo modprobe nf_conntrack_proto_gre nf_nat_proto_gre und machen Sie das Laden dauerhaft, denn ein Neustart, der den Helfer vergisst, macht aus einem funktionierenden Tunnel wieder Fehler 619. Die Weiterleitungsregel muss Protokoll 47 nur zur Serveradresse zulassen, nicht zum ganzen LAN. Die Definition in RFC 2637 trennt Steuer- und Datenpfad, weshalb kein einzelner Portweiterleitungsbildschirm PPTP vollständig beschreibt.

Passthrough-Kästchen oder eine ausdrückliche Protokollregel

Ein Passthrough-Kästchen, das nur die Firewall öffnet, ist näher am Richtigen als ein ALG, der Anruf-IDs umschreibt. Die Firewall-Hälfte ist berechenbar, denn entweder wird Protokoll 47 angenommen oder verworfen, und die Zähler sagen, was gilt. Die Umschreib-Hälfte ist der Punkt, an dem Hersteller sich unterscheiden, denn PPTP-Anruf-IDs gelten pro Tunnel, und ein NAT, der sie bearbeitet, muss jeden Anruf verfolgen, den er berührt. Wenn ein Client sich verbindet und zwei nicht, ist der ALG der erste Verdächtige.

Eine Ziel-NAT-Regel für 1723 hat ebenfalls ein Besitzproblem. Wenn eine alte Regel 1723 noch an einen Host schickt, der den Server nicht mehr betreibt, landen Pakete auf einem geschlossenen Port, und der eigene PPTP-Dienst des Routers antwortet nicht mehr, was wie ein Firewallfehler aussieht, aber in Wahrheit ein veraltetes Ziel ist. Lesen Sie die Regel und ihr Ziel, bevor Sie eine zweite hinzufügen. Auf Routern, die PPTP selbst beenden, konkurriert die WAN-Regel mit dem eingebauten Dienst, also wählen Sie einen Eigentümer für 1723 und Protokoll 47.

Zwei Clients hinter demselben NAT sind der Fall, der eine einfache Weiterleitung von einer klugen trennt. Protokoll 47 ohne Umschreiben der Anruf-IDs weiterzuleiten verhält sich meist besser als ein Helfer, der sie zu reparieren versucht.

Messen Sie den Tunnel, bevor Sie den Router beschuldigen

PPTP verkleinert die nutzbare Nutzlast, und die Verkleinerung ist Arithmetik, kein Rätsel. Jedes Tunnelpaket trägt einen äußeren IP-Kopf, einen erweiterten GRE-Kopf, einen PPP-Kopf und, mit Verschlüsselung, einen MPPE-Kopf. Wenn der Pfad den entstehenden Rahmen nicht tragen kann, kommen kleine Pakete durch, die Anmeldung schließt ab, und die Sitzung bleibt stehen, sobald eine Dateiübertragung oder ein TLS-Handshake ein Paket voller Größe sendet.

Rechnen Sie die Zahl aus, statt zu raten. Erweitertes GRE kostet 8 Byte, PPP kostet 4, MPPE kostet 4, und der äußere IP-Kopf kostet 20, also frisst der Tunnel 36 Byte vor jeder Nutzlast. Auf einem PPPoE-WAN, das bei 1492 endet, ist die größte passende PPP-MTU 1492 minus 36, also 1456. Setzen Sie mtu und mru in den PPP-Optionen auf diesen Wert und testen Sie erneut mit einem Ping ohne Fragmentierung.

ping -M do -s 1464 198.51.100.7
grep -E '^(mtu|mru)' /etc/ppp/options.pptpd

Der Ping misst den Pfad, nicht den Tunnel: 1464 Byte Nutzlast plus 28 Byte IP- und ICMP-Kopf füllen genau einen Rahmen von 1492 Byte. Scheitert dieser Ping, senken Sie die Zahl, bis er durchgeht, und ziehen Sie 36 vom Ergebnis ab. Eine Tunnel-MTU über der Grenze des Pfades erzeugt das Einfrieren ohne eine einzige Logzeile, die die Größe erwähnt.

PPTP, L2TP/IPsec oder OpenVPN auf demselben Router

Derselbe Router kann jeden der drei üblichen Tunnel tragen, und der Unterschied ist, was er ausdrücken muss. PPTP braucht zwei Regeln in zwei verschiedenen Schichten. L2TP über IPsec braucht UDP 500 und 4500 für den Schlüsselaustausch und, sofern NAT-T es nicht trägt, Protokoll 50 für die Nutzlast. OpenVPN braucht einen UDP-Port und überhaupt keinen Helfer.

TunnelWhat the router must allowPractical note
PPTPTCP 1723 and IP protocol 47Two transports, two rules
L2TP/IPsecUDP 500, UDP 4500, protocol 50 without NAT-TESP has no port either
OpenVPNUDP 1194 or a chosen TCP portSingle rule, no helper

Die L2TP-Spalte ist nicht automatisch freundlicher als GRE. ESP ist IP-Protokoll 50 und hat ebenfalls keinen Port, also kann ein Router, der sich mit Protokoll 47 schwertut, sich aus demselben Grund mit Protokoll 50 schwertun. NAT-T existiert, um ESP in UDP 4500 zu verpacken, und wenn beide Enden es unterstützen, wird die Protokoll-50-Regel überflüssig. Das ist eine Eigenschaft der Endpunkte, nicht des PPTP-Kästchens am Router. Bestätigen Sie, welche Kapselung der Client tatsächlich ausgehandelt hat, bevor Sie Regeln für beides schreiben.

OpenVPN ist die Option mit den wenigsten beweglichen Teilen auf der Routerseite. Ein UDP-Port, eine Weiterleitung, kein Verbindungsverfolgungshelfer und kein Umschreiben von Anruf-IDs. Der Tausch ist ein Client, der installiert werden muss, statt eines eingebauten Wählers, und das ist oft der einzige Grund, warum PPTP im Gespräch bleibt.

Was zu reparieren und was zu ersetzen ist

Weiterleitung und MTU zu reparieren gibt Ihnen einen Tunnel, der funktioniert, nicht einen, den Sie behalten sollten. PPTPs MSCHAPv2-Authentifizierung ist seit Jahren angreifbar, und ein funktionierender Tunnel überträgt Anmeldedaten, die sich offline wiederherstellen lassen. Wenn das entfernte Gerät L2TP/IPsec oder OpenVPN ausführen kann, behandeln Sie die Reparatur als vorübergehende Maßnahme mit einem Datum.

Die Entscheidung hängt davon ab, was die Gegenstelle unterstützt und wie lange die Regelung halten muss. Ein Altgerät, das nur PPTP spricht, bekommt die Reparatur; alles, was einen Client installieren kann, wird migriert.

Bevor Sie das Ticket schließen, bestätigen Sie, dass der Client eine große Übertragung übersteht und nicht nur eine Anmeldung, und dass der Router seine Protokoll-47-Regel nach einem Neustart noch hält. Ein Tunnel, der eine Dateikopie schafft und nach dem nächsten Firmware-Update stirbt, war nie fertig.

Ähnliche Artikel