MongoDB 在 CentOS 上的网络配置注意事项
一 基础网络与端口
- 配置文件位置为 /etc/mongod.conf,网络相关项集中在 net 段落。默认监听 27017 端口,且仅绑定 127.0.0.1(本地回环),如需远程访问需调整 bindIp。建议仅开放必要来源,避免使用 bindIp: 0.0.0.0 暴露到公网。示例:仅监听内网地址 net: { port: 27017, bindIp: 192.168.1.10 };如需同时监听 IPv4 与 IPv6,可用 bindIp: 0.0.0.0,:: 或启用 bindIpAll: true(视版本支持)。修改配置后执行:sudo systemctl restart mongod 使生效。
二 防火墙放行
- CentOS 7+ 默认使用 firewalld。放行 MongoDB 端口示例:sudo firewall-cmd --permanent --zone=public --add-port=27017/tcp 与 sudo firewall-cmd --reload;验证:sudo firewall-cmd --list-all。若需仅允许特定来源,使用富规则:sudo firewall-cmd --permanent --zone=public --add-rich-rule=‘rule family=“ipv4” source address=“192.168.1.100” port protocol=“tcp” port=“27017” accept’。旧版或偏好 iptables 的场景可使用:sudo iptables -A INPUT -p tcp --dport 27017 -j ACCEPT 并保存规则。务必遵循“最小暴露面”原则,仅对受信网段/IP 放行。
三 加密传输与访问控制
- 启用加密传输:在 net.ssl 中设置 mode: requireSSL,并指定 PEMKeyFile/CAFile,确保客户端与服务器之间的数据链路加密。开启访问控制:在 security 中设置 authorization: enabled,创建管理员与普通用户并分配最小必要角色;远程开放前务必先启用认证,避免裸奔。必要时可启用 审计日志 与安全更新、监控告警等配套措施,形成闭环安全治理。
四 连接数、内核网络与 SELinux
- 合理规划并发:通过 net.maxIncomingConnections 限制最大连接数,防止资源被耗尽;结合应用连接池与超时设置共同治理。内核与 TCP 参数优化:启用 tcpKeepAlive: true、tcpNoDelay: true,并根据负载调整如 tcpSendBufferSize/tcpReceiveBufferSize 与空闲超时,以提升吞吐与稳定性。若系统启用 SELinux 且遇到权限/端口绑定异常,按需调整 SELinux 策略或布尔值以恢复服务正常运行。
五 变更验证与排错清单
- 变更后按顺序验证:1)查看服务状态与监听地址:sudo systemctl status mongod;ss -lntp | grep 27017 或 netstat -tulpen | grep 27017;2)从客户端测试:mongo --host <服务器IP> --port 27017,连接后执行 db.runCommand({ ping: 1 }),应返回 { “ok” : 1 };3)复核防火墙规则是否生效:firewall-cmd --list-all;4)复核配置文件关键项:bindIp、port、security.authorization、net.ssl;5)若仍不通,检查云厂商安全组/本机云防火墙策略、路由与日志(/var/log/mongodb/mongod.log)。以上步骤能快速定位“配置未生效/端口未放行/认证失败”等常见问题。