Mongodb

MongoDB - Bind_IP 中斷更改和副本集損壞

  • February 3, 2018

我在我的 VPN 中執行 3 個 Windows server 2012 R2 上的副本集。伺服器 IP 為:192.168.1.1,192.168.1.2,192.168.1.3。

MongoDB 版本:3.4.2 我想限制對 MongoDB 伺服器的訪問,僅限於作為副本集一部分的伺服器,因此在每個伺服器中。我正在使用此 bind_ip 配置執行 MongoDB(假設我們在 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() failed 請求的地址在其上下文中無效。對於套接字:192.168.1.3:27018 使我的副本集備份並執行的唯一方法是將我所有伺服器中的 bind_ip 更改為 0.0.0.0,這是一個安全問題。

所以,我的問題是關於 3.4.10 版本,如何配置 mongodb(和副本集)以使訪問只能從參與的伺服器獲得?這裡有錯誤嗎?

net.bindIp配置值僅確定您的 MongoDB 伺服器正在偵聽的 IP 地址。它不控制來自遠端 IP 的訪問——這是防火牆的作用。您需要在伺服器上配置防火牆,以允許副本集的所有成員以及客戶端應用程序之間進行通信。

有關 Windows 的起點,請參閱:為 MongoDB配置 Windowsnetsh防火牆。

(假設我們在 192.168.1.1 伺服器上):

net:
   bindIp: [127.0.0.1,192.168.1.2,192.168.1.3]

根據您的描述,該伺服器用於偵聽 localhost 和 192.168.1.1 的私有 IP 的正確 bindIp 值將是127.0.0.1,192.168.1.1. 您無法綁定到與本地伺服器上的網路介面無關的 IP 地址,這就是為什麼The requested address is not valid in its context在嘗試包含遠端 IP 時會出現錯誤的原因。

有關保護部署的更多資訊,請參閱MongoDB 安全檢查表

引用自:https://serverfault.com/questions/895195