Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mongodb中的--bindip配置选项做什么?_Mongodb_Networking - Fatal编程技术网

mongodb中的--bindip配置选项做什么?

mongodb中的--bindip配置选项做什么?,mongodb,networking,Mongodb,Networking,这是它指定的mongodb文档 mongos或mongod绑定以侦听的IP地址 来自应用程序的连接。您可以将mongos或mongod附加到任何 接口。将mongos或mongod连接到可公开访问的 接口,确保已实现正确的身份验证和 防火墙限制,以保护数据库的完整性 要绑定到多个IP地址,请输入逗号分隔的IP地址列表 价值观 那 127.0.0.1。是默认配置 我对人际网络一无所知,所以我想知道是否有人能更全面地向我解释这意味着什么。还有,如果我改变这一点意味着什么?为什么要绑定多个IP?最后,

这是它指定的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
(如果您对此感到好奇,请在此详细介绍,但这个问题不是本文的主题!)

on
bindIp
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
让我们以我们的示例为例,假设应用程序服务器和MongoDB实例都位于范围
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