Ein OpenVPN-Port, drei Dienste: warum innere Ports zählen
Ein Tunnel, drei Dienste, ein öffentlicher Port. Trennen Sie den äußeren VPN-Listener von den inneren Anwendungsports und testen Sie dann jede innere Berechtigung einzeln.
Eine SSH-Sitzung, eine Webanwendung und eine Namensabfrage können sich eine einzige VPN-Verbindung teilen, ohne um Ports zu streiten. Der Client baut einen verschlüsselten Strom zum Gateway auf, und jede Anwendungskonversation reist darin. Nach außen sind nur der eigene Transport und der Port des Tunnels sichtbar. Innen behält jeder Dienst seinen eigenen Port und braucht weiterhin seine eigene Berechtigung.
Was der äußere Strom trägt und was er verbirgt
Der Client packt jedes Paket in den Transport des Tunnels, bevor es den Rechner verlässt. Dieser äußere Strom hat einen Zielport, festgelegt bei der Konfiguration der VPN. Innerhalb der Hülle behält jedes ursprüngliche Paket die Adresse und den Port des Dienstes, den es anspricht. Das Gateway entfernt die Hülle und routet anhand des inneren Headers, sodass das Ziel einen gewöhnlichen Client sieht, der aus dem Netz ankommt.
Ein Mitschnitt an der WAN-Schnittstelle zeigt daher eine Konversation, nicht drei. Die inneren Ports erscheinen erst nach der Dekapsulierung. Deshalb kann eine einzige Firewall-Öffnung SSH, HTTPS und DNS gleichzeitig tragen.
# WAN side: one outer tuple, whatever the inner services are
tcpdump -ni wan0 'udp port 443'
# tunnel side: the inner tuples appear after decapsulation
tcpdump -ni tun0
Die TUN/TAP-Dokumentation behandelt die Übergabe, bei der ein geroutetes TUN-Gerät IP-Pakete zwischen dem Kernel und einem Userspace-Prozess weiterreicht. Diese Übergabe macht den inneren Header für den Routing- und Firewall-Code des Gateways sichtbar. Sie erklärt auch, warum der äußere Port nichts darüber aussagt, welche Dienste erlaubt sind.
Die NAT-Weiterleitung gehört zum Listener, nicht zu den Anwendungen
Ein selbst gehostetes Gateway hinter IPv4-NAT braucht eine eingehende Übersetzung: die öffentliche Adresse und der Port werden auf den VPN-Listener abgebildet. Für SSH, HTTPS oder DNS ist keine Regel nötig, nur weil Tunnel-Nutzer sie erreichen. Diese Ports zu veröffentlichen würde Dienste offenlegen, die der Tunnel bereits schützt. Die Weiterleitungsregel beschreibt die Erreichbarkeit des Listeners, keine Erlaubnis für irgendetwas im Inneren.
Auch umgekehrt gilt es. Den Tunnelport zu öffnen legt nichts anderes offen, daher bleibt ein nur über den Tunnel erreichbarer Dienst an seiner öffentlichen Oberfläche geschlossen. Diese Trennung ist meist genau der Grund, den Dienst überhaupt privat zu halten.
Die innere Richtlinie entscheidet tatsächlich über den Zugriff
Verschlüsselung schützt den Weg; sie autorisiert kein Ziel. Client-Routen wählen, welche Präfixe in den Tunnel gelangen, die Weiterleitungsrichtlinie des Gateways entscheidet, ob Pakete ihn verlassen dürfen, und die Firewall des Ziels plus die Anmeldung entscheiden, ob der Dienst antwortet. DNS ist der klarste Fall: Abfragen zu transportieren bringt einen Resolver nicht dazu, sie aus Ihrem Client-Pool anzunehmen. Jede Schicht kann unabhängig Nein sagen.
Testen Sie jeden Dienst einzeln durch den Tunnel. Eine erfolgreiche Namensauflösung sagt nichts über den Webport, und eine erfolgreiche Webanfrage sagt nichts über SSH.
dig @10.40.0.53 app.corp.example
nc -vz 10.40.0.10 8443
ssh -p 2222 [email protected]
Wenn der Tunnel steht und alles scheitert, lesen Sie zuerst die Routentabelle des Clients. Wenn ein Dienst scheitert, während die anderen funktionieren, sitzt der Fehler an diesem Ziel. Diese beiden Beobachtungen zeigen auf verschiedene Zuständige, und sie zu vermischen kostet Zeit.
WireGuard zieht dieselbe Grenze
WireGuard benennt seinen äußeren Listener mit ListenPort, und eine innere Anwendung nutzt weiterhin den Port, den sie braucht. AllowedIPs ist eine Menge gerouteter Präfixe, keine Liste erlaubter Dienstports. Sie als Port-Allowlist zu lesen erzeugt Regeln, die nicht zu dem passen, was der Tunnel tut. Die Benennung ist anders; die Schichtung nicht.
Erlauben Sie den Dienst in der lokalen Eingangsrichtlinie, wenn er auf dem Endpunkt selbst läuft, oder in der Weiterleitungsrichtlinie, wenn er hinter diesem Endpunkt sitzt. Die Unterscheidung entscheidet, welche Regelmenge das Paket sieht.
Die allgemeine Form ist ein äußerer Transport mit vielen inneren Konversationen. Produkte, die mehrere äußere Austausche oder ein anderes IP-Protokoll brauchen, erinnern daran, dass das Muster mit einem einzigen öffentlichen Port dieses Design beschreibt und nicht jede VPN.