Не удалось подключиться к монго на удаленном сервере

Я установил монго на машину1 (Ubuntu 14.04.3 LTS server) в своей локальной сети. Я также открыл порт 27017, как указано в это руководство с использованием следующих команд:

sudo iptables -A INPUT -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT  -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT

Текущие правила (iptables -L):

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:27017 state NEW,ESTABLISHED

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

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

Но я не могу подключиться к этому порту с машины2 (в той же сети):

$ mongo --host 192.168.0.108
MongoDB shell version: 3.0.4
connecting to: 192.168.0.108:27017/test
2016-01-23T18:02:14.848+0530 W NETWORK  Failed to connect to 192.168.0.108:27017, reason: errno:61 Connection refused
2016-01-23T18:02:14.850+0530 E QUERY    Error: couldn't connect to server 192.168.0.108:27017 (192.168.0.108), connection attempt failed
    at connect (src/mongo/shell/mongo.js:181:14)
    at (connect):1:6 at src/mongo/shell/mongo.js:181
exception: connect failed

Я также попытался проверить, открыт ли порт или нет:

$ nc -v 192.168.0.108 27017
nc: connectx to 192.168.0.108 port 27017 (tcp) failed: Connection refused

Я не уверен, что мне не хватает. Должно быть, это какая-то глупая ошибка, так как я впервые настраиваю монго. Пожалуйста, помогите.

Обновление (для сомнений, поднятых в текущих ответах)

  1. Да работает. Я могу подключиться к монго с той же машины, но не с другой машины. Демон работает: $ service mongod status mongod start/running, process 31205 и порт 27017 $ sudo netstat -tulpn |grep 27017 tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 31205/mongod
  2. Я изменил bind_ip на 0.0.0.0 и перезапустил монго. Все равно приходит та же ошибка.

Журналы Mongo:

