Perché non riesco ad accedere esternamente alla mia istanza di CouchDB sul server Ubuntu 9.04?


27

Aggiornamento: ora ho funzionato. La risposta di Jim Zajkowski mi ha aiutato a rilevare che le mie chiamate di riavvio /etc/init.d/couchdb non stavano effettivamente riavviando l'istanza. Dopo aver interrotto manualmente i processi CouchDB e avviato una nuova istanza, ha raccolto la modifica BindAddress richiesta.

Ho installato CouchDB tramite

aptitude installa couchdb

Dal mio server, posso collegarmi tramite

telnet localhost 5984

ed esegui i comandi RESTful. Quando provo ad accedere al server da un'altra macchina sulla nostra rete o da una macchina esterna alla nostra rete, ricevo un errore La connessione è stata ripristinata . Ho impostato il port forwarding sul router e il server è altrimenti accessibile tramite Apache, Tomcat, SSH, ecc.

Sono nuovo di Linux / Ubuntu, quindi non ero sicuro che ci fosse un firewall predefinito che bloccava la connessione, quindi ho eseguito:

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

ma non ha aiutato.

Ecco il dump dell'esecuzione di 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

Presumo che i byte visualizzati come trasferiti per 5984 siano dovuti alla mia connessione localhost.

Ecco il dump dall'esecuzione di netstat -an | grep 5984

tcp        0      0 127.0.0.1:5984          0.0.0.0:*               LISTEN

Ho configurato couch.ini per avere "BindAddress = 0.0.0.0" e riavviato, quindi dovrebbe essere in ascolto su tutte le interfacce. Quando eseguo "sudo /etc/init.d/couchdb stop" quindi eseguo netstat, tuttavia, vedo ancora la voce sopra. Sembra che CouchDB in realtà non si fermi affatto. Questo può spiegare il mio problema, perché può significare che CouchDB non si è mai riavviato e non ha mai rilevato la modifica di BindAddress.

Ho interrotto manualmente il processo CouchDB e l'ho riavviato. Ora netstat mostra:

 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

Non riesco ancora a connettermi, anche da un'altra macchina sulla LAN.


Questo problema esiste ancora in Ubuntu 12. Pensi che il manutentore del pacchetto lo avrebbe risolto ormai?
Mark E. Haase,

Risposte:


33

Cosa netstat -an | grep 5984dice? Dice 127.0.0.1:5984o *:5984? Se lo è 127.0.0.1, allora couchdb deve essere impostato per ascoltare entrambe le interfacce.


3
"tcp 0 0 127.0.0.1:5984 0.0.0.0:* ASCOLTA" è il risultato. Ho configurato couch.ini per avere "BindAddress = 0.0.0.0" e riavviato, quindi dovrebbe essere in ascolto su tutte le interfacce. Ecco la parte strana però: quando eseguo "sudo /etc/init.d/couchdb stop" quindi eseguo netstat, vedo ancora la voce sopra. Sembra che CouchDB in realtà non si fermi affatto. Questo potrebbe spiegare il mio problema, perché probabilmente non si è mai riavviato e probabilmente non ha mai rilevato la modifica di
BindAddress

3
sì, stavo correndo come processo in background. ha funzionato per me una volta che ho ucciso couchdb usando couchdb -d e lo ho riavviato
Kristian

2
Questa risposta mi ha aiutato! Volevo condividere che si potrebbe facilmente cambiare questa impostazione utilizzando l'interfaccia Web di Futon, senza dover trovare e modificare il file di configurazione effettivo sul disco . Vai a 127.0.0.1:5984/_utils/config.html(o URL equivalente per la tua configurazione) e fai doppio clic sul valore dell'opzione, modifica, quindi fai clic sul segno di spunta verde.
Steve Benner,

@SteveBenner Purtroppo 127.0.0.1:5984/_utils/config.html non porta nulla!
Dr.jacky,

@rcampbell Where is couch.ini?!
Dr.jacky,


7

Ho notato che per far funzionare tutto questo è necessario interrompere manualmente il processo di esecuzione di Erlang per qualche motivo. ps ax | grep beamdovrebbe rivelare il processo di erlang, dovresti ottenere qualcosa lungo le righe di 0:00 /usr/lib/erlang/ertsqualche parte nell'output. Se si interrompe questo processo e quindi si esegue /etc/init.d/couchdb restartil nuovo file di configurazione verrà caricato.


lo stesso per me - solo dopo aver ucciso il processo del raggio, quindi fare il couchdb -d, e quindi il servizio di arresto / avvio .. ha avuto effetto la nuova impostazione.
Bobby,

4

Sul PC / Mac di casa eseguire questo comando:

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

prossima apertura nel browser localhost: 5984 / _utils ... Funziona per me


4

Documenti di configurazione :

bind_address

Se lo cambi dal pannello di configurazione di Futon, non devi fare nient'altro (riavviare il db ecc.):

inserisci qui la descrizione dell'immagine

Prima di modificare l'indirizzo bind_ad predefinito:

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

Dopo aver cambiato in 0.0.0.0:

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

Nota non guru: i computer che non possono accedere al tuo (normalmente, qualsiasi cosa al di fuori della tua rete locale) non saranno comunque in grado di accedere al tuo computer (CouchDB o altro).


Mentre questa risposta è piuttosto vecchia, sembra portare nel posto giusto. Futon è stato sostituito con Fauxton, ma penso che le persone avranno la sensazione di cambiare l'indirizzo bind nella configurazione.
Scott Biggs,

2

Ho riscontrato questo e il mio problema è finito con il fatto che apparentemente era già installato couchdb nella mia installazione di Ubuntu. Stavo modificando i file di configurazione in / etc / couchdb, ma quello che stava eseguendo stava effettivamente estraendo la configurazione da / usr / local / etc / couchdb.

Il suggerimento era che le configurazioni in / etc / couchdb menzionavano il divano 0.10, ma avevo appena installato 1.0.1.


1

iptables -L -n -vti mostrerà le tue attuali regole del firewall. Vedi se ce n'è uno che sta rilasciando quei pacchetti prima che arrivi alla tua regola.


Non ci sono regole DENY elencate nella tabella. Altrimenti, ci sono tre ACCEPT, uno per 5984 e due duplicati per 8080. Non sono sicuro del motivo per cui ci sono due duplicati esatti per 8080 e quando provo a colpire Tomcat (in esecuzione su 8080) all'esterno della nostra rete fallisce, anche sebbene le macchine sulla nostra rete possano colpire bene Tomcat.
rcampbell,

Ti dispiace mostrare l'output? Prendi il tuo IP se necessario.
Bill Weiss,

Che ne dici di correre lsof -i -n -P | grep LISTENe pubblicare quello? Stai cercando il processo CouchDB e ciò a cui è destinato. In tal caso 127.0.0.1:5984, è necessario configurare CouchDB per ascoltare le connessioni esterne. Se è *:5984, beh, almeno CouchDB è configurato correttamente :)
Bill Weiss,

Ciao Bill, scusa per non aver risposto prima. Ho pubblicato il dump grezzo che hai richiesto alla domanda.
rcampbell,

Che ne dici di lsofquell'output?
Bill Weiss,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.