环境
CentOS 6.x + mongoDB 4.2
mongoDB 服务端IP:192.168.101.235
(只有一个IP)
对MongoDB配置中 bind_ip
的理解
它的意思是将MongoDB实例绑定到那个IP上,表示该实例可以以那个IP对外提供服务。
# 表示以本地回环地址对外提供服务,由于本地回环地址只能被本机所能访问到
# 因此,表示只能在本机的mongo客户端上才能连接到
bind_ip=127.0.0.1
# 表示MongoDB实例以192.168.101.235这个IP对外提供服务
# 只要能访问到192.168.101.235:27017的任何mongo客户端上都能连接到
bind_ip=192.168.101.235
对 bind_ip=0.0.0.0
的理解:
如果MongoDB实例所在的服务器只有一个IP:192.168.101.235
,那么 bind_ip=0.0.0.0
和 bind_ip=192.168.101.235
是一个效果
如果MongoDB实例所在的服务器有多个IP,比如:192.168.101.235
和 192.168.11.22
那么 bind_ip=0.0.0.0
和 bind_ip=127.0.0.1,192.168.101.235,192.168.11.22
是一个效果。
bind_ip_all 的理解
bind_ip_all
和 bind_ip
是互斥的,配置只要有它们其中一个就行了。bind_ip_all
的用法:
# bind_ip_all 其实相当于: bind_ip=0.0.0.0
bind_ip_all=true
# 或者
bind_ip_all=on
注意:bind_ip
的值不是 限制某些IP能访问服务端,如果要先限制,可以使用服务器自带的防火墙处理。
需求
限定只能某些IP能访问我们的mongodb服务端,比如:除了192.168.101.231和127.0.0.1之外的均不可访问
思路
使用mongodb配置中的bind_ip
选项和 CentOS自带的防火墙
MongoDB实例以127.0.0.1
和 192.168.101.235
对外提供服务
步骤
-
配置MongoDB实例的
bind_ip
bind_id=127.0.0.1,192.168.101.235 # 或者 bind_id=0.0.0.0 # 或者 bind_ip_all=true
-
重启MongoDB服务端
-
配置防火墙
在防火墙中增加如下配置内容(其它系统的防火墙请自行配置)
# 禁止所有的IP访问27017端口 -I INPUT -p tcp --dport 27017 -j DROP # 对192.168.101.231放行27017端口 -I INPUT -s 192.168.101.231 -p tcp --dport 27017 -j ACCEPT # 对127.0.0.1放行27017端口 -I INPUT -s 127.0.0.1 -p tcp --dport 27017 -j ACCEPT
最后一步重中之重
防护墙修改后请重启