Mongodb.conf bind_ip = 127.0.0.1 не работает, но 0.0.0.0 работает

Я не мог понять, что bind_ip в mongodb. Я мог бы сделать удаленное подключение с рабочего стола к машине EC2, имея bind_ip = 0.0.0.0, но не смог заставить его работать с bind_ip = 127.0.0.1.

Пожалуйста, объясните мне, что такое bind_ip и почему оно работает для 0.0.0.0, а не для 127.0.0.1.

Для справки из mongodb docs:

bind_ip

По умолчанию: все интерфейсы.

Установите этот параметр, чтобы настроить процесс mongod или mongos для привязки и прослушивания соединений из приложений по этому адресу. Вы можете присоединить экземпляры mongod или mongos к любому интерфейсу; Однако, если вы присоедините процесс к общедоступному интерфейсу, осуществлять надлежащую проверку подлинности или ограничения брандмауэра для защиты целостность вашей базы данных.

Вы можете объединить список значений, разделенных запятыми, для привязки mongod к нескольким IP-адресам.

Ответ 1

Прежде чем связывать ваш сервер с 0.0.0.0, будьте предельно ясны о последствиях этих изменений для безопасности: ваш сервер будет публично открыт для всех IP-адресов всего Интернета. Обязательно включите аутентификацию на своем сервере!

Вы не можете получить доступ к своей машине, когда вы привязываете ее к 127.0.0.1 на EC2. Это не ошибка, это объясняется привязками сетевого интерфейса.

127.0.0.1 будет привязан только к интерфейсу loopback (так что вы сможете получить доступ к нему локально), а 0.0.0.0 привяжет его ко всем доступным сетевым интерфейсам.

Вот почему вы можете получить доступ к своему mongodb на EC2, когда вы привязываете его к 0.0.0.0 (как это доступно через Интернет сейчас), а не через 127.0.0.1.

Для локальных серверов (например, WAMP или локального сервера mongodb), которые не будут отличаться от вас, но в этом случае вам также следует, что привязка к 0.0.0.0 для локальных серверов может сделать их доступными по всем сетевым интерфейсам (так что это может быть общедоступно для тех, кто знает ваш IP-адрес, если нет брандмауэра!)

Ознакомьтесь с похожим вопросом о сбое сервера здесь.

Ответ 2

Всюду написано, что вы должны их связывать как

bindIp : 127.0.0.1,192.168.0.50

, но он не работает.

как работает, в версии 3.2.0 есть

bindIp : [127.0.0.1,192.168.0.50]

попробуйте добавить ваши ips внутри []

пример:

# network interfaces
net:
      port: 27017
      bindIp : [127.0.0.1,0.0.0.0]

Однако 0.0.0.0 открывается. Хотя это нормально для TESTING, для производства вы должны знать последствия этой настройки для безопасности!

Ответ 3

Для каждого, кто ищет этот ответ, должно быть ясно, что привязка вашего mongoDB к 0.0.0.0 может быть вашим худшим шагом.

Прочитайте следующую статью и убедитесь, что всякий раз, когда вы решаете обратиться к публике со своими (и вашими клиентами) данными, вы должны учитывать следующее:

  • У вас есть дополнительные правила брандмауэра, чтобы решить, кто или что может доступ к вашему сервису
  • Понимать, что при использовании Amazon EC2, если вы разрешаете "внутренний" трафик, его следует считать таким же, как если бы он был широко открыт, вы не одиноки в Amazon
  • Защищены ли ваши пароли служб? И какая аутентификация? Являются ли данные, предоставленные в ясном тексте, или используя шифрование
  • Используете ли вы имена базы данных по умолчанию или копируете ли вы пример?