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
- Защищены ли ваши пароли служб? И какая аутентификация? Являются ли данные, предоставленные в ясном тексте, или используя
шифрование
- Используете ли вы имена базы данных по умолчанию или копируете ли вы пример?