Jak zezwolić przeglądarce na preferowanie IPv6 zamiast IPv4?

16

Zainstalowałem miredo i mam IPv6 działający i wydaje się, że działa. Mogę pingować hosty i pobierać strony internetowe za pomocą wget lub mojego przeglądarki internetowej, gdy określam adresy IPv6, jednak za każdym razem, gdy określam nazwę hosta oferowaną zarówno przez IPv4, jak i IPv6, przeglądarka wybiera adres IPv4 dla połączenia.

Jak mogę to zmienić i pozwolić przeglądarce na używanie IPv6 zamiast IPv4, jeśli jest dostępny?

W Google'a znalazłem wskazówkę, że przeglądarki wolą IPv4 niż IPv6 dla tuneli 6to4 / teredo, ale jak dotąd nie znalazłem wyjaśnienia, dlaczego lub jak to zmienić.

Grumbel
źródło

Odpowiedzi:

10

To nie przeglądarki preferują jedną z opcji, to system operacyjny. Norma określa priorytety mniej więcej tak:

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

Możesz to zmienić, edytując bloki etykiety / pierwszeństwa w /etc/gai.conf(gai oznacza getaddrinfostandardowe wywołanie systemowe do rozwiązywania nazw hostów).

Szczegółowe wyjaśnienie gai.confmożna znaleźć na stronie podręcznika

Nawiasem mówiąc, tłumaczy to również doświadczenie Jonathona, że ​​tunel SiXXS był lepszy niż 6to4.

Freddyb
źródło
7

W przypadku przeglądarki Firefox i innych przeglądarek opartych na Mozilla / Gecko network.dns.disableIPv6ustawienie about:configpowinno być takie, falsejeśli masz IPv6 (domyślnie jest to prawda w Ubuntu, ponieważ w przeciwnym razie wiele osób ma problemy z błędnymi serwerami proxy DNS w routerach domowych).

JanC
źródło
Rozumiem, że to dla Firefoksa?
Tak, przepraszam, zaktualizuję moją odpowiedź.
JanC
2
Właśnie sprawdziłem. Nie trzeba dotykać pref. Obecnie jest domyślnie ustawiony na trueFirefox - także dla Ubuntu's Firefox.
freddyb,
6

Tak jak wskazał freddyb, zależy to od konfiguracji standardowego wywołania systemowego do rozpoznawania nazw hostów, getaddrinfo .

Aby rozwiązać problem, zastąp jego treść /etc/gai.confnastępującymi liniami:

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

zaktualizowano : dziękuję freddybowi za wskazanie, że moja poprzednia odpowiedź była błędna: Musimy skomentować ostatnią linię, a nie trzecią. Teraz to działa dla mnie!

pklaus
źródło
6

Od niedawna Chrome, Firefox, a także przeglądarki pochodne faktycznie unikają IPv6, jeśli witryna reaguje szybciej przez IPv4. Nie można zmienić tego zachowania za pomocą ustawienia konfiguracji.

Sama funkcja jest prawdopodobnie rozsądna dla zwykłego użytkownika, ale prawie doprowadza mnie do szału, że nie można jej wyłączyć. Łączność IPv6 jest obecnie całkiem dobra i czasami IPv6 ma kilka zalet w porównaniu z IPv4, nawet jeśli opóźnienia - z powodu tunelowania - są większe. Przeglądam IPv6 od lat i pomimo tego, że routing i wydajność IPv6 są coraz lepsze, ta cholerna funkcja „włamania” do przeglądarki odrzuca mnie o dekadę.

MegaGuest
źródło
2
Takie zachowanie jest zalecane w RFC 6555. Jest to powszechna praktyka od około 2010 roku. Aby zapewnić przyzwoite wrażenia użytkownikom, jest to absolutnie właściwe zachowanie, którego należy używać domyślnie. Gdyby przeglądarki tego nie zrobiły, większość stron internetowych w ogóle odmawiałaby publikacji rekordów AAAA. To powiedziawszy, ustawienie dostrajania ma wiele milisekund przewagi, aby dać IPv6 byłoby dobrym pomysłem. Możliwość wybrania tego typu head-start na stronę byłaby jeszcze lepsza. Ustawienie dla witryny można dodać do przeglądarki jako możliwą wartość zwracaną ze skryptu proxy.
kasperd
2

OK, przyglądałem się temu i to dziwne.

  1. Użyj lokalnego proxy
    Jeśli ustawię Firefoksa na proxy przez Squid działającego na moim komputerze, Firefox (a ściślej Squid) połączy się przez tunel miredo. Jeśli mam zainstalowany miredo, ale Firefox jest ustawiony na „bez proxy”, Firefox najpierw używa IPV4.

  2. Zainstaluj aiccu
    Jeśli zainstaluję aiccu i skonfiguruję go za pomocą tunelu (np. SiXXS), to bez względu na ustawienia proxy IPV6 jest najpierw używany przez Firefox.

Może się zdarzyć, że ponieważ miredo jest dostępne do łączenia się ze stronami IPV6, jest używane tylko wtedy, gdy IPV4 nie jest dostępne, w takim przypadku spróbuj aiccu.

Jonathon
źródło
1

Odpowiedź jest prosta: zmień etykiety.

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

To sprawia, że ​​są one równoważne z „waniliową” ipv6.

Jeśli zostawisz je komentowane, będą one przyjmować wartości domyślne.

Gronostaj
źródło