¿Por qué no puedo acceder a mi instancia CouchDB externamente en el servidor Ubuntu 9.04?


27

Actualización: lo tengo funcionando ahora. La respuesta de Jim Zajkowski me ayudó a detectar que mis llamadas de reinicio /etc/init.d/couchdb en realidad no estaban reiniciando la instancia. Después de que eliminé manualmente los procesos CouchDB y comencé una nueva instancia, recogió el cambio BindAddress requerido.

He instalado CouchDB a través de

aptitude install couchdb

Desde mi servidor, me puedo conectar a través de

telnet localhost 5984

y ejecutar comandos RESTful. Cuando intento acceder al servidor desde otra máquina en nuestra red o desde una máquina externa a nuestra red, aparece el error La conexión se restableció . He configurado el reenvío de puertos en el enrutador, y de otro modo se puede acceder al servidor a través de Apache, Tomcat, SSH, etc.

Soy nuevo en Linux / Ubuntu, por lo que no estaba seguro de si había un firewall predeterminado bloqueando la conexión, así que ejecuté:

iptables -A INPUT -p tcp --dport 5984 -j ACCEPT

Pero no sirvió de nada.

Aquí está el volcado de ejecutar iptables -L -n -v

Chain INPUT (policy ACCEPT 2121K packets, 1319M bytes)
 pkts bytes target     prot opt in     out     source               destination
   70  3864 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:5984
    9  1647 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:8080
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:8080

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 1708K packets, 1136M bytes)
 pkts bytes target     prot opt in     out     source               destination

Supongo que los bytes que se muestran como transferidos para 5984 se deben a mi conexión de host local.

Aquí está el volcado de ejecutar netstat -an | grep 5984

tcp        0      0 127.0.0.1:5984          0.0.0.0:*               LISTEN

Configuré couch.ini para que tenga "BindAddress = 0.0.0.0" y reinicié, por lo que debería estar escuchando en todas las interfaces. Cuando ejecuto "sudo /etc/init.d/couchdb stop" y luego ejecuto netstat, todavía veo la entrada anterior. Parece que CouchDB no se detiene en absoluto. Esto puede explicar mi problema, porque significa que puede significar que CouchDB nunca se reinició y nunca recogió el cambio de BindAddress.

Eliminé manualmente el proceso CouchDB y lo volví a iniciar. Ahora netstat muestra:

 tcp        0      0 127.0.0.1:5984          0.0.0.0:*               LISTEN
 tcp        0      0 127.0.0.1:5984          127.0.0.1:35366         TIME_WAIT

Sin embargo, todavía no puedo conectarme, incluso desde otra máquina en la LAN.


Este problema todavía existe en Ubuntu 12. ¿Crees que el mantenedor del paquete ya lo habría solucionado?
Mark E. Haase

Respuestas:


33

Que netstat -an | grep 5984dice ¿Dice 127.0.0.1:5984o *:5984? Si es así 127.0.0.1, se debe configurar couchdb para escuchar todas las interfaces.


3
"tcp 0 0 127.0.0.1:5984 0.0.0.0:* LISTEN" es el resultado. Configuré couch.ini para que tenga "BindAddress = 0.0.0.0" y reinicié, por lo que debería estar escuchando en todas las interfaces. Sin embargo, aquí está la parte extraña: cuando ejecuto "sudo /etc/init.d/couchdb stop" y luego ejecuto netstat, todavía veo la entrada anterior. Parece que CouchDB no se detiene en absoluto. Esto puede explicar mi problema, porque significa que probablemente nunca se reinició, y probablemente nunca retomó el cambio de
BindAddress

3
Sí, estaba corriendo como un proceso en segundo plano. funcionó para mí una vez que maté couchdb usando couchdb -d y lo reinicié
Kristian

