web-dev-qa-db-fra.com

Comment laisser le navigateur préférer IPv6 à IPv4?

J'ai installé miredo et IPv6 est opérationnel. Je peux envoyer des requêtes ping6 aux hôtes et télécharger des pages Web avec wget ou mon navigateur Web lorsque je spécifie des adresses IPv6. Toutefois, chaque fois que je spécifie un nom d'hôte offert à la fois sur IPv4 et IPv6, le navigateur sélectionne l'adresse IPv4 pour la connexion.

Comment puis-je changer cela et laisser le navigateur utiliser IPv6 au lieu d'IPv4 s'il est disponible?

En cherchant sur Google, j'ai trouvé un indice selon lequel les navigateurs préféreraient IPv4 à IPv6 pour les tunnels 6to4/Teredo, mais je n'ai pas trouvé d'explication ni pourquoi ni comment changer cela.

16
Grumbel

Ce ne sont pas les navigateurs qui préfèrent les options, c'est le système d'exploitation. Le standard définit les priorités à peu près comme ceci:

  1. ipv6
  2. ipv4
  3. 6to4-Traffic

Vous pouvez changer cela en modifiant les blocs label/precedence dans /etc/gai.conf (gai signifie getaddrinfo, l'appel système standard permettant de résoudre les noms d'hôte).

Vous trouverez une explication détaillée sur gai.conf dans le page de manuel

Cela explique d'ailleurs l'expérience de Jonathon selon laquelle le tunnel SiXXS a été préféré à 6to4.

10
freddyb

Pour Firefox et les autres navigateurs basés sur Mozilla/Gecko, le paramètre network.dns.disableIPv6 dans about:config doit être false si vous avez IPv6 (il est défini sur true par défaut dans Ubuntu, car sinon beaucoup de gens ont des problèmes avec des proxies DNS boguées dans les routeurs domestiques).

7
JanC

Comme Freddyb l'a fait remarquer, cela dépend de la configuration de l'appel système standard pour résoudre les noms d'hôte, getaddrinfo.

Pour résoudre votre problème, remplacez le contenu de votre /etc/gai.conf par les lignes suivantes:

label ::1/128       0
label ::/0          1
label 2002::/16    2
label ::/96         3
label ::ffff:0:0/96 4
label fec0::/10     5
label fc00::/7      6
#label 2001:0::/32   7

updated : merci à freddyb pour avoir signalé que ma réponse précédente était fausse: nous devons commenter la dernière ligne, pas la 3ème. Maintenant ça marche pour moi!

6
pklaus

Depuis peu, Chrome, Firefox ainsi que les navigateurs dérivés évitent en fait IPv6 si un site répond plus rapidement sur IPv4. Il n'est pas possible de modifier ce comportement au moyen d'un paramètre de configuration.

La fonctionnalité elle-même est probablement raisonnable pour l'utilisateur ordinaire, mais cela me rend presque fou de ne pas pouvoir la désactiver. La connectivité IPv6 est plutôt bonne de nos jours et parfois, IPv6 présente plusieurs avantages par rapport à la connexion via IPv4, même si le temps de latence - dû au tunneling - est plus élevé. Je navigue sur IPv6 depuis des années et malgré le routage IPv6 et les performances qui s’est nettement améliorées, cette fonctionnalité "de piratage" de ce fouteur de navigateur me fait perdre une dizaine d’années.

6
MegaGuest

OK, j'ai étudié ça et c'est bizarre.

1) Utilisez un proxy local.
Si je configure Firefox en proxy via Squid sur ma machine, Firefox (ou plus précisément Squid) se connectera via le tunnel miredo. Si j'ai miredo installé mais que Firefox est réglé sur "pas de proxy", Firefox utilise d'abord IPV4.

2) installer aiccu
 Si j'installe aiccu et le configure avec un tunnel (par exemple, SiXXS), peu importe mes paramètres de proxy, IPV6 est utilisé en premier par Firefox.

Il se peut que miredo soit disponible pour se connecter aux sites IPV6. Il est uniquement utilisé lorsque IPV4 n’est pas disponible. Dans ce cas, essayez aiccu.

2
Jonathon

La réponse est simple: modifiez les étiquettes.

label 2002::/16    1
label 2001:0::/32   1

Cela les rend équivalentes à "Vanilla" ipv6.

Si vous les laissez commentés, ils prendront les valeurs par défaut.

1
Stoat