la richiesta di arricciatura all'host locale IPv6 si blocca


9

Un contenitore docker mio espone un'interfaccia HTTP sulla porta 8500, che è mappato porta host 8500. Si Non IPv6 abilitato. Ciò significa ancora, dovrei essere in grado di accedervi su localhost: 8500. Si preferisce IPv6, quindi finisco con una richiesta a [:: 1]: 8500. Questo si blocca, non ritorna mai.

Riproducendolo con il ricciolo, questo comando si blocca:

curl -g -6 "http://[::1]:8500"

L'opzione --verbose di curl non rivela nulla, e nemmeno --ascii-trace. Allo stesso tempo, una richiesta all'host locale di IPv4 ha esito positivo:

curl http://127.0.0.1:8500

dandomi l'HTML previsto. Se eseguo un server HTTP IPv4 su loopback, utilizzando

python -m SimpleHTTPServer 4001

quindi ricevo un sacco di HTML per localhost di IPv4

curl http://127.1:4001

e un corretto errore di connessione per IPv6:

curl -g -6 "http://[::1]:4001"
curl: (7) Failed to connect to ::1 port 4001: Connection refused

Cose da notare: Docker 1.7.1. IPv6 non è abilitato per il contenitore, quindi non esistono regole iptable IPv6. (ip6tables -v -L non fornisce nulla)

La mia domanda è: perché la richiesta si blocca e facendo cosa?


1
Ci mostreresti l'output di "netstat -6 -an"?
Rui F Ribeiro,

Sì, la finestra mobile sta ascoltando su quella porta: tcp6 0 0 :::8500 :::* LISTEN 1648/docker affascinante. Perché? E perché sta bloccando?
mknecht,

Ascolto e non configurato, o IPv6 disabilitato in sysctl, immagino. nginx, apache, lighthttp, vuoi aggiungere il web server in questione al post, per favore?
Rui F Ribeiro,

All'interno del contenitore, Console, un archivio di valori-chiave per la configurazione, sta ascoltando. Ma non credo sia rilevante: il contenitore non è stato abilitato per IPv6. Quella richiesta non dovrebbe mai arrivare al Console. Tuttavia, non riesco a capire a quale livello rimane bloccato. Sull'host /proc/sys/net/ipv6/conf/all/disable_ipv6restituisce 0, quindi IPv6 deve essere abilitato.
mknecht,

2
Questo non significa molto. È possibile disabilitare IPv6 anche in sysctl e nei kernel più recenti, purché il programma si associ a un socket IPv6, la richiesta viene rispettata. Una seccatura nel culo, dato che devi passare attraverso ogni demone che supporta IPv6 e disabilitare la configurazione IPv6.
Rui F Ribeiro,

Risposte:


0

Abilita l'inoltro ipv6 e ebable.

# cat /etc/sysctl.conf | grep ipv6
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.all.disable_ipv6=0
net.ipv6.conf.default.disable_ipv6=0

1
Apparentemente, l'OP non sta cercando di far funzionare qualcosa; la vera domanda è "Perché la richiesta si blocca e fa cosa?". La tua risposta fornisce una spiegazione per questo? In tal caso, potresti chiarire come?
fra-san,
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.