Не удается подключиться к MongoDB на удаленном хосте через php - PullRequest
2 голосов
/ 02 октября 2011

У меня есть такая конфигурация сети (см. Ссылку - http://s58.radikal.ru/i160/1110/4c/1c2c5d74edd0.jpg)

Где: Notebook - содержит драйверы Apache + php + mongodb + php для веб-проекта mongodb + на Zend (Windows)

маршрутизатор - виртуальная станция (nat на интерфейсе 192.168.5.23 + 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 - пинг с ноутбука на хост mongodb и обратно - работает.

2 - оболочка на виртуальном хосте mongodb: 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 (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')

Пожалуйста, дайте мне совет - в каком направлении я должен искать свои ошибки!Большое спасибо!

1 Ответ

1 голос
/ 04 октября 2011

Я решил эту проблему, изменив правило в 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) веб-сервер (192.168.9.11) с apache + php + mongo-php-драйвер (mongodb - не был установлен), и попытался подключиться к 192.168.9.21

$m = new Mongo("mongodb://192.168.9.21:27017");

Это не было никакого смысла. Я провел целый день в мозговом штурме и поиске информации, но все еще ничего. (Ошибка при тайм-ауте при подключении к серверу). Затем я отдыхаю несколько часов и понимаю, что в моем случае весь трафик проходит через хост Freebsd-шлюза и добавляется в natd.conf

redirect_port tcp 192.168.9.11:27017 192.168.9.21:27017

перезагрузите сервер шлюза, и он заработает!

...