2013-10-03 12 views
5

Używam systemu OS X Mountain Lion na komputerze z lokalnym adresem IP 192.168.1.6 (jak podano zarówno przez narzędzie sieciowe, jak i ifconfig) i uruchamiam lokalny serwer programistyczny (Django) na porcie 8000, z którym chciałbym się połączyć z maszyny wirtualnej, na której działa system-gość na tym samym komputerze.Dlaczego mogę połączyć się z http://127.0.0.1:8000/, ale nie pod http://192.168.1.6/

W systemie operacyjnym (tj. OS X działającym na metalu maszyny z adresem 192.168.1.6) mogę połączyć się z moim testowym serwerem internetowym za pośrednictwem przeglądarki, przechodząc do 127.0.0.1:8000; lub localhost: 8000; ale nie podczas korzystania z lokalnego adresu IP urządzenia. Oto, co sprawia, że ​​jest to dodatkowe mylące:

  • Router nie filtruje portów; i, dla pewności, ustawiłem go tak, aby wyraźnie przekazywał do portów 8000 i 22 do 192.168.1.6; Mówiąc o porcie 22,
  • Po uruchomieniu usługi SSH mogę połączyć się (z wiersza poleceń) przez ssh 192.168.1.6
  • To nie jest problem z przeglądarką, ponieważ nie mogę też telnetować do 192.168.1.6 port 8000 (połączenie odmówił), podczas gdy I może telnet do 127.0.0.1 port 8000, i mogę również telnet do portu 192.168.1.6 22
  • Zapora sieciowa jest wyłączona (jak podano w Preferencjach systemowych), ale musi być dodatkowo Bezpiecznie, ustawiłem też regułę ipfw, aby wszystko działało przez:

Oto zasady ipfw:

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

Oto dodatkowe potwierdzenie, że port jest rzeczywiście, słuchanej przez mojego serwera testowego:

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

więc co tu się dzieje? W jakiś sposób port 22 traktowany jest inaczej niż port 8000, ale w każdym miejscu, w którym mogę myśleć o tych różnicach, nie mogę ich znaleźć. Dlaczego nie mogę dostać się do portu 8000 tego komputera przy użyciu jego lokalnego adresu IP?

Odpowiedz

17

Po uruchomieniu serwer deweloperski Django trzeba podać adres wyraźnie:

python manage.py runserver 192.168.1.6:8000 

Lub jeśli chcesz, aby serwer do uruchomienia na wszystkich interfejsach można użyć:

python manage.py runserver 0.0.0.0:8000 

w przeciwnym wypadku Serwer programistyczny Django domyślnie działa tylko w interfejsie lokalnym.

+0

Dziękuję bardzo! – shanusmagnus

+0

Kocham cię za to. –

+0

Um ... dzięki. Więc ... czy to oznacza, że ​​będziemy się teraz spotykać? ;) –

-1

I rozwiązać issue.There kilka rzeczy może być missing.Listing je below-

1.Once to uruchamia serwer, nie naciskaj Ctrl + C byle .ui może być naciśnięcie go skopiować do adresu URL i to przypadkowo zamyka serwer, z powodu którego może się zdarzyć.

2. Zamiast http://127.0.0.1:8000/ ... zmień numer portu na http://127.0.0.1:8080/ ... To zadziała.

3. Spróbuj zmienić ustawienia zapory i pozwól aplikacji.

4. Spróbuj otworzyć go w różnych przeglądarkach i trybie incognito.

Powyższe czynności pomogły rozwiązać mój problem.Niektóre pomogły ci też ...:)

-1

Wpadłem na ten problem Zdalne logowanie do mojego iPhone'a jailbreak. Zainstalowałem OpenSSH w Cydii, aby rozwiązać problem. Możesz spróbować.

Powiązane problemy