MongoDB bind_ip错误:bind()失败错误号:99无法为套接字分配请求的地址

时间:2013-12-09 08:31:49

标签: node.js mongodb ubuntu meteor

我想配置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应用程序中进行本地访问。

1 个答案:

答案 0 :(得分:17)

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

Auth是一个好主意但只依靠auth打开你的暴力攻击。

您可以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。