MongoDB3.6 的默认配置会拒绝未授权的链接对公共网络的访问, 从而保护数据收到外部威胁 MongoDB 只会监听本地链接, 除非添加规则允许监听其他地址
本教程会简明的展示如何允许外部 IP 地址连接 MongoDB 节点, 并保证联网服务器可以连接到你的数据库通过本教程, 你会发现配置 MongoDB 监听具体的网络端口是很容易的一件事情
看本教程前, 你需要:
安装 MongoDB3.6
服务器上有多个网络接口 (本例会使用 AWS EC2 实例)
了解 IP 网络的基本知识, 会配置私有 IP
我启动了安装有 Ubuntu 16.04 LTS 的一台 AWS EC2 的实例, 并且安装了 MongoDB3.6
我想允许我的部分 VPC IP 地址连接到我们的 MongoDB 数据库通过这种方式, 可以保证只有我们的指定 IP 以及本机才能连接到数据库, 而其他陌生地址禁止访问数据库
首先启动 VPC 公共子网中的 Ubuntu 实例
根据 MongoDB 官网文档安装 mongodb3.6, 通过以下命令可以查看进程占用了那个网络端口:
- ubuntu@ip-172-16-0-211:~$ sudo netstat -plant | egrep mongod
- tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 2549/mongod
命令结果输出显示用户只允许通过本机的 27017 端口进行访问, 如果想其他系统访问数据库, 就需要进行 IP 绑定运行 ifconfig 命令
- ubuntu@ip-172-16-0-211:~$ ifconfig
- eth0 Link encap:Ethernet HWaddr 0e:5e:76:83:49:3e
- inet addr:172.16.0.211 Bcast:172.16.0.255 Mask:255.255.255.0
- inet6 addr: fe80::c5e:76ff:fe83:493e/64 Scope:Link
- UP BROADCAST RUNNING MULTICAST MTU:9001 Metric:1
- RX packets:65521 errors:0 dropped:0 overruns:0 frame:0
- TX packets:7358 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:1000
- RX bytes:94354063 (94.3 MB) TX bytes:611646 (611.6 KB)
现在我们知道了我们想要监听的网络地址, 打开 / etc/mongodb.conf 文件, 进行编辑, 文件修改后如下:
- # network interfaces
- net:
- port: 27017
- bindIp: 127.0.0.1,172.16.0.211
现在文件中就添加了一个 IP 地址 172.16.0.211, 重启 mongod 服务
- ubuntu@ip-172-16-0-211:~$ sudo service mongod stop
- ubuntu@ip-172-16-0-211:~$ sudo service mongod start
- ubuntu@ip-172-16-0-211:~$ sudo netstat -plnt | egrep mongod
- tcp 0 0 172.16.0.211:27017 0.0.0.0:* LISTEN 2892/mongod
- tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 2892/mongod
可以看到现在除了本机, 数据库还可以接受指定的 IP 的请求
通过本机连接:
- ubuntu@ip-172-16-0-211:~$ mongo localhost
- MongoDB shell version v3.6.0-rc2
- connecting to: mongodb://127.0.0.1:27017/localhost
通过指定 IP 连接
- ubuntu@ip-172-16-0-211:~$ mongo 172.16.0.211
- MongoDB shell version v3.6.0-rc2
- connecting to: mongodb://172.16.0.211:27017/test
默认的本机配置是有很多好处的, 但是现在就需要明确指定那些网络可以连接数据库, 防止不信任的网络连接到系统保证 MongoDB 系统不受远程攻击是非常重要的, 确保只有在安全清单上的 IP 才能连接到系统
你就知道了如何为系统配置其他 IP 地址以访问数据库, 现在就可以为你的复制集进行配置了不要忘记做备份监控如果你不想在这些工作上消耗太多精力, 可以了解一下我们的数据库即服务: MongoDB Atlas
来源: http://www.linuxidc.com/Linux/2018-02/151072.htm