我有这样的网络配置(参见链接 - http://s58.radikal.ru/i160/1110/4c/1c2c5d74edd0.jpg)
其中: 笔记本 - 在Zend(Windows)上包含用于mongodb + web项目的Apache + php + mongodb + php驱动程序
路由器 - 虚拟站点(nat on 192.168.5.23 interface + ipfw)
natd.conf:
interface le0
same_ports
use_sockets
redirect_port tcp 192.168.5.23:27017 27017
redirect_port tcp 192.168.5.23:27017 27017
ipfw的: 允许从任何
虚拟站2 - 仅包含mongodb(没有php,apache或mongodb php驱动程序)
1 - 从笔记本电脑ping到mongodb主机并向后工作。
2 - 虚拟mongodb主机上的shell:mongo 192.168.5.20:27017 - 成功连接到笔记本的mongodb
3 - 尝试从笔记本电脑连接到虚拟主机导致此类错误:
C:\mongodb1.8.2\bin>mongo 192.168.9.21:27017
MongoDB shell version: 1.8.2
connecting to: 192.168.9.21:27017/test
Sun Oct 02 22:31:14 Error: couldn't connect to server 192.168.9.21:27017 shell/mongo.js:81
exception: connect failed
4 - 尝试在php项目中使用带有DB的远程主机(www.vm.lcl):
an exception occured while bootstrapping
connecting to vm-db1.lcl failed: Unknown error
Stack Trace:
#0 C:\www\vm-db1.lcl\library\Zirrk\Database\MongoConnection.php(16): Mongo->__construct('vm-db1.lcl')
请给我建议 - 我应该在哪个方向搜索我的错误! 非常感谢!
答案 0 :(得分:1)
我通过更改 natd.conf
中的规则来解决此问题redirect_port tcp 192.168.5.23:27017 27017
要 redirect_port tcp 192.168.5.23:27017 192.168.9.21:27017
在了解如何修复它之前,我在虚拟网络(192.168.9.0/24)web-server(192.168.9.11)中使用apache + php + mongo-php-driver(mongodb - 未安装)创建,并尝试连接到192.168.9.21
$m = new Mongo("mongodb://192.168.9.21:27017");
这没有意义。我花了一整天的头脑风暴和谷歌搜索信息,但仍然没有。 (错误是在连接到服务器时超时)。然后我休息几个小时,并理解,在我的情况下,所有流量都通过Freebsd-gateway主机并添加到 natd.conf
redirect_port tcp 192.168.9.11:27017 192.168.9.21:27017
重启gate-way服务器,它开始工作了!