![OS X - Weiterleitung des externen Ports an die lokale Loopback-Adresse](https://rvso.com/image/1263763/OS%20X%20-%20Weiterleitung%20des%20externen%20Ports%20an%20die%20lokale%20Loopback-Adresse.png)
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
-v
für ausführlich, damit Sie die eingehenden Verbindungen sehen
-g
um es auf der öffentlichen Schnittstelle verfügbar zu machen
-L port:targethost:targetport
also, das weißt du ja schon :-)
falls Sie über mehr als eine aktive Schnittstelle auf dem Computer verfügen, erweitern Sie die -L
Anweisung 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 netstat
Befehl 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