Come posso fare in modo che Ruby net :: http si fermi su ipv6?

0

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.

    
posta Michael Johnston 05.10.2014 - 00:57
fonte

1 risposta

1

Non sono sicuro che si tratti di un problema di Apple, ma di un problema di Ruby. Puoi vedere un rapporto sui bug qui

Potresti provare a specificare un nome host specifico per ipv6 al momento dell'inizializzazione.

Ad esempio, TCPServer.new('::1', pivotal_tracker_address) dovrebbe consentire di utilizzare curl senza specificare -ipv6 . Non riesco a vedere il tuo codice Ruby, quindi non sono sicuro che questo risolverà il tuo problema.

Spero che questo aiuti.

    
risposta data 10.03.2015 - 23:39
fonte

Leggi altre domande sui tag