Ci sono alcuni strumenti fondamentali per il mio flusso di lavoro che parlano di www.pivotaltracker.com usando ruby.
Una combinazione dell'aggiornamento da Ruby 2.1.2 a Ruby 2.1.3, gli aggiornamenti recenti del sistema operativo x x e gli aggiornamenti brew li hanno indotti a impiegare molto tempo a funzionare, e il motivo è ipv6 , che posso vedere usando curl
per fare richieste API simili:
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…
dopo un minuto o due di timeout su tutti gli indirizzi ipv6 di www.pivotaltracker.com, l'indirizzo ipv4 viene infine provato e la richiesta viene completata con successo.
Questo nonostante abbia utilizzato sudo networksetup -setv6off Ethernet
e verificato che ipv6 fosse "disattivato" in Preferenze > Rete. Ho anche provato a inserire una voce ipv4 corretta nel mio /etc/hosts
.
Se utilizzo curl --ipv4
, la richiesta viene completata immediatamente. Tuttavia non riesco a capire come forzare gli script ruby che usano net::http
per saltare ipv6
La cosa profondamente frustrante è che lo stesso problema è accaduto con una serie di aggiornamenti dell'ambiente di sviluppo a maggio o giugno, e in qualche modo l'ho risolto, ma non riesco a riscoprire come o trovarlo guardando attraverso i miei file di cronologia shell.
Il problema non è esclusivo di pivotaltracker.com, ma è vero per qualsiasi dominio che abbia indirizzi ipv6. Os X prova prima gli indirizzi ipv6 a meno che non venga detto di fare altrimenti, quali browser e alcune altre app sembrano fare, ma ruby e la maggior parte delle app unix no. wget
si blocca pure.
Alla fine aggiornerò il mio router e farò funzionare ipv6 completamente, ma nel frattempo mi piacerebbe trovare una soluzione alternativa.
Output di 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
quando eseguo netstat -r, ha una sezione Internet6, nonostante Preferenze di Sistema > Rete > Ethernet > Avanzate ... > Configura IPv6 impostato su Off.