mongodb.conf bind_ip = 127.0.0.1不起作用,但0.0.0.0工作

GJa*_*ain 26 amazon-ec2 mongodb

我无法理解bind_ipmongodb是什么.我可以通过拥有bind_ip = 0.0.0.0,但无法使其工作,从桌面到EC2机器进行远程连接bind_ip = 127.0.0.1.

请解释一下bind_ip是什么以及它为什么适用0.0.0.0而不适用于127.0.0.1.

mongodb docs参考:

bind_ip

默认值:所有接口.

设置此选项可将mongod或mongos进程配置为绑定并侦听此地址上应用程序的连接.您可以将mongod或mongos实例附加到任何接口; 但是,如果将进程附加到可公开访问的接口,请实施适当的身份验证或防火墙限制以保护数据库的完整性.

您可以连接逗号分隔值列表以将mongod绑定到多个IP地址.

OWA*_*DVL 47

它写的所有地方都必须像这样绑定它们

bindIp : 127.0.0.1,192.168.0.50
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

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

bindIp : [127.0.0.1,192.168.0.50]
Run Code Online (Sandbox Code Playgroud)

所以尝试在[]中添加你的ips

例如:

# network interfaces
net:
      port: 27017
      bindIp : [127.0.0.1,0.0.0.0]
Run Code Online (Sandbox Code Playgroud)

但是0.0.0.0打开了.虽然这对测试来说没问题,但对于生产,您应该知道此设置的安全隐患!

  • 一年后,大约25K的具有"0.0.0.0"的MongoDB服务器被劫持,数据丢失.这个答案应该尽快更新 (7认同)
  • 这是有效的,因为它将数据库公开暴露给*all*IP.这里存在巨大的安全漏洞. (6认同)
  • 我不知道为什么它被标记为没有用的答案.我们花了大量时间试图理解我们的MongoDB无法启动的原因,最后我们发现`bindIp`参数需要这个表示法来管理多个IP.登录MongoDB是一个痛苦的屁股.在文档中只是说:"要绑定到多个IP地址,请输入逗号分隔值列表".关键是列表的含义. (5认同)

Con*_*Map 41

在将服务器绑定到0.0.0.0之前,请清楚这些更改的安全隐患:您的服务器将公开暴露给整个Internet上的所有IP.务必在您的服务器上启用身份验证!

将其绑定到127.0.0.1EC2 时,无法访问您的计算机.这不是一个错误,它是由网络接口​​绑定推理的.

127.0.0.1将仅绑定到环回接口(因此您只能在本地访问它),同时0.0.0.0将其绑定到所有可用的网络接口.

这就是为什么你绑定它时可以在EC2上访问你的mongodb 0.0.0.0(因为它现在通过互联网可用)而不是通过127.0.0.1.

对于本地服务器(如WAMP或本地mongodb服务器)看起来与您不同,但对于这种情况,您还应该0.0.0.0为本地服务器绑定可能使它们在所有网络接口上可用(因此它可能是公共的)对于知道你的IP的人,如果没有防火墙!)

在此处阅读有关服务器故障类似问题.


小智 14

任何看过这个答案的人都应该清楚,将你的mongoDB绑定到0.0.0.0可能是你有史以来最糟糕的举动.

请阅读以下文章,并确保无论何时决定公开您的(和您的客户)数据,您都会考虑以下事项:

  • 您是否有其他防火墙规则来决定谁可以
    访问您的服务
  • 了解在使用Amazon EC2时,如果您允许"内部"流量,则应将其视为完全开放,您并不孤单在亚马逊
  • 您的服务密码受到保护吗?什么样的身份验证?数据是以明文形式提交还是使用
    加密方式提交
  • 您使用默认数据库名称,还是复制粘贴示例?

  • 这并没有提供问题的答案.要批评或要求作者澄清,请在帖子下方留言 - 您可以随时评论自己的帖子,一旦您有足够的[声誉](http://stackoverflow.com/help/whats-reputation),您将能够[评论任何帖子](http://stackoverflow.com/help/privileges/comment). - [来自评论](/ review/low-quality-posts/10613323) (2认同)
  • @Blackwood我怀疑你想在~25K MongoDB赎金攻击之后重新考虑这个问题.这可能是最有帮助的答案 (2认同)