Назад | Перейти на главную страницу

MongoDB - Bind_IP Критические изменения и набор реплик нарушены

Я использую 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. У меня две основные проблемы:

  1. bindIp принимает только строку CSV, а не массив, поэтому я изменил конфигурацию на 127.0.0.1,192.168.1.2,192.168.1.3 (критическое изменение)
  2. Мой сервер MongoDB не желает запускаться из-за следующей ошибки: [initandlisten] listen (): bind () failed Запрошенный адрес недействителен в своем контексте. для сокета: 192.168.1.3:27018 Единственный способ восстановить и запустить мою реплику - это изменить bind_ip на 0.0.0.0 на всех моих серверах, что является проблемой безопасности.

Итак, у меня вопрос по версии 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.