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. У меня есть две основные проблемы:
- bindIp принимает только строку CSV, а не массив, поэтому я изменил конфигурацию на 127.0.0.1,192.168.1.2,192.168.1.3 (критическое изменение)
- Мой сервер 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.