【问题标题】:Can't connect to remote mongodb with mongo shell无法使用 mongo shell 连接到远程 mongodb
【发布时间】:2012-12-28 09:36:45
【问题描述】:

我正在尝试连接到远程 mongodb 服务,但无法弄清楚如何让它工作。远程 mongod 在 Ubuntu 机器上运行。我是一个非常新手的 unix 用户,但我有理由确定问题是我可能没有使用iptables 打开防火墙,我已经尝试了 mongodb 文档中的命令,但仍然没有成功。

mongodb.conf相关规则

bind_ip = 0.0.0.0
port = 27017
auth = false

netstat -A

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 *:28017                 *:*                     LISTEN
tcp        0      0 *:27017                 *:*                     LISTEN

iptables -L -n

target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80
DROP       all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:27017 state NEW,ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:28017 state NEW,ESTABLISHED

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp spt:27017 state ESTABLISHED

按照 mongodb 文档 - http://docs.mongodb.org/manual/tutorial/configure-linux-iptables-firewall/#patterns 中记录的方式执行 iptables 命令

这是我尝试过的:

浏览器:http://xx.xx.xx.xx:27017/ 无响应。

浏览器:http://xx.xx.xx.xx:28017/ 无响应。

浏览器:http://www.hostname.com:27017/ 无响应。

浏览器:http://www.hostname.com:28017/ 无响应。

mongo.exe xx.xx.xx.xx:27017(远程)couldn't connect to server xx.xx.xx.xx

mongo xx.xx.xx.xx:27017(来自本地主机)正确连接

mongo www.hostname.com:27017(来自本地主机)正确连接

即使我指定了 IP 地址,它也可以通过托管 mongodb 的服务器上的 localhost 正确连接,这让我认为这一定是防火墙问题。有什么想法吗?

【问题讨论】:

    标签: mongodb ubuntu


    【解决方案1】:

    iptables 规则完全按照它们出现的顺序读取。 现在,DROP 的 mongodb 端口优先于 ACCEPT

    将设置 iptables 的特定脚本中的行打乱,然后刷新并重新读取它们。

    如果您还没有保存防火墙,请删除 DROP 规则并重新添加它,它会将其从列表中移出并解决您的问题。

    【讨论】:

    • 漂亮,非常感谢。有这么多不熟悉的技术,Ubuntu、Mongo、Iptables、Netstat,我什至不知道从哪里开始=p。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多