Como posso usar o curl com :: 1 para loopback baseado em ipv6?

22

Eu tentei algumas maneiras, mas elas parecem ser confusas.

root@testt:~# curl localhost:8080
<h1>Hello world!</h1>

<p>Boom Bam Splat</p>
root@testt:~# curl ::1:8080
curl: (3) IPv6 numerical address used in URL without brackets
root@testt:~# curl [::1]:8080
curl: (3) [globbing] bad range specification in column 2
    
por hak8or 05.03.2015 / 07:37

2 respostas

36

Olhando para as sugestões e detalhando os erros comuns, nesta postagem do blog , talvez você deva tentar fazer isso.

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

O -g parece ser a chave mágica para que isso funcione. Conforme explicado na página do manual curl :

This option switches off the "URL globbing parser". When you set this option, you can specify URLs that contain the letters {}[] without having them being interpreted by curl itself. Note that these letters are not normal legal URL contents but they should be encoded according to the URI standard.

E o -6 significa usar apenas IPv6:

If libcurl is capable of resolving an address to multiple IP versions (which it is if it is IPv6-capable), this option tells libcurl to resolve names to IPv6 addresses only.

Mas lendo essa descrição de funcionalidade, parece que -6 não é realmente necessário para um endereço IPv6 puro; somente se um estiver usando curl em um nome de host que tenha um endereço IPv4 e IPv6 conectado a ele, para preferir o IPv6. Apenas algo para anotar.

    
por 05.03.2015 / 07:53
8

De "curl --manual", encontrei isto:

curl -g "http://[2001:1890:1112:1::20]/"

ou

curl "http://[2001:1890:1112:1::20]/"

Então, para o endereço que você está perguntando, tente:

curl -g "http://[::1]:8080/"

No entanto, você pode querer executar:

curl -V

e veja se o IPv6 aparece na linha que diz "Recursos" (a terceira linha, sem contar as linhas extras da quebra de linha). Eu encontrei a minha versão não. A página de download do cURL tem vários links para sistemas operacionais, incluindo curl 7.41.0 site de download (que atualmente é a versão mais recente) para o Microsoft Windows. Essa página tem vários executáveis (disponíveis para o Microsoft Windows); o primeiro que encontrei não suportou o IPv6. Mas os dois descritos como "ipv6-sspi-spnego-winssl" (um para x86 e um para x64) fizeram: curl -V mostrou IPv6. Portanto, tenha cuidado com o pacote que você baixou.

    
por 05.03.2015 / 07:55