Forum: PC Hard- und Software Linux Port extern erreichbar machen


von Steffen (Gast)


Lesenswert?

Hallo zusammen,

ich habe eine Software, die auf dem Port 50000 Daten sendet.

Mit "telnet localhost 50000" kann ich die Daten anzeigen. Nun möchte ich 
von einem anderen Netzwerk Device die Daten einlesen. Das funktioniert 
leider nicht, da der Port nur für localhost "freigegeben" ist:

netstat -nlp liefert folgende Information:
Local Address: 127.0.0.1:50000

An der Software kann ich leider nichts ändern. Kann ich nicht einfach 
einen Port mit Local Address 0.0.0.0 auf den internen Port weiterleiten?

Ich habe mich gerade mit iptables versucht, bin aber noch nicht 
durchgestiegen. Vielleicht hat jemand von euch einen Tipp für mich.

Ich habe es mir so vorgestellt: Port 50001 mit Local Address 0.0.0.0 auf 
Port 50000 mit Local Address 127.0.0.1 weiterleiten?

Vielen Dank!
Steffen

von Marc S. (marc_s86)


Lesenswert?

zeig mal deinen iptables versuch, das ist der richtige Weg

von Steffen (Gast)


Lesenswert?

Hallo Marc,

danke, dass du dir das anschaust. Meine Linux Kenntnisse sind leider 
noch etwas rudimentär. Meine Versuche:

iptables -A INPUT -i wlan0 -p tcp --dport 50001 -j ACCEPT

sudo iptables -t nat -A PREROUTING -t nat -p tcp -d 127.0.0.1 --dport 
50000 -j DNAT --to 0.0.0.0:50001

sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

Das habe ich im Internet als Beispiel gefunden und entsprechend 
angepasst.

LG

von Gerd E. (robberknight)


Lesenswert?

Steffen schrieb:
> An der Software kann ich leider nichts ändern.

Sicher? Was ist das denn für ein Programm?

Wenn man wollte, könnte man es vermutlich mit LD_PRELOAD ändern.

> Ich habe mich gerade mit iptables versucht, bin aber noch nicht
> durchgestiegen. Vielleicht hat jemand von euch einen Tipp für mich.

Doch, das sollte schon gehen. Schau mal nach Anleitungen für 
Portforwarding, das ist hier eigentlich nichts anderes.

> Ich habe es mir so vorgestellt: Port 50001 mit Local Address 0.0.0.0

Bei iptables hast Du keine "Local Address", sondern Selektoren. Da 
nimmst Du einfach nur -p tcp --dport 50001 und leitest das dann mit -j 
DNAT --to 127.0.0.1:50000 weiter. Das ganze natürlich im prerouting der 
nat-table.

Ich meine mich aber dunkel zu erinnern daß es irgendwo noch einen 
speziellen schutz für 127.0.0.1 gab der dort den Empfang fremder Pakete 
verhindert hat. Weiß nicht ob das genau für diesen Fall gilt oder was 
ähnliches war. Wenn es nicht geht also einfach mal in die 
messages/journal schauen. Evtl. musst du den Schutz dann noch irgendwo 
unter /proc/sys/net abschalten.

von Philipp K. (philipp_k59)


Lesenswert?

erstmal port freischalten:

sudo iptables -A INPUT -p tcp --dport 50000 -j ACCEPT

Ausprobieren, und wenns klappt in die permanent einbinden.. wie das geht 
kommt da auch auf die Distribution an.

EDIT:Ups, falsch verstanden..das musste ich auch noch nicht machen aber 
googles erster Eintrag hört sich nach der Lösung an.

http://forum.ubuntuusers.de/topic/portweiterleitung-zum-loopbackinterface-localh/

: Bearbeitet durch User
von Steffen (Gast)


Lesenswert?

@Philipp: Vielen Dank. Die erste Konfiguration in dem Post hat super 
funktioniert.

@all: Vielen Dank für eure Unterstützung

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.