$ cat /var/log/mongodb/mongod.log
2016-01-23T16:28:13.155+0530 I CONTROL  [initandlisten] MongoDB starting : pid=31205 port=27017 dbpath=/var/lib/mongodb 64-bit host=dexter
2016-01-23T16:28:13.156+0530 I CONTROL  [initandlisten] db version v3.2.1
2016-01-23T16:28:13.156+0530 I CONTROL  [initandlisten] git version: a14d55980c2cdc565d4704a7e3ad37e4e535c1b2
2016-01-23T16:28:13.156+0530 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.1f 6 Jan 2014
2016-01-23T16:28:13.156+0530 I CONTROL  [initandlisten] allocator: tcmalloc
2016-01-23T16:28:13.156+0530 I CONTROL  [initandlisten] modules: none
2016-01-23T16:28:13.156+0530 I CONTROL  [initandlisten] build environment:
2016-01-23T16:28:13.156+0530 I CONTROL  [initandlisten]     distmod: ubuntu1404
2016-01-23T16:28:13.156+0530 I CONTROL  [initandlisten]     distarch: x86_64
2016-01-23T16:28:13.156+0530 I CONTROL  [initandlisten]     target_arch: x86_64
2016-01-23T16:28:13.156+0530 I CONTROL  [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, storage: { dbPath: "/var/lib/mongodb", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2016-01-23T16:28:13.173+0530 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=1G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2016-01-23T16:28:14.444+0530 I CONTROL  [initandlisten]
2016-01-23T16:28:14.444+0530 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2016-01-23T16:28:14.444+0530 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-01-23T16:28:14.444+0530 I CONTROL  [initandlisten]
2016-01-23T16:28:14.444+0530 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2016-01-23T16:28:14.444+0530 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-01-23T16:28:14.444+0530 I CONTROL  [initandlisten]
2016-01-23T16:28:14.444+0530 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/var/lib/mongodb/diagnostic.data'
2016-01-23T16:28:14.444+0530 I NETWORK  [HostnameCanonicalizationWorker] Starting hostname canonicalization worker
2016-01-23T16:28:14.949+0530 I NETWORK  [initandlisten] waiting for connections on port 27017
2016-01-23T16:38:37.046+0530 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:37032 #1 (1 connection now open)
2016-01-23T16:39:31.447+0530 I NETWORK  [conn1] end connection 127.0.0.1:37032 (0 connections now open)
2016-01-23T16:49:24.240+0530 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:37033 #2 (1 connection now open)
2016-01-23T16:49:38.249+0530 I NETWORK  [conn2] end connection 127.0.0.1:37033 (0 connections now open)
2016-01-23T16:51:51.707+0530 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:37034 #3 (1 connection now open)
2016-01-23T16:51:55.785+0530 I NETWORK  [conn3] end connection 127.0.0.1:37034 (0 connections now open)
2016-01-23T17:32:15.546+0530 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:37036 #4 (1 connection now open)
2016-01-23T17:32:21.180+0530 I NETWORK  [conn4] end connection 127.0.0.1:37036 (0 connections now open)
2016-01-23T18:11:57.885+0530 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:37037 #5 (1 connection now open)
2016-01-23T18:29:55.365+0530 I NETWORK  [conn5] end connection 127.0.0.1:37037 (0 connections now open)

person Abhishek Gupta    schedule 23.01.2016    source источник
comment
Можно ли куда-нибудь добавить журналы сервера mongod? Первоначальных 100 строк будет достаточно.   -  person nobody    schedule 23.01.2016
comment
@nobody Обновил журналы монго.   -  person Abhishek Gupta    schedule 28.01.2016
comment
Надеюсь, вы уже получили подсказку из журналов.   -  person nobody    schedule 01.02.2016
comment
Да, возникла проблема stackoverflow.com/a/35063229/742173   -  person Abhishek Gupta    schedule 01.02.2016


Ответы (5)


убедитесь, что демон mongodb запущен и прослушивает порт 0.0.0.0, а не порт 127.0.0.1

например, для моего локального mongodb у него есть эта конфигурация:

[vodolaz095@steel ~]$ cat /etc/mongod.conf 
##
### Basic Defaults
##

# Comma separated list of ip addresses to listen on (all local ips by default)
bind_ip = 127.0.0.1

# Specify port number (27017 by default)
#port = 27017

чтобы сервер mongodb прослушивал удаленные подключения, вы можете изменить

# Comma separated list of ip addresses to listen on (all local ips by default)
bind_ip = 0.0.0.0
person vodolaz095    schedule 23.01.2016
comment
Я изменил bind_ip и перезапустил монго. Все равно приходит та же ошибка. - person Abhishek Gupta; 23.01.2016
comment
брандмауэр открыт? какой дистрибутив линукса используется? SELINUX включен? есть ли информация в журналах mongodb? - person vodolaz095; 23.01.2016
comment
Что вы подразумеваете под открытым брандмауэром? Я не очень разбираюсь в брандмауэре. Я только что добавил правила в iptables. Дистрибутив: $ cat /etc/*release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS" NAME="Ubuntu" VERSION="14.04.3 LTS, Trusty Tahr" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 14.04.3 LTS" VERSION_ID="14.04" В логах ничего нет - person Abhishek Gupta; 23.01.2016
comment
поэтому правила брандмауэра (iptables -l) выглядят нормально, порт правильный, адрес прослушивания (bind_ip в конфигурации), и я больше знаком с дистрибутивами на основе RPM, а не с дистрибутивами на основе DEB, чтобы иметь возможность помочь. Думаю, вы можете опубликовать этот вопрос на askubuntu.com. - person vodolaz095; 23.01.2016
comment
Да, именно mongo db должен работать на 0.0.0.0 - person Basil Battikhi; 18.02.2021
comment
Моя проблема заключалась в том, что я могу telnet использовать любой порт, кроме порта mongo. Я изменил bind_ip на 0.0.0.0, и это было исправлено. - person Salitha; 05.03.2021

С сервером mongoDB версии 3.6.4, Ubuntu 16.4.4 я решил эту проблему, установив раздел net в /etc/mongod.conf следующим образом:

net:
  port: 27017
  bindIpAll: true
#  bindIp: 127.0.0.1
person Mirko    schedule 27.04.2018

Проблема заключалась в том, что bindIp не изменилось. С моей стороны возникла проблема с перезапуском монго.

Привычка должна состоять в том, чтобы проверять, действительно ли изменился bindIp или нет. (используя sudo netstat -tulpn | grep 27017)

person Abhishek Gupta    schedule 28.01.2016
comment
Как изменится bindIp? Я вручную добавил удаленный адрес в mongodb.conf под bindIp, но так и не смог подключиться - person roger_that; 11.09.2018
comment
Комментировать bindIp не получилось. Мне пришлось изменить его на 0.0.0.0 - person No Sound; 05.06.2020

Я пробовал другой способ решить эту проблему. Я изменил файл конфигурации с

bind_ip = 127.0.0.1
#port = 27017

to

bind_ip = 0.0.0.0
#port = 27017

Надеюсь, поможет. Удачного кодирования ;)

person Arun Wilson    schedule 28.11.2019
comment
Помогло как шарм, но ты не думаешь, что это может быть уязвимым. Я привязал IP-адрес своего экземпляра, но не смог удаленно подключиться, какое-либо предложение? - person PHP Developer; 20.02.2021

Убедитесь, что на вашем компьютере1 запущен демон, который прослушивает порт 27017. Мы получили ту же ошибку и обнаружили, что демон не запущен.

person Ashish Anand    schedule 23.01.2016
comment
Да работает. Я могу подключиться к монго с той же машины, но не с другой машины. Демон работает: $ service mongod status mongod start/running, process 31205 и порт 27017 $ sudo netstat -tulpn |grep 27017 tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 31205/mongod - person Abhishek Gupta; 23.01.2016