fragen stichworte

Nur lokalen Daemon abhören, der auf einer anderen Schnittstelle lauscht (mit iptables Port Forwarding)?

Ich habe ein Daemon-Programm, das auf 127.0.0.1:8000 lauscht.
Ich muss darauf zugreifen, wenn ich mich mit vpn an meine Box anschließe.
Ich möchte, dass es auch auf der PPP0-Schnittstelle zu hören ist.

Ich habe die "ssh -L" -Methode ausprobiert. es funktioniert, aber ich glaube nicht, dass dies der richtige Weg ist, einen zusätzlichen ssh-Prozess im Hintergrund auszuführen.
Ich habe die "netcat" -Methode ausprobiert. Es wird beendet, wenn die Verbindung geschlossen wird. also kein gültiger Weg zum "Zuhören".

Ich habe auch mehrere iptables-Regeln ausprobiert. Keiner von ihnen hat gearbeitet.
Ich führe hier nicht alle Regeln auf, die ich verwendet habe.

iptables -A FORWARD -j ACCEPT
iptables -t nat -A PREROUTING -i ppp+ -p tcp --dport 8000 -j DNAT --to-destination 127.0.0.1:8000

der obige Regelsatz funktioniert nicht.
Ich habe net.ipv4.ip_forward auf 1 gesetzt.

weiß jemand, wie man den Verkehr von der ppp-Schnittstelle nach lo umleitet?
Hören Sie sich "192.168.45.1:8000 (ppp0)" sowie "127.0.0.1:8000 (lo)" an
Es ist nicht nötig, den Hafen zu ändern.

thanx

= - = Update:

auf der Roaming-Box, wenn ich

verwende
nc 192.168.45.1 8000

Es gibt keine Ausgabe, egal was ich tippe.
Wenn Sie dies jedoch in einer SSH-Sitzung tun, gilt für beide

nc 127.0.0.1 8000
nc 192.168.45.1 8000

Es werden Fehlermeldungen ausgegeben, wenn ich einen beliebigen Text eingebe.
Bedeutet das, dass ich zusätzliche Regeln brauche, um die Ausgabe wieder in die Roaming-Box umzuleiten?

antworten

Ich warf einen kurzen Blick auf Ihre iptables-Regeln und mein erster Gedanke ist, dass sie gut aussehen. Bist du sicher, dass es nicht schon funktioniert - aber nur von einem ausländischen Gastgeber. Wenn Sie versuchen, vom Server aus eine Verbindung herzustellen, funktioniert es nicht. In diesem Fall müssen Sie auch Ihre Nat-Regel zur nat OUTPUT-Kette hinzufügen:

-t nat -A OUTPUT -p tcp -dst 192.168.45.1 --dport 8000 -j DNAT --to-destination 127.0.0.1:8000

(Dies ist notwendig, da Ihre lokalen Pakete nicht die PREROUTING-Kette durchlaufen - zumindest auf meinem System nicht.)

Ich würde das zuerst versuchen, aber vielleicht gibt es noch ein weiteres Problem. (Vielleicht gibt es nicht nur TCP-Pakete, sondern auch udp?)

BTW, vielleicht können Sie Ihren Daemon so konfigurieren, dass er stattdessen beide Schnittstellen überwacht.