2013-07-11 122 views
22

我無法理解mongodb中的bind_ip是什麼。我可以通過使用bind_ip = 0.0.0.0從桌面到EC2機器進行遠程連接,但無法使其與bind_ip = 127.0.0.1一起使用。mongodb.conf bind_ip = 127.0.0.1不起作用,但0.0.0.0起作用

請解釋一下bind_ip是什麼以及它爲什麼適用於0.0.0.0而不適用於127.0.0.1

僅供參考來自mongodb docs

bind_ip

默認值:所有接口。

設置此選項以配置mongod或mongos進程綁定到並偵聽來自此地址上的應用程序的連接。 您可以將mongod或mongos實例附加到任何接口;但是,如果將進程附加到可公開訪問的接口,則 將執行適當的身份驗證或防火牆限制,以保護數據庫的完整性。

您可以連接逗號分隔值列表以將mongod綁定到多個IP地址。

回答

35

之前,您的服務器綁定至0.0.0.0,請清楚地瞭解這些變化的安全隱患:您的服務器將被公開曝光到所有IP整個互聯網上。請確保在您的服務器上啓用身份驗證!

當您將其綁定到EC2上的127.0.0.1時,無法訪問您的機器。這不是一個錯誤,它是由網絡接口​​綁定推理的。

127.0.0.1只會綁定到回送接口(因此您只能在本地訪問它),而0.0.0.0會將其綁定到所有可用的網絡接口。

這就是爲什麼你可以在EC2上訪問您的MongoDB,當你把它綁定到0.0.0.0(因爲它是可以通過現在的互聯網),而不是通過127.0.0.1

對於本地服務器(如WAMP或本地mongodb服務器)來說,這些服務器與您看起來不一樣,但對於這種情況,您還應該爲本地服務器綁定0.0.0.0,這可能會使它們在所有網絡接口所以如果沒有防火牆的話,它可能會被公衆知道)

請閱讀similar question on Server Fault這裏。

+0

我的回答比較好,請在下面檢查:) – OWADVL

12

對於查看此答案的任何人來說,將mongoDB綁定到0.0.0.0應該是明確的舉動。

請在以下article閱讀並確保當你決定去所有的公共與你(和你的客戶)的數據,你考慮以下因素:

  • 你有額外的防火牆規則決定誰或
  • 是什麼可以
    接入服務
  • 明白,使用Amazon EC2時,如果你讓「內部」交通應考慮一樣把它敞開,你 並不孤單亞馬遜你的服務密碼保護?什麼樣的認證?數據是以明文形式提交還是使用
    加密
  • 您是使用默認數據庫名稱還是複製粘貼示例?
+2

這並沒有提供問題的答案。要批評或要求作者澄清,在他們的帖子下留下評論 - 你總是可以評論你自己的帖子,一旦你有足夠的[聲譽](http://stackoverflow.com/help/whats-reputation),你會能夠[評論任何帖子](http://stackoverflow.com/help/privileges/comment)。 - [來自評論](/ review/low-quality-posts/10613323) – Blackwood

+2

@Blackwood我懷疑在25K MongoDB贖金襲擊後你會想重新考慮這件事。這可能是最有用的答案 –

+0

@PanagiotisKanavos我已經回顧了這個問題,雖然這可能是一個好建議,但它不是問題的答案。 – Blackwood

40

它到處是寫,你必須將它們綁定這樣

bindIp : 127.0.0.1,192.168.0.50 

,但它不工作。

它是如何工作,在3.2.0版本是

bindIp : [127.0.0.1,192.168.0.50] 

所以嘗試添加[]內

例如您的IPS:

# network interfaces 
net: 
     port: 27017 
     bindIp : [127.0.0.1,0.0.0.0] 

但是0.0.0.0打開。雖然這對TESTING是可以的,但對於生產你應該知道這個設置的安全含義!

+5

我不知道爲什麼它被標記爲沒有用的答案。我們花了大量的時間試圖理解爲什麼我們的MongoDB無法啓動,最後我們發現'bindIp'參數需要這個符號來管理多個IP。登錄MongoDB是一個痛苦的屁股。在文檔上只是說:「要綁定到多個IP地址,輸入一個逗號分隔值列表」。關鍵是列表意味着什麼。 – inigomedina

+1

謝謝!這解決了我的問題! :) –

+1

實際工作 – Kaunteya

相關問題