Hay algunas herramientas críticas para mi flujo de trabajo que hablan con www.pivotaltracker.com usando ruby.
Alguna combinación de actualización de Ruby 2.1.2 a Ruby 2.1.3, actualizaciones recientes del sistema OS X y actualizaciones de preparación provocó que comenzaran a tardar mucho tiempo en funcionar, y la razón es ipv6 , que puedo ver usando curl
para hacer solicitudes de API similares:
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…
después de un minuto o dos de tiempo de espera en todas las direcciones ipv6 de www.pivotaltracker.com, la dirección ipv4 se intenta y la solicitud se completa con éxito.
Esto es a pesar de usar sudo networksetup -setv6off Ethernet
y verificar que ipv6 estaba "apagado" en Preferencias > Redes. También he intentado colocar una entrada correcta de ipv4 en mi /etc/hosts
.
Si uso curl --ipv4
, la solicitud se completa de inmediato. Sin embargo, no puedo averiguar cómo forzar los scripts ruby que usan net::http
para omitir ipv6
Lo más frustrante de esto es que el mismo problema ocurrió con una ronda de actualizaciones del entorno de desarrollo en mayo o junio, y de alguna manera lo resolví, pero parece que no puedo volver a descubrir cómo o encontrarlo mirando a través de mis archivos de historial de shell.
El problema no es exclusivo de pivotaltracker.com, pero es cierto para cualquier dominio que tenga direcciones ipv6. Os X intenta las direcciones ipv6 primero, a menos que se indique lo contrario, lo que los navegadores y algunas otras aplicaciones parecen hacer, pero ruby y la mayoría de las aplicaciones de Unix no lo hacen. wget
se detiene también.
Eventualmente, actualizaré mi enrutador y haré que ipv6 funcione completamente, pero mientras tanto me gustaría encontrar una solución.
Salida 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
cuando ejecuto netstat -r, tiene una sección de Internet6, a pesar de las Preferencias del sistema > Red > Ethernet > Advanced ... > Configure IPv6 en Off.