MongoDB - Bind_IP Прерывание изменений и нарушение набора реплик

Я использую Реплику, установленную на 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]

Я могу подключиться к своей реплике и все работает, как ожидалось.

Сегодня я обновил свой сервер до версии mongodb 3.4.10. У меня есть две основные проблемы:

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

Итак, мой вопрос о версии 3.4.10, как настроить mongodb (и набор реплик), чтобы доступ был доступен только с участвующих серверов? Здесь есть ошибка?

1 ответ

Решение

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.

Другие вопросы по тегам