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

16

J'ai installé miredo et ai IPv6 opérationnel et il semble. 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, mais chaque fois que je spécifie un nom d'hôte proposé sur IPv4 et IPv6, le navigateur choisit l'adresse IPv4 pour la connexion.

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

En parcourant Google, j'ai trouvé un indice que les navigateurs préféreraient IPv4 à IPv6 pour les tunnels 6to4 / teredo, mais jusqu'à présent, je n'ai pas trouvé d'explication pourquoi ou comment changer cela.

Grumbel
la source

Réponses:

10

Ce ne sont pas les navigateurs qui préfèrent l'une des options, c'est le système d'exploitation. La norme 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 d'étiquette / de priorité dans /etc/gai.conf(gai signifie getaddrinfo, l'appel système standard pour résoudre les noms d'hôte).

Une explication détaillée sur gai.confpeut être trouvée dans la page de manuel

D'ailleurs, cela explique également l'expérience de Jonathon selon laquelle le tunnel SiXXS était préféré à 6to4.

freddyb
la source
7

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

JanC
la source
Je suppose que c'est pour Firefox?
Oui, désolé, mettra à jour ma réponse.
janvier 2010
2
Je viens de vérifier. Il n'est pas nécessaire de toucher le préf. De nos jours, il est par défaut truedans Firefox - également pour Firefox d'Ubuntu.
freddyb
6

Tout comme l'a souligné freddyb, 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.confpar 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

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

pklaus
la source
6

Récemment, Chrome, Firefox ainsi que les navigateurs dérivés évitent réellement 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 que vous ne puissiez pas la désactiver. La connectivité IPv6 est assez bonne de nos jours et parfois IPv6 présente plusieurs avantages par rapport à la connexion via IPv4 même si la latence - due au tunneling - est plus élevée. Je navigue sur IPv6 depuis des années et malgré le routage et les performances IPv6 qui s'améliorent beaucoup, cette putain de fonction de «piratage» du navigateur me ramène une décennie en arrière.

MegaGuest
la source
2
Ce comportement est recommandé dans la RFC 6555. C'est une pratique courante depuis environ 2010. Et pour fournir une expérience utilisateur décente, c'est absolument le bon comportement à utiliser par défaut. Si les navigateurs ne l'avaient pas fait, la plupart des sites Web auraient refusé de publier les enregistrements AAAA. Cela dit, un paramètre à modifier ayant plusieurs millisecondes d'avance pour donner IPv6 serait une bonne idée. Être en mesure de choisir cette longueur d'avance par site serait encore mieux. Le paramètre par site peut être ajouté au navigateur en tant que valeur de retour possible à partir d'un script proxy.
kasperd
2

OK, je me suis penché là-dessus et c'est bizarre.

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

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

Il se peut que miredo soit là pour se connecter aux sites IPV6, il n'est utilisé que lorsque IPV4 n'est pas disponible, auquel cas essayez aiccu.

Jonathon
la source
1

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

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

Cela les rend équivalents à "vanilla" ipv6.

Si vous les laissez commentés, ils récupèrent les valeurs par défaut.

Hermine
la source