OS X - Weiterleitung des externen Ports an die lokale Loopback-Adresse

OS X - Weiterleitung des externen Ports an die lokale Loopback-Adresse

Ich habe einen HTTP-Dienst an Port 8000 gebunden, auf den ich von einem anderen Computer im Netzwerk aus zugreifen möchte, aber ich kann anscheinend keine Verbindung über die externe IP-Adresse des Computers herstellen (z. B. 192.168.0.105). Ich habe überprüft, dass die OS X-Firewall nicht läuft, daher gehe ich davon aus, dass das Problem darin besteht, dass der Dienst nur an die IP-Adresse 127.0.0.1 gebunden ist und nicht an die externe IP-Adresse.

Was wäre der einfachste Weg, externe Verbindungen auf Port 8000 vorübergehend an 127.0.0.1:8000 weiterzuleiten?

Antwort1

Der einfachste und schnellste Weg, lokal gebundene Ports für die öffentliche Schnittstelle verfügbar zu machen, ohne den zugrunde liegenden Dienst neu zu konfigurieren, besteht darin, eine SSH-Portweiterleitung zu erstellen und diese global verfügbar zu machen (standardmäßig lauscht sie nur lokal).

Da es sich um dieselbe Maschine handelt, müssen Sie unterschiedliche Ports verwenden. Starten Sie auf dem Mac, auf dem der Dienst ausgeführt wird,

ssh -v -g -L 8001:localhost:8000 localhost

-vfür ausführlich, damit Sie die eingehenden Verbindungen sehen

-gum es auf der öffentlichen Schnittstelle verfügbar zu machen

-L port:targethost:targetportalso, das weißt du ja schon :-)

falls Sie über mehr als eine aktive Schnittstelle auf dem Computer verfügen, erweitern Sie die -LAnweisung um die Adresse, an die Sie sie binden möchten.

Antwort2

Verwenden Sie ipfw, es mag iptables in Linux.

Ich nehme an, Sie verwenden einen SSH-Portweiterleitungsdienst zu Ihrem lokalen Server.

ipfw add fwd 127.0.0.1,8000 tcp from any to 192.168.0.105 dst-port 8000

Die andere Maschine im Netzwerk kann über 192.168.0.105:8000 auf den Dienst zugreifen.

Antwort3

Wenn ich richtig verstehe,Tintenfischkönnte funktionieren. Versuchen Sie es auch mit dem Computernamen statt der IP oder einem anderen Dienst (Ping, VNC, FTP usw.).

Antwort4

Stellen Sie zunächst sicher, dass Sie das richtige Problem angehen. Mit dem folgenden netstatBefehl können Sie überprüfen, auf welchen IP-Adressen der Webserver lauscht:

$ netstat -an | grep LISTEN
tcp46      0      0  *.8000                 *.*                    LISTEN
tcp4       0      0  *.88                   *.*                    LISTEN
tcp6       0      0  *.88                   *.*                    LISTEN
tcp4       0      0  127.0.0.1.631          *.*                    LISTEN
tcp6       0      0  ::1.631                *.*                    LISTEN

In der ersten Zeile dieses Beispiels bedeutet „*.8000“, dass etwas (vermutlich der Webserver) auf Port 8000 auf allen gebundenen IPs lauscht. Andererseits bedeuten die letzten beiden Zeilen, dass etwas auf Port 631 auf den IPv4- und IPv6-Loopbacks (127.0.0.1 und ::) lauscht. Wenn Sie beim Ausführen des Befehls „127.0.0.1:8000“ sehen, bedeutet das, dass Sie mit Ihrer Diagnose auf dem richtigen Weg sind.

Wenn dies das Problem ist, ist es wahrscheinlich am besten, es zu lösen, indem der Webserver an alle IPs gebunden wird, anstatt zu versuchen, es mit einem Forwarder zu umgehen. Überprüfen Sie Ihre Apache-Konfigurationsdatei(en) (die Standarddatei unter OS X ist /etc/apache2/httpd.conf sowie alles, was darin "Included" ist) auf "Listen"-Anweisungen. Wenn Sie

Listen 127.0.0.1:8000

ändere es in

Listen 8000

verwandte Informationen