mongodb中的--bindip配置选项做什么?
这是它指定的mongodb文档 mongos或mongod绑定以侦听的IP地址 来自应用程序的连接。您可以将mongos或mongod附加到任何 接口。将mongos或mongod连接到可公开访问的 接口,确保已实现正确的身份验证和 防火墙限制,以保护数据库的完整性 要绑定到多个IP地址,请输入逗号分隔的IP地址列表 价值观 那 127.0.0.1。是默认配置 我对人际网络一无所知,所以我想知道是否有人能更全面地向我解释这意味着什么。还有,如果我改变这一点意味着什么?为什么要绑定多个IP?最后,如果有人有线索,为什么默认选项是mongodb中的--bindip配置选项做什么?,mongodb,networking,Mongodb,Networking,这是它指定的mongodb文档 mongos或mongod绑定以侦听的IP地址 来自应用程序的连接。您可以将mongos或mongod附加到任何 接口。将mongos或mongod连接到可公开访问的 接口,确保已实现正确的身份验证和 防火墙限制,以保护数据库的完整性 要绑定到多个IP地址,请输入逗号分隔的IP地址列表 价值观 那 127.0.0.1。是默认配置 我对人际网络一无所知,所以我想知道是否有人能更全面地向我解释这意味着什么。还有,如果我改变这一点意味着什么?为什么要绑定多个IP?最后,
127.0.0.1
编辑:
(您可以跳过此编辑部分)
这个问题背后的一些动机在于在docker上运行mongodb时得到这些警告:
2016-05-22T05:36:12.478+0000 I CONTROL [initandlisten] ** WARNING: Insecure configuration, access control is not enabled and no --bind_ip has been specified.
2016-05-22T05:36:12.478+0000 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted,
2016-05-22T05:36:12.478+0000 I CONTROL [initandlisten] ** and the server listens on all available network interfaces.
还有一些问题,我会在哪里得到这个错误
2016-05-20T01:04:18.012+0000 I NETWORK [thread1] trying reconnect to 127.0.0.1:27017 (127.0.0.1) failed
2016-05-20T01:04:18.018+0000 I NETWORK [thread1] reconnect 127.0.0.1:27017 (127.0.0.1) ok
(如果您对此感到好奇,请在此详细介绍,但这个问题不是本文的主题!)onbindIp
127.0.0.1
按约定是环回接口的IP地址,并绑定到环回接口,该接口只能从同一台机器访问
使用此地址作为默认地址是最佳做法,因为这样做不可能意外地向公众公开服务。您必须有意识地选择更改绑定IP以使您的服务公开可用。只有在确保采取了适当的安全措施后,你才应该这样做
注意这非常简单,跳过了高级主题
通常,机器具有环回接口和一个或多个“真实”网络接口
假设您有一个“内部”网络接口(只有您的应用程序服务器可以访问,因为您将它们放在同一个网络中),您有一个“外部”网络接口(可通过公共internet访问以进行维护)。现在,如果您将MongoDB实例绑定到所有接口(您将使用IP地址进行绑定),那么您的MongoDB实例将可以从公共互联网上访问——这不是一种理想的情况。攻击者可能会尝试暴力破解您的密码,并最终获得对您的MongoDB实例的访问权。最好是阻止任何来自公共互联网的访问
您希望的是,您的MongoDB实例可以通过应用服务器和运行它的机器进行访问。因此,您可以将MongoDB绑定到环回接口的IP(127.0.0.1
)和专用网络的IP,这通常是其中之一
- 范围从
到10.0.0.0
10.255.255
- 范围从
到172.16.0.0
172.31.255.255
- 范围从
到192.168.0.0
192.168.255.255
192.168.X.X
的专用网络中,并且您已经为MongoDB实例提供了IP地址192.168.0.1
。因此,您希望通过192.168.0.1
访问您的MongoDB实例,以便应用程序服务器可以与之通信,并通过127.0.0.1
轻松使用MongoDB运行机器上的管理工具
因此,使用YAML配置语法,可以传递多个IP
注意不要在多个IP上的逗号之间添加空格
#警告!!!警告警告
#除非启用了客户端身份验证,否则不要执行此操作
#(或者你真的,真的,真的知道你在做什么)
净:
bindIp:127.0.0.1192.168.0.1
关于警告
简言之,这是MongoDBs的说法:
Mate,您有两个问题:尚未配置安全性,并且只能从本地计算机访问MongoDB实例。前者没有后者那么严重。但是,在将MongoDB实例绑定到“localhost”以外的其他IP之前,确实应该配置安全性
有一种隐含的“除非你真的知道你在做什么!”,因为iirc,如果你激活客户端身份验证或更改bindIp,警告就会消失。在我的例子中,我在/etc/mongod.conf中将bindIp更改为0.0.0.0 sudo nano/etc/mongod.conf
请读者注意,通过使用0.0.0.0地址,您“允许此主机和其他主机通过任何网络接口连接”。如果所需的行为是“允许此主机和其他主机通过特定网络接口连接”,则更好的选项是将绑定ip同时设置为和(例如:bindIp:127.0.0.1192.168.0.200)。在这两种情况下,在更改此设置之前,只需确保启用身份验证并正确配置网络路由器和防火墙,以仅接受来自所需来源的连接。
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0