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的主要内容,如果未能解决你的问题,请参考以下文章