Um contêiner docker meu expõe uma interface HTTP na porta 8500, que é mapeado para a porta do host 8500. Ele não está IPv6 ativado. Isso ainda significa, eu deveria ser capaz de acessá-lo em localhost: 8500. IPv6 é o preferido, então acabo com um pedido para [:: 1]: 8500. Este fica preso, nunca mais volta.
Reproduzindo isso com o curl, esse comando fica preso:
curl -g -6 "http://[::1]:8500"
A opção --verbose do curl não revela nada, nem o --ascii-trace. Ao mesmo tempo, uma solicitação para o localhost do IPv4 é bem-sucedida:
curl http://127.0.0.1:8500
me dando o HTML esperado. Se eu executar um servidor HTTP IPv4 no loopback, usando
python -m SimpleHTTPServer 4001
então eu recebo muito HTML para o localhost do IPv4
curl http://127.1:4001
e uma falha de conexão adequada para o IPv6:
curl -g -6 "http://[::1]:4001"
curl: (7) Failed to connect to ::1 port 4001: Connection refused
Coisas a observar: Docker 1.7.1. O IPv6 não está ativado para o contêiner, portanto não há regras de iptables IPv6. (ip6tables -v -L não dá nada)
Minha pergunta é: por que a solicitação fica paralisada e fazendo o que?