Jos*_*ose 9 networking mongodb
这是mongodb文档https://docs.mongodb.com/manual/reference/configuration-options/它指定了
mongos或mongod绑定的IP地址,以便侦听来自应用程序的连接.您可以将mongos或mongod附加到任何界面.将mongos或mongod附加到可公开访问的界面时,请确保已实施适当的身份验证和防火墙限制以保护数据库的完整性.
要绑定到多个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.
Run Code Online (Sandbox Code Playgroud)
还有一些我会收到此错误的问题
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
Run Code Online (Sandbox Code Playgroud)
(如果你好奇,请点击此处https://dba.stackexchange.com/questions/139075/replica-set-in-mongodb-using-docker-primary-has-error-and-stops-being-primary-w/139145#139145但这个问题不是这篇文章的主题!)
Mar*_*erg 17
bindIp
127.0.0.1
按照惯例是localhost的IP地址,并绑定到loopback接口,该接口只能从同一台机器访问.
使用此地址作为默认值是最佳做法,因为这样做使得无法将服务意外地暴露给公众.您必须有意识地选择更改绑定IP以使您的服务公开.只有在确保采取适当的安全措施后才应该这样做.
注意这是非常简化的,跳过了高级主题
通常,机器具有环回接口和一个或多个"真实"网络接口.
假设您有一个"内部"网络接口(只能由您的应用程序服务器访问,因为您将它们放入同一网络中)并且您有一个"外部"网络接口(可通过公共互联网访问以进行维护).现在,如果您将MongoDB实例绑定到所有接口(您将使用IP地址0.0.0.0来执行此操作),则可以从公共Internet访问您的MongoDB实例 - 几乎不是所希望的情况.攻击者可能会试图破坏您的密码,最终可能会访问您的MongoDB实例.最好是防止任何来自公共互联网的访问.
您希望您的应用程序服务器以及运行的计算机可以访问MongoDB实例.因此,您可以将MongoDB绑定到环回接口的IP(127.0.0.1
)和专用网络的IP,这通常是其中之一
10.0.0.0
到10.255.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上的逗号之间添加空格
# WARNING!!! WARNING!!! WARNING!!!
# DO NOT DO THIS UNLESS YOU HAVE CLIENT AUTHENTICATION ENABLED
# (or you really, really, really know what you are doing)
net:
bindIp: 127.0.0.1,192.168.0.1
Run Code Online (Sandbox Code Playgroud)
简而言之,这是MongoDBs的说法:
Mate,你有两个问题:你还没有配置安全性,你的MongoDB实例只能从本地机器访问.由于后者,前者并不严重.但是在将MongoDB实例绑定到除"localhost"之外的其他IP 之前,您确实应该配置安全性!
有一种隐含的"除非你真的知道你在做什么!",因为iirc,如果激活客户端身份验证或更改bindIp,警告就会消失.
归档时间: |
|
查看次数: |
14258 次 |
最近记录: |