1 votes

Comment faire pour que Ruby net::http arrête de caler sur ipv6 ?

Certains outils essentiels à mon flux de travail communiquent avec www.pivotaltracker.com en utilisant Ruby.

La combinaison de la mise à jour de Ruby 2.1.2 à Ruby 2.1.3, des récentes mises à jour du système OS X et des mises à jour de Brew a entraîné un temps de fonctionnement très long. ipv6 que je peux voir en utilisant curl pour faire des demandes d'api similaires :

    curl -v -H "X-TrackerToken: $TOKEN" -X GET http://www.pivotaltracker.com/services/v3/projects
    * About to connect() to www.pivotaltracker.com port 80 (#0)
    *   Trying 2607:f700:1:1388:c856:ed01:e1bf:b0e0…

après une minute ou deux d'échec sur toutes les adresses ipv6 de www.pivotaltracker.com, l'adresse ipv4 est finalement essayée, et la requête se termine avec succès.

Et ce, malgré l'utilisation de sudo networksetup -setv6off Ethernet et en vérifiant que ipv6 était "désactivé" dans Préférences>Réseau. J'ai également essayé de mettre une entrée ipv4 correcte dans ma page d'accueil. /etc/hosts .

Si j'utilise curl --ipv4 la demande est complétée immédiatement. Cependant je n'arrive pas à trouver comment forcer les ruby scripts qui utilisent net::http à sauter ipv6

Ce qui est profondément frustrant dans tout cela, c'est que le même problème s'est produit lors d'une série de mises à jour de l'environnement de développement en mai ou juin, et que je l'ai résolu d'une manière ou d'une autre, mais je ne parviens pas à redécouvrir comment ou à le trouver en consultant mes fichiers d'historique du shell.

Le problème n'est pas propre à pivotaltracker.com, mais il est vrai pour tout domaine qui possède des adresses ipv6. Os X essaie les adresses ipv6 en premier à moins qu'on ne lui dise de faire autrement, ce que les navigateurs et quelques autres applications semblent faire, mais pas ruby ni la plupart des applications unix. wget les stalles également.

Je finirai par mettre à niveau mon routeur et faire fonctionner ipv6 complètement, mais en attendant, j'aimerais trouver une solution de contournement.

Sortie de ifconfig

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    options=3<RXCSUM,TXCSUM>
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
    inet 127.0.0.1 netmask 0xff000000
    inet6 ::1 prefixlen 128
    inet6 fd3e:fe65:5a2c:ebe1:224:1dff:fe16:65d3 prefixlen 128
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 00:24:1d:16:65:d3
    inet 192.168.0.47 netmask 0xffffff00 broadcast 192.168.0.255
    media: autoselect (1000baseT <full-duplex>)
    status: active
fw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 2030
    lladdr 00:19:a1:fa:00:00:24:1d
    media: autoselect <full-duplex>
    status: inactive
vnic0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=3<RXCSUM,TXCSUM>
    ether 00:1c:42:00:00:08
    inet 10.211.55.2 netmask 0xffffff00 broadcast 10.211.55.255
    inet6 fe80::21c:42ff:fe00:8%vnic0 prefixlen 64 scopeid 0x6
    inet6 ::1 prefixlen 64
    media: autoselect
    status: active
vnic1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=3<RXCSUM,TXCSUM>
    ether 00:1c:42:00:00:09
    inet 10.37.129.2 netmask 0xffffff00 broadcast 10.37.129.255
    inet6 fe80::21c:42ff:fe00:9%vnic1 prefixlen 64 scopeid 0x7
    inet6 ::1 prefixlen 64
    media: autoselect
    status: active

netstat -r

Lorsque j'exécute netstat -r, il y a une section Internet6, bien que Préférences Système>Réseau>Ethernet>Avancé >Configurer IPv6 soit réglé sur Désactivé.

1voto

guest Points 11

Je ne suis pas sûr que ce soit un problème Apple, mais un problème Ruby. Vous pouvez voir un rapport de bogue ici.

Vous pouvez essayer de spécifier un nom d'hôte spécifique à ipv6 lors de l'initialisation.

Par exemple, TCPServer.new('::1', pivotal_tracker_address) devrait vous permettre d'utiliser curl sans spécifier l'option -ipv6 . Je ne peux pas voir votre code Ruby, donc je ne suis pas sûr que cela va résoudre votre problème.

J'espère que cela vous aidera.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X