Hotelnitze und Konferenz-Firewalls zeigen oft ein eigenes Freigabefeld, und jemand trägt dort 47 ein in der Erwartung, dass PPTP funktioniert. Die Regel wird erstellt, der Tunnel scheitert weiterhin, und der nächste Versuch verwendet eine andere Nummer. Der Fehler steckt im Paket selbst: IPv4 hat ein Protokollfeld, das benennt, was nach dem IP-Header folgt, während TCP und UDP Portfelder haben, die es erst gibt, wenn man sich innerhalb eines dieser Header befindet. Es sind nicht zwei Schreibweisen derselben Berechtigung.

Der IPv4-Header benennt das nächste Protokoll

Das Protokollfeld ist ein Byte im IPv4-Header und enthält eine Nummer, die die Nutzlast beschreibt: 6 für TCP, 17 für UDP, 47 für GRE, 50 für ESP. Alles, was Pakete filtert, liest diesen Wert, bevor es tiefer schaut, denn der tiefere Header ergibt erst Sinn, wenn der Typ bekannt ist. Ändern Sie später im Gespräch einen Port, und dieses Feld hat sich nicht bewegt.

Eine gegen Protokoll 47 geschriebene Regel beschreibt also die IP-Schicht. Kein Port ist an der Entscheidung beteiligt.

Ports existieren in TCP und UDP, nirgendwo sonst

Ports sind sechzehn Bit lange Kennungen in TCP- und UDP-Headern, und ihre Aufgabe ist es, Gespräche zu trennen, die sich eine Adresse teilen. Ein GRE-Header trägt einen Protokolltypwert, oft einen EtherType, plus optionale Schlüssel für Multiplexing. Der Ausdruck Port 47 benennt daher nichts, womit ein GRE-Paket übereinstimmen könnte.

Firewall-Oberflächen unterscheiden sich darin, wie viel davon sie zeigen. Manche akzeptieren eine Protokollnummer, manche bieten eine benannte Liste, und wenige akzeptieren nur TCP oder UDP mit Ports.

PPTP nutzt beide Schichten gleichzeitig

PPTP ist das klarste Beispiel, weil es seine Arbeit bewusst auf die beiden Schichten verteilt. Die Steuerverbindung ist eine TCP-Sitzung zu Port 1723, und der Datenpfad ist GRE, Protokoll 47, ohne dass irgendwo ein Port beteiligt ist. Eine Firewall, die 1723 erlaubt und sonst nichts, lässt die Aushandlung beginnen und verwirft dann die Nutzlast. Der Tunnel scheint nach der Authentifizierung zu hängen, statt keine Verbindung aufzubauen, und deshalb wird das Symptom oft als Passwortproblem gemeldet.

PathOuter protocolPort
Control channelTCP, protocol 61723
Data channelGRE, protocol 47None

Lesen Sie die beiden Zeilen getrennt, wenn Sie die Regel schreiben, und prüfen Sie jede gegen die Syntax des Herstellers. Eine Zeile braucht einen Port, die andere braucht eine Protokollnummer, und kein einzelner Eintrag deckt beides ab.

Warum eine Portweiterleitungsseite GRE nicht ausdrücken kann

Ein Weiterleitungsformular, das nur TCP und UDP akzeptiert, kann GRE nicht beschreiben, wie das Formular auch heißt. Die Adressübersetzung fügt eine zweite Schwierigkeit hinzu, denn GRE hat keine Ports, und der Übersetzer muss stattdessen die Anrufkennung verfolgen. Manche Consumer-Router bringen einen Helfer mit, der das erledigt; viele nicht, und kein zusätzlicher TCP-Freigabeeintrag erzeugt dieses Verhalten.

Wo ein moderner Tunnel die eigentliche Anforderung ist, wählen Sie ein Design, das TCP oder UDP bewusst nutzt, statt zu hoffen, dass ein Übersetzer richtig rät.

Die Kapselung entscheidet, was der Filter sieht

Die Kapselung verändert das äußere Paket, und das äußere Paket ist das, worauf eine Regel passt. Natives ESP ist Protokoll 50, während NAT-Traversal ESP in UDP 4500 einpackt, damit es die Adressübersetzung übersteht. Ein Filter, der UDP 4500 erlaubt, sieht nie Protokoll 50, und ein für Protokoll 50 geschriebener Filter passt nie auf die eingepackte Form.

Fragen Sie, auf welche Kapselung sich Client und Gateway geeinigt haben, und schreiben Sie die Regel dann für genau diese äußere Form und nichts weiter.

Schreiben Sie die Regel so, dass jemand sie prüfen kann

Drücken Sie jede Regel als Adressfamilie, äußeres Protokoll, Transportports falls vorhanden, Richtung und beide Endpunkte aus. Ein Prüfer kann diesen Satz mit einem Paketmitschnitt vergleichen und zu einem Urteil kommen. Eine Anweisung, 47 zu öffnen, kann niemand prüfen, und so überlebt sie jahrelang in Runbooks.

Ergänzen Sie den Test, der das beweist: Verbinden Sie sich, während Sie auf der äußeren Schnittstelle mitschneiden, und bestätigen Sie das äußere Protokoll und den Port, die tatsächlich in der Spur erscheinen.

Ähnliche Artikel