Связывание с INADDR_ANY против INADDR_LOOPBACK в разработке? - PullRequest
0 голосов
/ 17 декабря 2018

Я использую Pelican для настройки блога.При запуске сервера разработки я получаю предупреждение:

Хотите ли вы, чтобы приложение «Python.app» принимало входящие сетевые подключения?Нажатие Deny может ограничить поведение приложения.Этот параметр можно изменить на панели «Брандмауэр» в настройках «Безопасность и конфиденциальность».

Я уверен, что видел это предупреждение раньше (Джанго?) И просто рассеянно принял его.Однако я пытался выяснить, что это на самом деле означает, что привело меня к кроличьей норе сетевого программирования.

Я выяснил, что Pelican по умолчанию привязывает свой сокет сервера с помощью INADDR_ANY, что привело меня кпара вопросов:

  • Есть ли какая-либо польза от связывания с INADDR_ANY, а не с INADDR_LOOPBACK?
    • Стандартный способ подключения к серверу разработчика - localhost: 8000.Есть ли случаи, когда нельзя просто использовать localhost?
  • Есть ли риск, связанный с использованием INADDR_ANY?
    • Я предполагаю, что есть некоторый риск или другой связанный с использованием INADDR_ANY, иначе предупреждение не появилось бы.Я предполагаю, что кто-то теоретически мог бы отправлять HTTP-запросы в мой сокет и связываться, ну, в общем, с тем, что мой обработчик HTTP позволил бы им?

Буду признателен, если какие-либо ответы предоставят основныеопределения терминов / концепций сетевого программирования, если это целесообразно.Мое знание предмета ограничено учебой в выходные дни.

ОБНОВЛЕНИЕ

Ответ Реми лаконичен и кажется точным.Но, хотя он объясняет концепции, он не затрагивает непосредственно некоторые из моих вопросов.Я немного поясню, если кто-нибудь еще увидит это:

Привязка к INADDR_ANY (0.0.0.0), которую я обнаружил, также является значением по умолчанию для Python http.server .По-видимому, это приводит к меньшему количеству жалоб от людей, которые ничего не знают о работе в сети (например, я), по мнению основного Pylons участника.Такие вещи, как виртуальные машины, упоминаются как источник разочарования.

Единственный непосредственный риск, связанный с привязкой к INADDR_ANY, заключается в том, что кто-то еще в вашей локальной сети может потенциально подключиться к вашему серверу разработки.Но до тех пор, пока вы не поделитесь доступом к Интернету с вашим заклятым врагом, у вас все в порядке.Единственный риск от внешних источников (за пределами вашей локальной сети) возникнет, если вы явно разрешите это через настройку соответствующей переадресации портов.

1 Ответ

0 голосов
/ 18 декабря 2018

Если вы связываете сервер с INADDR_LOOPBACK, к нему могут подключаться только клиенты на том же компьютере, что и сервер, используя петлевой IP-адрес, такой как 127.0.0.1 (IPv4) или ::1 (IPv6), или имя, котороесопоставляется с таким IP-адресом, как "localhost".

. Если вы связываете сервер с INADDR_ANY, сервер привязан ко всем доступным сетевым интерфейсам на машине и может быть подключен любым клиентом налокальная сеть сервера, используя IP-адрес сервера или имя хоста.Клиенты за пределами локальной сети также могут подключаться, но только если маршрутизатор локальной сети настроен соответствующим образом для переадресации портов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...