Preferuj wyszukiwania DNS A (IPv4) przed wyszukiwaniem AAAA (IPv6)

44

Zauważ, że moje nowo zainstalowane Ubuntu 10.10 zawsze wykonuje wyszukiwanie DNS AAAA przed wyszukiwaniem rekordów. Czy jest jakiś sposób, aby skonfigurować system, aby najpierw wyszukiwał?

(Podczas gdy różne przeglądarki i inne aplikacje mogą zawierać własne programy tłumaczące, mówię o tych w glibc)

nr
źródło
Aby to wyjaśnić, chcesz mieć zarówno IPv4, jak i IPv6?
belacqua
Najlepiej tak. Ale ponieważ mam tylko link do lokalnego IPv6, to marnotrawstwo, prosząc o np. Rekord AAAA z google.com za każdym razem, a następnie pytam o rekord A później.
nos

Odpowiedzi:

53

Standardowo priorytetem jest IPv6 zamiast IPv4, aby umożliwić przejęcie IP następnej generacji :)

Możesz to zmienić, edytując bloki pierwszeństwa w /etc/gai.conf(gai oznacza getaddrinfostandardowe wywołanie systemowe do rozwiązywania nazw hostów). Po prostu skomentuj wiersz zgodnie z opisem w pliku:

# W przypadku witryn preferujących połączenia IPv4 zmień ostatnią linię na

#precedence :: ffff: 0: 0/96 100

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

Freddyb
źródło
dzięki, uratowałeś mi dzień! jeden z moich serwerów ciągle otrzymuje wyniki ipv6 z serwera dns, ale mój serwer po prostu nie działał poprawnie w / ipv6
Boon
Cześć, czy to ustawienie wymaga przeładowania sysctl lub jakiejkolwiek usługi lub ponownego uruchomienia komputera, aby zadziałało? Uznałem twoją odpowiedź za przydatną, ale możesz ją edytować, aby rozwiać takie wątpliwości.
Marco
Strona podręcznika man gai.confmówi, że musisz cofnąć komentarz do wszystkich linii, nie tylko IPv4, aby uzyskać poprawne zmodyfikowane zachowanie. Od gai.conf(5): „Znów obecność pojedynczego wiersza pierwszeństwa w pliku konfiguracyjnym powoduje, że domyślna tabela nie jest używana.” Jeśli chcesz, aby inne domyślne wiersze tabeli nadal działały, musisz je również cofnąć komentarz.
Ian D. Allen
10

Mój problem był taki sam, miałem zapytania IPV6 wykonane przed IPV4, a one marnowały zasoby, więc zmieniłem plik /etc/gai.conf jak opublikował freddyb, ale mój scenariusz jest nieco inny, mój serwer jest natted, więc IPv4 nie będzie miał pierwszeństwa przed IPv6 tylko z tą linią. Rozwiązaniem jest również komentowanie innych linii na gai.conf, więc będzie to wyglądać tak

#For sites which prefer IPv4 connections change the last line to
precedence ::ffff:0:0/96 100
...
#    For sites which use site-local IPv4 addresses behind NAT there is
#    the problem that even if IPv4 addresses are preferred they do not
#    have the same scope and are therefore not sorted first.  To change
#    this use only these rules:
#
scopev4 ::ffff:169.254.0.0/112  2
scopev4 ::ffff:127.0.0.0/104    2
scopev4 ::ffff:0.0.0.0/96       14

Twój serwer spróbuje najpierw ipv4, nawet jeśli jesteś natted!

Carlos Ho Continy
źródło
2
/etc/gai.confPlików w Ubuntu 15.04 „żywy”, mówi te trzy scopev4linie, które sugerują powyżej są już domyślne. Wprowadziłem tylko zmianę jednej linii precedence ::ffff:0:0/96 100i działało to nawet za NAT.
Ian D. Allen
1

Jeśli nie chcesz wcale włączać IPv6, możesz wyłączyć IPv6, aby to osiągnąć. http://www.webupd8.org/2010/05/how-to-disable-ipv6-in-ubuntu-1004.html

jeśli nie, możesz spróbować dodać

options single-request

Do pliku /etc/resolv.conf. (zobacz krwawe szczegóły na http://udrepper.livejournal.com/20948.html )

ipv6_twit
źródło
1
Strona podręcznika dla resolv.conf wskazuje, że sugerowana opcja robi dokładnie przeciwne „Ta opcja [...] powoduje, że glibc wykonuje żądania IPv6 i IPv4 sekwencyjnie (kosztem pewnego spowolnienia procesu rozstrzygania).” - man7.org/linux/man-pages/man5/resolver.5.html
ndemou
sekwencyjny = pierwszy, potem drugi - w przeciwieństwie do równoległego. tutaj działa dobrze.
cweiske