2013-10-03 16 views
5

Tôi đang chạy OS X Mountain Lion trên máy có địa chỉ IP cục bộ 192.168.1.6 (như đã báo cáo bởi cả tiện ích Mạng và ifconfig) và đang chạy một máy chủ web phát triển cục bộ (Django) trên cổng 8000 mà tôi muốn kết nối từ một máy ảo đang chạy một hệ điều hành khách trên cùng một máy.Tại sao tôi có thể kết nối với http://127.0.0.1:8000/ nhưng không được http://192.168.1.6/

Trên hệ điều hành máy chủ (ví dụ: OS X chạy trên kim loại của máy w/địa chỉ 192.168.1.6) Tôi có thể kết nối với máy chủ web thử nghiệm của mình thông qua trình duyệt bằng cách điều hướng tới 127.0.0.1:8000; hoặc localhost: 8000; nhưng không phải khi sử dụng địa chỉ IP cục bộ của máy. Dưới đây là những gì làm cho điều này thêm khó hiểu:

  • Bộ định tuyến không lọc cổng; và, để chắc chắn, tôi đã đặt nó để chuyển tiếp một cách rõ ràng các cổng 8000 và 22 đến 192.168.1.6; Và nói về cổng 22,
  • Khi tôi bắt đầu dịch vụ SSH, tôi có thể kết nối (từ dòng lệnh) qua ssh 192.168.1.6
  • Đó không phải là vấn đề trình duyệt, vì tôi cũng không thể telnet gửi 192.168.1.6 cổng 8000 (kết nối bị từ chối) trong khi tôi có thể telnet đến 127.0.0.1 cổng 8000 và tôi cũng có thể telnet đến 192.168.1.6 cổng 22
  • Tường lửa được đặt thành tắt (như được báo cáo trong Tùy chọn hệ thống) nhưng phải thêm an toàn, tôi cũng đã đặt quy tắc ipfw để cho phép mọi thứ thông qua

Dưới đây là các quy tắc ipfw:

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

Dưới đây là thêm xác nhận rằng cổng là, thực sự, được lắng nghe bởi máy chủ thử nghiệm của tôi:

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

vì vậy những gì đang xảy ra ở đây? Bằng cách nào đó cổng 22 đang được xử lý khác với cổng 8000, nhưng mọi nơi tôi có thể nghĩ để tìm những khác biệt mà tôi không thể tìm thấy. Tại sao tôi không thể vào cổng 8000 của máy này bằng địa chỉ IP cục bộ của nó?

Trả lời

17

Khi bạn khởi động máy chủ phát triển Django bạn cần phải cung cấp địa chỉ một cách rõ ràng:

python manage.py runserver 192.168.1.6:8000 

Hoặc nếu bạn muốn máy chủ để chạy trên tất cả các giao diện, bạn có thể sử dụng:

python manage.py runserver 0.0.0.0:8000 

Trong trường hợp khác Máy chủ phát triển Django mặc định chỉ chạy trên giao diện cục bộ.

+0

Cảm ơn bạn rất nhiều! – shanusmagnus

+0

Tôi yêu bạn vì điều này. –

+0

Um ... cảm ơn. Vậy ... điều này có nghĩa là chúng ta sẽ hẹn hò bây giờ? ;) –

-1

tôi đã giải quyết được issue.There là một vài điều bạn có thể được liệt kê dưới đây missing.Listing họ

1.Once nó bắt đầu máy chủ, không nhấn Ctrl + C anyhow .u có thể nhấn nó để sao chép để url và vô tình đóng máy chủ do nó có thể xảy ra.

2. khôi phục http://127.0.0.1:8000/ ... thay đổi số cổng thành http://127.0.0.1:8080/ ... Điều đó sẽ hoạt động.

3.Thử thay đổi cài đặt tường lửa và cho phép ứng dụng.

4.Hãy thử mở bằng các trình duyệt khác nhau và ẩn danh.

Các bước trên đã giúp giải quyết vấn đề của tôi.Hy vọng họ cũng giúp bạn ...:)

-1

Tôi đã gặp sự cố này Đăng nhập từ xa vào iPhone đã jailbreak của tôi. Tôi đã cài đặt OpenSSH trong Cydia để giải quyết vấn đề. Bạn co thể thử.

Các vấn đề liên quan