2
¡Esta respuesta me ayudó! Quería compartir que uno puede cambiar fácilmente esta configuración utilizando la interfaz web de Futon, sin tener que buscar y editar el archivo de configuración real en el disco . Simplemente navegue a 127.0.0.1:5984/_utils/config.html(o URL equivalente para su configuración) y haga doble clic en el valor de la opción, edite, luego haga clic en la marca de verificación verde.
Steve Benner

@SteveBenner ¡Desafortunadamente 127.0.0.1:5984/_utils/config.html no trae nada!
Dr.jacky

@rcampbell ¿Dónde está couch.ini?
Dr.jacky


7

Me di cuenta de que para que esto funcione, debes matar manualmente el proceso de erlang en ejecución por alguna razón. ps ax | grep beamSi desea revelar el proceso de erlang, debe obtener algo similar a 0:00 /usr/lib/erlang/ertsalgún punto de la salida. Si elimina este proceso y luego ejecuta /etc/init.d/couchdb restartel nuevo archivo de configuración, se cargará.


lo mismo para mí: solo después de finalizar el proceso del haz, luego realice el couchdb -d, y luego el servicio de detención / inicio ... entró en vigor la nueva configuración.
Bobby

4

En la PC / Mac doméstica, ejecute este comando:

ssh -L 5984:localhost:5984 YOUR-SERVER-IP-HERE

siguiente abierto en su navegador localhost: 5984 / _utils ... Funciona para mí


4

Documentos de configuración :

bind_address

Si lo cambia desde el panel de configuración de Futon, no tiene que hacer nada más (reiniciar el db, etc.):

ingrese la descripción de la imagen aquí

Antes de cambiar la dirección de enlace predeterminada:

peter@earth:~/$ netstat -an | grep 5984
tcp        0      0 127.0.0.1:5984          0.0.0.0:*               LISTEN

Después de cambiar a 0.0.0.0:

peter@earth:~/$ netstat -an | grep 5984
tcp        0      0 0.0.0.1:5984          0.0.0.0:*               LISTEN

Tenga en cuenta que no son gurús: las computadoras que no pueden acceder a la suya (normalmente, cualquier cosa fuera de su red local) aún no podrán acceder a su computadora (CouchDB o cualquier otra cosa).


Si bien esta respuesta es bastante antigua, parece conducir al lugar correcto. Futon ha sido reemplazado por Fauxton, pero creo que la gente tendrá la esencia de cambiar bind_address en la Configuración.
Scott Biggs el

2

Encontré esto, y mi problema terminó siendo que, aparentemente, había couchdb ya instalado en mi instalación de Ubuntu. Había estado editando los archivos de configuración en / etc / couchdb, pero el que se estaba ejecutando en realidad estaba sacando la configuración de / usr / local / etc / couchdb.

El aviso fue que las configuraciones en / etc / couchdb mencionaron el sofá 0.10, pero acababa de instalar 1.0.1.


1

iptables -L -n -vle mostrará sus reglas actuales de firewall. Vea si hay uno que descarta esos paquetes antes de que llegue a su regla.


No hay reglas DENY enumeradas en la tabla. De lo contrario, hay tres ACEPTAR, uno para 5984 y dos duplicados para 8080. No estoy seguro de por qué hay dos duplicados exactos para 8080, y cuando intento golpear Tomcat (que se ejecuta en 8080) externo de nuestra red falla, incluso aunque las máquinas en nuestra red pueden golpear bien a Tomcat.
rcampbell

¿Te importaría mostrar el resultado? Saque su IP si es necesario.
Bill Weiss el

¿Qué tal correr lsof -i -n -P | grep LISTENy publicar eso? Estás buscando el proceso CouchDB y a qué está destinado. Si es así 127.0.0.1:5984, debe configurar CouchDB para escuchar conexiones externas. Si es *:5984, bueno, al menos CouchDB está configurado correctamente :)
Bill Weiss

Hola Bill, perdón por no responder antes. He publicado el volcado sin procesar que solicitó a la pregunta.
rcampbell

¿Qué tal esa lsofsalida?
Bill Weiss el
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.