2013-10-03 4 views
5

Ich betreibe OS X Mountain Lion auf einem Rechner mit der lokalen IP-Adresse 192.168.1.6 (wie gemeldet Sowohl mit dem Dienstprogramm Network als auch mit ifconfig) und mit einem lokalen (Django) Entwicklungs-Webserver auf Port 8000, mit dem ich eine Verbindung zu einer virtuellen Maschine herstellen möchte, die ein Gastbetriebssystem auf demselben Computer ausführt.Warum kann ich mich mit http://127.0.0.1:8000/ verbinden, aber nicht mit http://192.168.1.6/

Auf dem Host-Betriebssystem (dh OS X läuft auf dem Metall der Maschine mit Adresse 192.168.1.6) kann ich über den Browser eine Verbindung zu meinem Test-Webserver herstellen, indem ich zu 127.0.0.1:8000 navigiere; oder localhost: 8000; aber nicht bei Verwendung der lokalen IP-Adresse des Geräts. Hier ist, was dieses Extra verwirrend macht:

  • Der Router filtert die Ports nicht; und, um sicher zu sein, ich habe es so eingestellt, dass Ports 8000 und 22 explizit an 192.168.1.6 weitergeleitet werden; Und was Port 22 angeht,
  • Wenn ich den SSH-Dienst starte, kann ich (über die Befehlszeile) über ssh 192.168.1.6
  • verbinden Es ist kein Browserproblem, weil ich auch nicht telnet zu 192.168.1.6 Port 8000 (Verbindung abgelehnt), während ich kann Telnet zu 127.0.0.1 Port 8000, und ich kann auch Telnet zu 192.168.1.6 Port 22
  • Die Firewall ist ausgeschaltet (wie in den Systemeinstellungen gemeldet), aber extra sein Safe, habe ich gesetzt auch eine ipfw Regel alles durch

Hier sind die ipfw Regeln zu ermöglichen:

00100 allow tcp from any to any dst-port 8000 
65535 allow ip from any to any 

Dies ist eine zusätzliche Bestätigung, dass der Port ist in der Tat, die von meinem Test-Server gehört zu werden:

netstat -an | grep 8000 
tcp4  0  0 127.0.0.1.8000   *.*     LISTEN 

so was hier vor sich geht? Irgendwie wird Port 22 anders als Port 8000 behandelt, aber an jedem Ort kann ich nach diesen Unterschieden suchen, die ich nicht finden kann. Warum kann ich nicht über die lokale IP-Adresse in den Port 8000 des Geräts gelangen?

Antwort

17

Wenn Sie Django Entwicklungs-Server starten müssen Sie die Adresse explizit geben:

python manage.py runserver 192.168.1.6:8000 

Oder, wenn der Server auf allen Schnittstellen laufen möchten, können Sie verwenden:

python manage.py runserver 0.0.0.0:8000 

In einem anderen Fall Der Django-Entwicklungsserver wird standardmäßig nur auf der lokalen Schnittstelle ausgeführt.

+0

Vielen Dank! – shanusmagnus

+0

Ich liebe dich dafür. –

+0

Ähm ... danke. Also ... bedeutet das, dass wir uns jetzt verabreden? ;) –

-1

Ich löste die issue.There ein paar Dinge, die Sie ihnen unten-

1.Once es den Server startet, nicht drücken Sie Strg + C sowieso könnte missing.Listing .u könnte es sein drücken kopieren zu url und das schließt versehentlich den Server, aufgrund dessen es passieren könnte.

2. statt http://127.0.0.1:8000/ ... ändern Sie die Portnummer zu http://127.0.0.1:8080/ ... Das würde funktionieren.

3. Versuchen Sie, die Firewall-Einstellung zu ändern und die App zuzulassen.

4.Try Öffnen mit verschiedenen Browsern und Inkognito zu.

Die oben genannten Schritte halfen, mein Problem zu lösen.Helfen sie Ihnen auch ...:)

-1

Ich lief in dieses Problem Remote Login zu meinem Jailbreak iPhone. Ich habe OpenSSH in Cydia installiert, um das Problem zu lösen. Du kannst es versuchen.