ubuntuusers.de

Portweiterleitung / Zugriff auf eine Applikation hinter einem 'Gateway'

Status: Gelöst | Ubuntu-Version: Server 16.04 (Xenial Xerus)
Antworten |

Diogenes77

Avatar von Diogenes77

Anmeldungsdatum:
22. November 2007

Beiträge: 174

Wohnort: /home

Hallo,

habe einen 24/7-laufenden headless-Homeserver aufgesetzt, der aus dem Internet über ssh / Port 22 erreichbar ist. Namensauflösung erfolgt über DynDNS. Habe vor, mit einigen meinen Freunden über Internet Schach zu spielen, wobei das aber nicht über einen externen Schachserver laufen soll, sonder durch direkte Verbindung (via ssh). Mein Schachpartner verbindet sich also via ssh (RSAkey authentification) mit meinem Homeserver:

1
ssh -L <jChessBoardPort>:localhost:<jChessBoardPort> <myuser>@<dyndns-addr> 

Der Homeserver soll die eingehende Verbindung auf meinen Laptop weiterleiten, also etwa so:

<homeserver-lanip>:<jChessBoardPort>   --> <laptop-lanip>:<jChessBoardPort>

Auf dem Laptop lauscht jChessBoard auf dem entspr. Port auf die Anfrage von der jChessBoard-Instanz meines Schachpartners. So weit der Plan.

Mir ist allerdings unklar, wie ich die Weiterleitung vom Homeserver auf den Laptop am besten realisieren soll. Habe folgende Ideen:

a) mit reverse proxy b) mit netcat c) mit iptables NAT

Meine 1. Wahl wäre reverse proxy, da ein nginx ohnehin auf dem Homeserver läuft. Trotz intensivem googeln habe ich nirgend gefunden, ob es möglich ist, nginx als Reverse-Proxy auch für Nicht-HTTP(S)-Verbindungen zu verwenden. Ich will also, dass nginx einfach den TCP-Port auf einer bestimmten Location auf <laptop-lanip> forwarded, ohne dass auf diesem Port HTTP(S)-Protokoll läuft. Ist das möglich?

Falls nein, welche sonstigen Möglichkeiten ausser netcat bzw. iptables seht ihr?? Gibt es so etwas wie Reverse-SOCKS-Proxy ??

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14483

Diogenes77 schrieb:

Habe vor, mit einigen meinen Freunden über Internet Schach zu spielen, wobei das aber nicht über einen externen Schachserver laufen soll, sonder durch direkte Verbindung ... Falls nein, welche sonstigen Möglichkeiten ausser netcat bzw. iptables seht ihr?? Gibt es so etwas wie Reverse-SOCKS-Proxy ??

Abhängig vom OS bzw. ob WireGuard unter root akzeptiert werden kann, wäre WireGuard (ein VPN) eine Alternative.

Statt netcat oder iptables, könntest Du auch stunnel4 oder socat verwenden.

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4405

Wohnort: Sachsen

Diogenes77 schrieb:

1
ssh -L <jChessBoardPort>:localhost:<jChessBoardPort> <myuser>@<dyndns-addr> 

Der Homeserver soll die eingehende Verbindung auf meinen Laptop weiterleiten, also etwa so:

<homeserver-lanip>:<jChessBoardPort>   --> <laptop-lanip>:<jChessBoardPort>

Warum nicht gleich den Port des Laptops forwarden? Das würde so aussehen:

ssh -L <jChessBoardPort>:<laptop-lanip>:<jChessBoardPort> <myuser>@<dyndns-addr>

Meine 1. Wahl wäre reverse proxy, da ein nginx ohnehin auf dem Homeserver läuft. Trotz intensivem googeln habe ich nirgend gefunden, ob es möglich ist, nginx als Reverse-Proxy auch für Nicht-HTTP(S)-Verbindungen zu verwenden. Ich will also, dass nginx einfach den TCP-Port auf einer bestimmten Location auf <laptop-lanip> forwarded, ohne dass auf diesem Port HTTP(S)-Protokoll läuft. Ist das möglich?

Das will man auch in dem Kontext nicht. Es würde über das Stream-Modul gehen, aber das ist IMHO nicht sinnvoll.

Falls nein, welche sonstigen Möglichkeiten ausser netcat bzw. iptables seht ihr?? Gibt es so etwas wie Reverse-SOCKS-Proxy ??

SOCKS Proxy würde auch technisch funktionieren. Die beste Möglichkeit ist IMHO aber wie oben beschrieben direkt den Port des Laptops zu forwarden.

Diogenes77

(Themenstarter)
Avatar von Diogenes77

Anmeldungsdatum:
22. November 2007

Beiträge: 174

Wohnort: /home

Danke euch!

Warum nicht gleich den Port des Laptops forwarden?

Es gibt noch andere ähnliche Applikationen auf unterschiedlichen Rechnern in meinem LAN die nach dem selben Schema funktionieren sollen. Ich will nicht auf jeder Maschine einen sshd laufen haben. Das soll für ganzes LAN nur von der einer Instanz (Homeserver) erledigt werden und dann jeweils zum richtigen Empfänger forwarded werden

SOCKS Proxy würde auch technisch funktionieren

Kannst bitte kurz skizzieren, wie?

stunnel

Nicht nötig, die Verbindung wird ja bereits durch ssh getunnelt. Im LAN brauche ich keine TLS Verschlüsselung

socat

OK, fällt in die netcat - Kategorie

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14483

Diogenes77 schrieb:

stunnel

Nicht nötig, die Verbindung wird ja bereits durch ssh getunnelt. Im LAN brauche ich keine TLS Verschlüsselung

BTW: stunnel kann man auch ohne Verschlüsselung benutzen/konfigurieren. Man kann z. B. ein cipher mit "null encryption" setzen.

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4405

Wohnort: Sachsen

Diogenes77 schrieb:

Es gibt noch andere ähnliche Applikationen auf unterschiedlichen Rechnern in meinem LAN die nach dem selben Schema funktionieren sollen. Ich will nicht auf jeder Maschine einen sshd laufen haben.

Das brauchst du nicht. Der forwardende Dienst ist der SSH-Daemon auf dem Homeserver. Man forwarded halt nicht einen lokalen Port, der auf dem Home-Server gebunden ist, sondern einen Port der irgendwo im Netzwerk des Home-Servers liegt.

Das soll für ganzes LAN nur von der einer Instanz (Homeserver) erledigt werden und dann jeweils zum richtigen Empfänger forwarded werden

Wie gesagt: Das ist ja so. Selbiges würde ich für alles machen, was man nicht über einen handelsüblichen Reverse-Proxy jagen kann.

SOCKS Proxy würde auch technisch funktionieren

Kannst bitte kurz skizzieren, wie?

Der Client würde einen SOCKS-Server starten, welcher einen Tunnel zum Home-Server aufbaut. Die Applikation auf dem Client muss dazu aber SOCKS-Proxies unterstützen, oder du nutzt Tools wie beispielsweise proxychains, welches als Wrapper dient. Prinzipiell kommt man mit dem SSH-Tunnel besser, wenn man nur einen bestimmten Port weiterleiten will.

Grundsätzlich ist der SSH-Tunnel genau das, was du suchst.

Diogenes77

(Themenstarter)
Avatar von Diogenes77

Anmeldungsdatum:
22. November 2007

Beiträge: 174

Wohnort: /home

Ok, herzlichen Dank für eure Tipps! Werde es wohl mit ssh machen, oder ev. socat.

Antworten |