Почему я могу подключиться к http://127.0.0.1:8000/ но не http://192.168.1.6/

Я запускаю OS X Mountain Lion на машине с локальным IP-адресом 192.168.1.6 (как сообщается как сетевой утилитой, так и ifconfig) и запускаю локальный (Django) веб-сервер разработки на порту 8000, к которому я хотел бы подключиться с виртуальной машины под управлением гостевой ОС на той же машине.

на хост-ОС (т. е. OS X работает на металле машины с адресом 192.168.1.6) я могу подключиться к моему тестовому веб-серверу через браузер, перейдя к 127.0.0.1:8000; или localhost: 8000; но не при использовании локального IP-адреса машины. Вот что делает это дополнительным запутанным:

  • маршрутизатор не фильтрует порты; и, чтобы быть уверенным, я установил его для явной переадресации портов 8000 и 22 на 192.168.1.6; и говоря о порту 22,
  • когда я запускаю службу SSH, я могу подключиться (из командной строки) через ssh 192.168.1.6
  • это не проблема браузера, потому что я также не могу telnet для 192.168.1.6 порт 8000 (соединение отказано), пока я can telnet к порту 127.0.0.1 8000, и я также могу telnet к порту 192.168.1.6 22
  • брандмауэр отключен (как сообщается в Системных настройках), но для дополнительной безопасности я также установил правило ipfw, чтобы разрешить все через

вот правила ipfw:

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

вот дополнительное подтверждение того, что порт действительно прослушивается моим тестовым сервером:

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

так что здесь происходит? Каким-то образом порт 22 обрабатывается иначе, чем порт 8000, но в каждом месте, где я могу думать, чтобы искать эти различия, я не могу их найти. Почему я не могу войти в порт 8000 этой машины, используя ее локальный ip-адрес?

3 ответов


когда вы запускаете сервер разработки Django, вам нужно явно указать адрес:

python manage.py runserver 192.168.1.6:8000

или если вы хотите, чтобы сервер работал на всех интерфейсах, вы можете использовать:

python manage.py runserver 0.0.0.0:8000

в другом случае сервер разработки Django по умолчанию работает только на локальном интерфейсе.


Я решил эту проблему.Есть несколько вещей, которые вы могли бы упустить.Перечисляя их ниже -

1.После запуска сервера не нажимайте Ctrl+C в любом случае .u может нажимать его для копирования на url-адрес, и это случайно закрывает сервер, из-за которого это может произойти.

2.вместо http://127.0.0.1:8000/ ...измените номер порта на http://127.0.0.1:8080/ ...Это сработает.

3.Попробуйте изменить настройки брандмауэра и разрешить приложение.

4.Попробуйте открыть его с помощью разных браузеров и инкогнито тоже.

вышеуказанные шаги помогли решить мою проблему.Надеюсь, они тоже помогут вам...:)


Я столкнулся с этой проблемой удаленного входа в мой джейлбрейк iPhone. Я установил OpenSSH в Cydia, чтобы решить проблему. Можешь попробовать.