{"id":4359,"date":"2026-05-04T21:26:17","date_gmt":"2026-05-04T18:26:17","guid":{"rendered":"https:\/\/demensdeum.com\/blog\/2026\/05\/04\/port-forwarding-chisel\/"},"modified":"2026-05-04T21:48:08","modified_gmt":"2026-05-04T18:48:08","slug":"port-forwarding-chisel","status":"publish","type":"post","link":"https:\/\/demensdeum.com\/blog\/de\/2026\/05\/04\/port-forwarding-chisel\/","title":{"rendered":"Portweiterleitung zwischen Clients \u00fcber Chisel: ein abgespeckter Tunnel ohne L3"},"content":{"rendered":"<p>Wenn sich zwei Ger\u00e4te hinter NAT oder strengen Firewalls befinden und sich nicht direkt \u201esehen\u201c k\u00f6nnen, scheint ein VPN die Standardl\u00f6sung zu sein. Ein vollwertiger L3-Tunnel (wie WireGuard oder OpenVPN) ist jedoch h\u00e4ufig \u00fcberfl\u00fcssig: Er erfordert Root-Rechte, die Einrichtung virtueller Schnittstellen und kann zu Konflikten mit vorhandenen Routen f\u00fchren.<\/p>\n<p>In solchen F\u00e4llen ist es praktisch, <b>Chisel<\/b> zu verwenden \u2013 einen TCP\/UDP-Tunnel, der auf HTTP l\u00e4uft und WebSockets f\u00fcr die Daten\u00fcbertragung verwendet. In diesem Hinweis werde ich zeigen, wie man einen Port \u00fcber einen Zwischenserver von einem Client an einen anderen \u201eweiterleitet\u201c.<\/p>\n<h2>Wie funktioniert es?<\/h2>\n<p>Stellen Sie sich die Situation vor: Sie haben <b>Client A<\/b> (z. B. Ihren Heimserver), <b>Client B<\/b> (Ihren Arbeitslaptop) und einen <b>VPS<\/b> mit einer \u00f6ffentlichen IP-Adresse. Clients A und B k\u00f6nnen auf den VPS zugreifen, jedoch nicht aufeinander.<\/p>\n<p>Das Weiterleitungsschema sieht folgenderma\u00dfen aus:<br \/>\n1. <b>Client A<\/b> stellt eine Verbindung zum VPS her und \u00f6ffnet einen \u201eReverse\u201c-Port auf dem Server. Jetzt geht alles, was an Port X des Servers ankommt, an Port Y von Client A.<br \/>\n2. <b>Client B<\/b> stellt eine Verbindung zum VPS her und leitet Port Z von seinem lokalen Computer an Port X des Servers weiter.<br \/>\n3. Infolgedessen greift Client B auf <b>localhost:Z<\/b> zu und landet auf <b>Client A:Y<\/b>.<\/p>\n<p>Dieser Ansatz ist eine der L\u00f6sungen in F\u00e4llen, in denen die Kommunikation mit einem VPS die L3-Schicht nicht implementiert oder keine M\u00f6glichkeit besteht, Routing zwischen Clients zu konfigurieren. Wir arbeiten ausschlie\u00dflich auf Anwendungs- und Portebene.<\/p>\n<h2>Schritt 1: Starten Sie den Server<\/h2>\n<p>F\u00fchren Sie Chisel auf Ihrem VPS einfach im Servermodus aus. Das Flag <code>--reverse<\/code> ist erforderlich, damit Clients Ports auf der Serverseite \u00f6ffnen k\u00f6nnen.<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code>chisel server --port 8080 --reverse\n<\/code><\/pre>\n<\/div>\n<h2>Schritt 2: Client A (Quelle) verbinden<\/h2>\n<p>Nehmen wir an, Kunde A m\u00f6chte den Zugriff auf seinen lokalen Webserver auf Port 3000 \u00f6ffnen. Er verbindet sich mit dem VPS und sagt: \u201eReservieren Sie Port 2000 auf dem Server und leiten Sie ihn an 3000 an mich weiter.\u201c<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code>chisel client vps-ip:8080 R:2000:127.0.0.1:3000\n<\/code><\/pre>\n<\/div>\n<p>Jetzt f\u00fchrt Port 2000 am VPS (an der Loopback-Schnittstelle) zu Client A.<\/p>\n<h2>Schritt 3: Client B (Verbraucher) verbinden<\/h2>\n<p>Jetzt m\u00f6chte Client B auf diese Ressource zugreifen. Es verbindet sich mit demselben VPS und leitet seinen lokalen Port 8080 an Port 2000 des Servers weiter.<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code>chisel client vps-ip:8080 8080:127.0.0.1:2000\n<\/code><\/pre>\n<\/div>\n<p>Bereit! Wenn Sie nun <code>http:\/\/localhost:8080<\/code> auf Client B \u00f6ffnen, sehen Sie, dass der Dienst auf Client A ausgef\u00fchrt wird.<\/p>\n<h2>Sicherheit und Nuancen<\/h2>\n<p>Chisel unterst\u00fctzt die Authentifizierung \u00fcber das Flag <code>--auth<\/code>, was bei der Arbeit \u00fcber \u00f6ffentliche Server dringend empfohlen wird. Sie k\u00f6nnen TLS-Zertifikate auch zum Verschl\u00fcsseln des Datenverkehrs verwenden.<\/p>\n<p>Der Hauptvorteil dieses Ansatzes besteht darin, dass keine TUN\/TAP-Ger\u00e4te und komplexen Routing-Tabellen erforderlich sind. Dabei handelt es sich um einen abgespeckten Tunnel, der genau eines tut: Ports \u00fcber eine WebSocket-Verbindung bindet. Dies funktioniert sogar \u00fcber Unternehmens-Proxys, wenn Sie Chisel so konfigurieren, dass es \u00fcber Port 443 funktioniert.<\/p>\n<h2>Ausgabe<\/h2>\n<p>Chisel ist ein Dienstprogramm f\u00fcr bestimmte Netzwerkaufgaben. Wenn Sie Ports zwischen isolierten Knoten weiterleiten m\u00fcssen, ohne ein vollwertiges VPN einzurichten, erweist sich eine Kombination aus Vorw\u00e4rts- und R\u00fcckw\u00e4rtstunneln \u00fcber einen Relay-Server als eine durchaus praktikable L\u00f6sung.<\/p>\n<h2>Links<\/h2>\n<p><a href=\"https:\/\/github.com\/jpillora\/chisel\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/jpillora\/chisel<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wenn sich zwei Ger\u00e4te hinter NAT oder strengen Firewalls befinden und sich nicht direkt \u201esehen\u201c k\u00f6nnen, scheint ein VPN die Standardl\u00f6sung zu sein. Ein vollwertiger L3-Tunnel (wie WireGuard oder OpenVPN) ist jedoch h\u00e4ufig \u00fcberfl\u00fcssig: Er erfordert Root-Rechte, die Einrichtung virtueller Schnittstellen und kann zu Konflikten mit vorhandenen Routen f\u00fchren. In solchen F\u00e4llen ist es praktisch,<a class=\"more-link\" href=\"https:\/\/demensdeum.com\/blog\/de\/2026\/05\/04\/port-forwarding-chisel\/\">Continue reading <span class=\"screen-reader-text\">&#8220;Portweiterleitung zwischen Clients \u00fcber Chisel: ein abgespeckter Tunnel ohne L3&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[61],"tags":[],"class_list":["post-4359","post","type-post","status-publish","format-standard","hentry","category-techie","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"de","enabled_languages":["en","ru","zh","de","fr","ja","pt","hi"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"ru":{"title":true,"content":true,"excerpt":false},"zh":{"title":true,"content":true,"excerpt":false},"de":{"title":true,"content":true,"excerpt":false},"fr":{"title":true,"content":true,"excerpt":false},"ja":{"title":true,"content":true,"excerpt":false},"pt":{"title":true,"content":true,"excerpt":false},"hi":{"title":true,"content":true,"excerpt":false}}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts\/4359","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/comments?post=4359"}],"version-history":[{"count":1,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts\/4359\/revisions"}],"predecessor-version":[{"id":4360,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts\/4359\/revisions\/4360"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/media?parent=4359"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/categories?post=4359"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/tags?post=4359"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}