MongoDB bind_ip 错误:bind() failed errno:99 Cannot assign requested address for socket

Posted

技术标签:

【中文标题】MongoDB bind_ip 错误:bind() failed errno:99 Cannot assign requested address for socket【英文标题】:MongoDB bind_ip error: bind() failed errno:99 Cannot assign requested address for socket 【发布时间】:2013-12-26 07:18:03 【问题描述】:

我想配置 mongodb 以允许来自外部 IP 地址的远程连接,例如 66.31.123.123

0.0.0.0 设置为bind_ip 有效,但我想限制更多,只允许某些IP 地​​址连接。我将66.31.123.123 附加到bind_ip 列表中,但mongodb 在下面抛出错误:

mongodb.conf

bind_ip = 127.0.0.1,66.31.123.123
port = 27017

auth = true

mongodb 日志

Mon Dec  9 03:25:59 [initandlisten] ERROR: listen(): bind() failed errno:99 Cannot assign requested address for socket: 66.31.123.123:27017

问题:为什么添加外部 ip 不起作用?如果使用auth=true,是否足以安全地使用0.0.0.0 作为bind_ip? mongodb 将从 Meteor.js 应用程序本地访问。

【问题讨论】:

bind_ip 告诉 mongod(或 mongos)绑定到哪个网络接口地址,它不会过滤任何传入连接的 ip。 【参考方案1】:

正如guido所说,bind_ip是mongo服务器自己的IP地址。

身份验证是个好主意,但仅依赖身份验证会使您面临暴力攻击。

您可以bind_ip = 0.0.0.0 并使用防火墙阻止到端口 27017 的所有传入连接,除非来自 66.31.123.123。

另一个问题是你的流星服务器与你的 mongo 服务器是否接近——它是在私有网络上还是在公共网络上。如果是公开的,你应该recompile mongodb to support SSL,或者你应该tunnel your mongodb connection through SSH。

如果您决定使用隧道,请将 bind_ip 绑定到 127.0.0.1 并忽略传入的 27017。

【讨论】:

以上是关于MongoDB bind_ip 错误:bind() failed errno:99 Cannot assign requested address for socket的主要内容,如果未能解决你的问题,请参考以下文章

如何使用多个 ip 地址设置 mongod.conf bind_ip

MongoDB无法远程连接

MongoDB配置(持续学习更新ing……)

远程连接MongoDB的时候 报错

mongodb-API

MongoDB