Я использую Replica set на 3 Windows server 2012 R2 в моем VPN. IP-адреса серверов: 192.168.1.1,192.168.1.2,192.168.1.3.
Версия MongoDB: 3.4.2 Я хочу ограничить доступ к серверам MongoDB только серверами, которые являются частью набора реплик, то есть на каждом сервере. Я запускаю MongoDB с этой конфигурацией bind_ip (допустим, мы находимся на сервере 192.168.1.1):
net:
bindIp: [127.0.0.1,192.168.1.2,192.168.1.3]
Я могу подключиться к своей реплике, и все работает как положено.
Сегодня я обновил свой сервер до версии 3.4.10 mongodb. У меня две основные проблемы:
Итак, у меня вопрос по версии 3.4.10, как настроить mongodb (и набор реплик), чтобы доступ был доступен только с участвующих серверов? Здесь есть ошибка?
В net.bindIp
значение конфигурации определяет только, какие IP-адреса прослушивает ваш сервер MongoDB. Оно делает не управлять доступом с удаленных IP-адресов - это роль межсетевого экрана. Вам необходимо настроить брандмауэр на своих серверах, чтобы разрешить обмен данными между всеми членами вашего набора реплик, а также вашими клиентскими приложениями.
Для начала работы с Windows см .: Настроить Windows netsh
Брандмауэр для MongoDB.
(Допустим, мы на сервере 192.168.1.1):
net:
bindIp: [127.0.0.1,192.168.1.2,192.168.1.3]
Учитывая ваше описание, правильное значение bindIp для использования этим сервером для прослушивания как localhost, так и частного IP-адреса 192.168.1.1 будет 127.0.0.1,192.168.1.1
. Вы не можете привязаться к IP-адресам, которые не связаны с сетевыми интерфейсами на локальном сервере, поэтому вы получаете сообщение об ошибке The requested address is not valid in its context
при попытке включить удаленные IP-адреса.
Для получения дополнительных сведений о безопасности развертывания см. Контрольный список безопасности MongoDB.