Isabela, miembro de este equipo, nos ha hecho el favor de redactar esta reseña porque conoce muy bien el tema.
Solución:
Sobre bindIp
127.0.0.1
por convención es la dirección IP de localhost y está vinculada a la interfaz de bucle invertido, a la que solo se puede acceder desde la misma máquina.
Usar esta dirección como predeterminada es una buena práctica, ya que al hacerlo es imposible exponer accidentalmente un servicio al público. Debe tomar la decisión consciente de cambiar la IP de vinculación para que su servicio esté disponible públicamente. Lo que solo debes hacer después de ti. asegurado que tomó las medidas de seguridad adecuadas.
Nota Esto es muy simplificado, omitiendo temas avanzados.
Por lo general, una máquina tiene la interfaz de bucle invertido y una o más interfaces de red “reales”.
Digamos que tiene una interfaz de red que es “interna” (solo accesible por sus servidores de aplicaciones, ya que los puso en la misma red) y tiene una interfaz de red que es “externa” (accesible a través de Internet público para fines de mantenimiento). Ahora, si vinculara su instancia de MongoDB a todas las interfaces (usaría la dirección IP 0.0.0.0 para hacerlo), su instancia de MongoDB sería accesible desde Internet pública, una situación difícilmente deseada. Los atacantes podrían intentar forzar sus contraseñas por la fuerza bruta y eventualmente obtener acceso a su instancia de MongoDB. Es mejor evitar cualquier acceso desde la Internet pública.
Lo que preferiría tener es que su instancia de MongoDB sea accesible para sus servidores de aplicaciones y desde la máquina en la que se ejecuta. Por lo tanto, vincularía MongoDB a la IP de la interfaz de bucle invertido (127.0.0.1
) y la IP de la red privada, que en general sería una de
- el rango de
10.0.0.0
a10.255.255.255
- el rango de
172.16.0.0
a172.31.255.255
- el rango de
192.168.0.0
a192.168.255.255
Tomemos nuestro ejemplo y digamos que tanto los servidores de aplicaciones como la instancia de MongoDB están en una red privada en el rango 192.168.X.X
y le ha dado a la instancia de MongoDB la dirección IP 192.168.0.1
. Entonces, le gustaría que su instancia de MongoDB sea accesible a través de 192.168.0.1
para que los servidores de aplicaciones puedan hablar con él y a través de 127.0.0.1
para usar las herramientas de administración de la máquina en la que se ejecuta MongoDB sin esfuerzo.
Entonces, con la sintaxis de configuración de YAML, pasaría varias direcciones IP
NOTA no agregue espacio entre comas en varias direcciones IP
# WARNING!!! WARNING!!! WARNING!!!
# DO NOT DO THIS UNLESS YOU HAVE CLIENT AUTHENTICATION ENABLED
# (or you really, really, really know what you are doing)
net:
bindIp: 127.0.0.1,192.168.0.1
Sobre las advertencias
En resumen, esta es la forma de MongoDB de decir:
Amigo, tiene dos problemas: aún no ha configurado la seguridad y solo se puede acceder a su instancia de MongoDB desde la máquina local. El primero no es tan grave debido al segundo. Pero tu De Verdad debe configurar la seguridad antes de ¡vincula la instancia de MongoDB a otras IP que no sean “localhost”!
Hay una especie de implícito “A menos que De Verdad ¡Sé lo que estás haciendo!”, porque iirc, la advertencia desaparece si activas la autenticación del cliente o cambiar el bindIp.
En mi caso cambio vincularip a 0.0.0.0 en /etc/mongod.conf
sudo nano /etc/mongod.conf
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0