43 votes

Comment puis-je utiliser curl avec ::1 pour une boucle de retour basée sur IPv6 ?

J'ai essayé quelques façons mais elles semblent être des commandes curl confuses.

root@testt:~# curl localhost:8080
Hello world!

Boom Bam Splat
root@testt:~# curl ::1:8080
curl: (3) Adresse numérique IPv6 utilisée dans l'URL sans crochets
root@testt:~# curl [::1]:8080
curl: (3) [globbing] mauvaise spécification de plage dans la colonne 2

58voto

Giacomo1968 Points 48326

En regardant les suggestions — et la décomposition des erreurs courantes — sur ce billet de blog, peut-être devriez-vous essayer ceci.

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

Le -g semble être la clé magique pour que cela fonctionne. Comme expliqué sur la man page de curl:

Cette option désactive le "parsage de globbing d'URL". Lorsque vous définissez cette option, vous pouvez spécifier des URL contenant les lettres {}[] sans qu'elles soient interprétées par curl lui-même. Notez que ces lettres ne sont pas des contenus d'URL normaux, mais elles doivent être encodées selon la norme URI.

Et le -6 signifie d'utiliser uniquement IPv6 :

Si libcurl est capable de résoudre une adresse en plusieurs versions IP (ce qui est le cas s'il est capable d'IPv6), cette option indique à libcurl de résoudre les noms en adresses IPv6 uniquement.

Mais en lisant cette description de fonctionnalité, il semble que le -6 n'est pas vraiment nécessaire pour une adresse IPv6 pure ; seulement si l'on utilise curl sur un nom d'hôte qui a une adresse IPv4 et IPv6 connectée à celui-ci pour qu'il préfère l'IPv6. Juste quelque chose à noter.

10voto

frooyo Points 658

À partir de "curl --manual", j'ai trouvé ceci :

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

ou

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

Donc, pour l'adresse à laquelle vous demandez, essayez :

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

Cependant, vous voudrez peut-être exécuter :

curl -V

et voir si IPv6 apparaît sur la ligne qui dit "Fonctionnalités" (la troisième ligne, en ne comptant pas les lignes supplémentaires dues à la césure des mots). J'ai découvert que ma version ne l'affichait pas. La page de téléchargement de cURL propose divers liens pour les systèmes d'exploitation, y compris le site de téléchargement de curl 7.41.0 (qui est actuellement la dernière version) pour Microsoft Windows. Cette page propose plusieurs exécutables (disponibles pour Microsoft Windows) ; le premier que j'ai trouvé ne prenait pas en charge IPv6. Mais les deux décrits comme "ipv6-sspi-spnego-winssl" (un pour x86 et un pour x64) l'ont fait : curl -V indiquait IPv6. Faites donc attention au package que vous téléchargez.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X