MongoDB仅监听本地主机和局域网IP

4

我有一台安装了mongodb的Ubuntu服务器。是否可以以这样的方式配置mongodb,以便我只能使用本地主机和其局域网IP地址连接到它。

默认的mongo配置可用于使用localhost进行连接:

bind_ip = 127.0.0.1

如果我切换到局域网IP,那么我只能使用该IP连接,而不能使用本地主机名“localhost”连接。
bind_ip = 10.10.10.10

如果我尝试同时添加两个,那么会出现“地址已使用”错误,并且无法启动:

bind_ip = 127.0.0.1, 10.10.10.10

如果我移除bind_ip设置,则两者都可以工作,但我也能够使用服务器的外部IP连接(这不是我想要的)。
#bind_ip = 127.0.0.1, 10.10.10.10

那么,我该如何告诉Mongo监听本地接口,但允许来自本地主机和其局域网IP的连接?

1
设置 bind_ip=localhost,<LAN IP> 是正确的 MongoDB 设置。您能否在日志中包含完整的错误消息?此外,从配置文件中摘录所有的网络设置可能会有所帮助。您使用的 MongoDB 版本是什么? - wdberkeley
这很有趣。我尝试使用你的建议再次重现错误(只是为了确认)- 它却毫无问题地运行了...经过一堆测试,我意识到了区别所在。请注意:在我的帖子中,逗号后面有一个空格。这就是问题所在。去掉空格,它就能像我想要的那样正常工作。有趣。(顺便说一下,这是一个干净的2.6.6安装-没有其他配置更改)。 - pqvst
很不幸,因为我注意到了这个空格,并试图通过包含额外的空格来重现问题。对我来说运行良好。我现在意识到诀窍是您正在使用旧的配置文件格式而不是新的YAML格式。我使用了YAML格式。很高兴听到问题已经解决了。 - wdberkeley
2个回答

6

在@wdberkeley的评论帮助下,我意识到问题出在绑定IP地址列表中逗号后面的空格。但是,这个问题似乎只影响旧的配置文件格式(不包括YAML格式)。

# This Works:
bind_ip = 127.0.0.1,10.10.10.10

# This doesn't work:
bind_ip = 127.0.0.1, 10.10.10.10

3

将绑定到地址0.0.0.0,这将允许它在任何IP地址上回答,并且即使在具有不同IP地址的多个网络卡的机器上也可以。


真的。这种解决方案唯一的问题是它意味着服务器也会监听公共IP。当然,我可以使用防火墙来解决这个问题,但我主要想知道是否有任何方法可以配置mongodb以按照我想要的方式运行。 - pqvst

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接