remote - mongodb listen only on localhost
Cómo configurar mongod.conf bind_ip con múltiples direcciones IP (9)
Agregué exitosamente una segunda ip en mi servicio de la versión 3.2 usando una coma, sin espacios y un FQDN
net:
port: 27017
bindIp: localhost,dev-2.office.sampleorg.com
Soy un novato en la configuración del entorno del servidor y mongoDB. Esto puede parecer algo realmente simple, sin embargo, realmente necesito su ayuda.
Estoy tratando de conectarme a mi máquina virtual que ejecuta la instancia mongodb desde la máquina local, que creo que debería ser similar al entorno de producción cuando lo ejecuto en un servidor remoto separado.
El entorno es el siguiente:
IP privada para máquina virtual: 192.168.184.155
IP pública tanto para la máquina local como para la máquina virtual: 96.88.169.145
Cambié el archivo bind_ip en /etc/mongod.conf desde
bind_ip = 127.0.0.1
a
bind_ip = 127.0.0.1,192.168.184.155,96.88.169.145
Después de reiniciar el servicio mongod, ni la máquina virtual ni la máquina local pueden acceder a mongodb a través del comando mongodb y aparece el siguiente error.
MongoDB shell version: 3.0.1
connecting to: test
2015-03-17T16:02:22.705-0400 W NETWORK Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refused
2015-03-17T16:02:22.707-0400 E QUERY Error: couldn''t connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed
at connect (src/mongo/shell/mongo.js:179:14)
at (connect):1:6 at src/mongo/shell/mongo.js:179
exception: connect failed
Sin embargo, si cambio el
bind_ip = 192.168.184.155
y reinicie el servicio, funciona y puedo acceder usando mongo desde mi máquina local. Parece que no funciona con varias direcciones IP. Intenté buscar en el documento mongodb, sin embargo, sí mencionan que bind_ip toma una lista separada por comas, lo que realmente me confundió.
Gracias por su ayuda por adelantado.
El caso en la versión 3.6 de mongodb en mi Ubuntu16.04 LTS es que no necesita poner las direcciones IP entre corchetes "[]". Elimine el espacio después de que la coma resuelva el problema de conexión fallida en el registro mongod (/var/log/mongodb/mongod.log)
NETWORK [initandlisten] getaddrinfo(" xxx.xxx.xxx.xxx") failed: Name or service not known
Después de modificar el bindIp: 127.0.0.1
a bindIp: 127.0.0.1,xxx.xxx.xxx.xxx
(no hay comas entre las IP) , la IP del host está escuchando de la siguiente manera:
xxx@xxxx:/var/log/mongodb$ sudo netstat -plnt |egrep mongod
tcp 0 0 xxx.xxx.xxx.xxx:27017 0.0.0.0:* LISTEN 30747/mongod
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 30747/mongod
En Mongo 3. *,
use un soporte tal como
net:
port: 27017
bindIp : [127.0.0.1,10.0.0.2,10.0.0.3]
En mi caso la solución fue poner la coma separada por IP y sin espacios.
bind_ip=192.168.2.29,127.0.0.1 #port = 27017
De esa manera funcionó:
2018-10-02T07:49:27.952+0000 I CONTROL [initandlisten] options: { config: "/etc/mongodb.conf", net: { bindIp: "192.168.2.29,127.0.0.1", unixDomainSocket: { pathPrefix: "/run/mongodb" } }, storage: { dbPath: "/var/lib/mongodb", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongodb.log" } } 2018-10-02T07:49:27.954+0000 I - [initandlisten] Detected data files in /var/lib/mongodb created by the ''wiredTiger'' storage engine, so setting the active storage engine to ''wiredTiger''.
Mongo 3.6.3 aquí.
mongod --version versión db versión v3.6.3 versión git: 9586e557d54ef70f9ca4b43c26892cd55257e1a5 versión OpenSSL: OpenSSL 1.1.0g 2 nov. 2017 atribuidor: tcmalloc módulos: ninguno entorno de compilación: distarch: x86_64 target_arch: x86_64 target_arch: x86_64
Estoy ejecutando 3.6 en SUSE 12.x y tuve problemas al utilizar listas de IP separadas por comas. He arreglado el problema por bindIp: 0.0.0.0
Gracias por @wdberkeley y @anhlc trajeron la pista.
Miré el archivo de registro en /var/log/mongodb/mongod.log. Muestra la razón de la falla para el problema.
2015-03-17T16:08:17.274-0400 I CONTROL [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1, 192.168.184.155" }, storage: { dbPath: "/var/lib/mongodb" }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2015-03-17T16:08:17.332-0400 I NETWORK [initandlisten] getaddrinfo(" 192.168.184.155") failed: Name or service not known
Por lo tanto, el archivo mongo.conf es sensible al espacio, el cual agregué y debería haberlo notado. Además, como lo señaló @anhlc, 96.88.169.145 no es una dirección IP válida para VM. Para que uno también contribuya al error.
¡Muchas gracias por su ayuda! Espero que esto pueda ayudar si alguien se topa con el mismo problema.
Para mí, envuelva los Ips separados por comas con corchetes en mongo 3.2.7:
bindIp = [127.0.0.1, 192.168.184.155, 96.88.169.145]
Si todo lo que quiere hacer es conectarse a esta máquina a través de la red, NO necesita modificar el valor de bind_ip
.
En tu caso necesitas seguir los siguientes pasos.
- Configure la máquina remota para bloquear todas las conexiones al puerto 27017
- Habilite la máquina remota para que solo acepte conexiones desde su máquina local
- Configurar credenciales con MongoDB
- Conectar con el cliente utilizando credenciales.
Si no estás seguro de cómo hacer alguno de estos pasos. Echa un vistazo a una publicación de blog que escribí que explica más detalladamente cómo hacer esto.
Entrada en el blog
Espero que esto ayude.
Usted puede hacer eso por:
bindIp: [172.31.60.184,127.0.0.1]
Recuerda no poner un espacio después de la coma.