ISP, nad którym pracuję, ustanawia wewnętrzną sieć IPv6 w ramach przygotowań do ewentualnego połączenia z Internetem IPv6. W rezultacie kilka serwerów w tej sieci próbuje teraz domyślnie połączyć się z security.debian.org za pomocą adresu IPv6 podczas działania apt-get update
, co powoduje, że trzeba czekać na długi limit czasu przy każdym pobieraniu aktualizacji .
Czy istnieje sposób, aby powiedzieć aptowi, aby wolał IPv4 lub całkowicie ignorował IPv6?
/etc/gai.conf
abysecurity.debian.org
rekord A był zwracany przed rekordem AAA, ale nie wiem dokładnie, co umieścić w tym pliku.Odpowiedzi:
Dodaj
-o Acquire::ForceIPv4=true
podczas uruchamianiaapt-get
.Jeśli chcesz, aby ustawienie było trwałe, po prostu utwórz /etc/apt/apt.conf.d/99force-ipv4 i umieść
Acquire::ForceIPv4 "true";
w nim:Opcje konfiguracyjne
Acquire::ForceIPv4
iAcquire::ForceIPv6
dodano do wersji 0.9.7.9 ~ EXP1 (patrz błąd 611891 ), który jest dostępny od Ubuntu Saucy (wydany w październiku 2013 roku) oraz Debian Jessie (wydana w kwietniu 2015).źródło
apt.conf
, musisz napisać to w ten sposób:Acquire::ForceIPv4 "true";
(z podwójnymi cytatami)sudo echo 'test' > file
nie działałoby, ponieważ przekierowanie jest wykonywane z uprawnieniami użytkownikaJak mówi Gilles , użyj
gai.conf
. Uwagi:getaddrinfo
.gai.conf
należy wykonać kopię zapasową, a także przeczytać ją (nie martw się, jest krótka). Poniższe zmiany są prawdopodobnie już wspomniane w twoim bieżącym pliku; jeśli bieżący plik wskazuje coś innego niż to, co wspomniano poniżej, prawdopodobnie powinieneś preferować zawartość bieżącego pliku.Ale jeśli tego właśnie chcesz (a prawdopodobnie tak jest), przejdźmy dalej. Powiedzmy, że mamy dwóch gospodarzy
www.he.net
iwww.ripe.net
:Przypadek 1: preferuj IPV4 dla wszystkich hostów
Dołącz do
/etc/gai.conf
następującego wiersza:Po zapisaniu edytowanego pliku (bez konieczności ponownego uruchamiania) powinieneś zobaczyć aplikacje sieciowe (np.
telnet
) Korzystające z IPV4: np.Przypadek 2: preferuj IPV6 dla określonych hostów
Jeśli chcemy preferować IPV6 tylko dla
www.he.net
lub jego sieci, możemy dołączyć maskę / prefiks do wszystkich lub tylko części jego adresu IPV6/etc/gai.conf
. Np. Następujący wiersz:(po zapisaniu edytowanego pliku) produkuje
Przypadek 3: preferuj IPV4 dla określonych hostów
Jeśli odwrócimy maskę, czy odwrotność będzie prawdziwa? Według @GrueMaster, dołączanie
pracował dla niego po wyłączeniu IPV6 dla
security.ubuntu.com
(w przeciwnym razie utknie na zawsze).Zobacz też:
źródło
#security.debian.org has IPv6 address 2610:148:1f10:3::73 \n #security.debian.org has IPv6 address 2001:4f8:8:36::6 \n precedence 2001:4f8::/96 100 \n precedence 2610:148::/96 100
do mojego /etc/gai.conf i aktualizacja apt-get działa teraz idealnie.Możesz ustawić apt-cacher-ng na wolnym komputerze, aby działał jako proxy / cache dla wszystkich twoich hostów. Możesz zmusić konfigurację do używania tylko określonych hostów lub użyć sztuczki / etc / hosts sugerowanej przez @badp na tym samym komputerze.
Po skonfigurowaniu apt-cache-ng wystarczy upuścić następującą linię (ze zmienionym adresem IP / nazwą hosta, aby wskazywała na twoją pamięć podręczną) w /etc/apt/apt.conf.d/90httpproxy
Korzystam z tej konfiguracji, aby zmniejszyć wykorzystanie przepustowości, ale powinno to rozwiązać problem. Niestety nie znam sposobu na bezpośrednie wyłączenie wyszukiwania ipv6 dla samego apt-get.
źródło
Można obejść ten problem, konfigurując serwer proxy DNS, który upuszcza odpowiedzi ip6.
źródło
Co powiesz na dodanie wiersza
/etc/hosts
zastępującego odpowiednie adresy? na przykład,źródło
/etc/hosts
adresy IP nie są właścicielami siebie.Porwanie starego tematu, ale ostatnio ten sam problem. Tak więc, w oparciu o porady podane powyżej oraz wyniki hosta i whois :
Rozwiązano problem w nieco inny sposób - obniżono priorytet sieci IPv6, które zawierają security.debian.org w /etc/gai.conf :
Dlatego IPv6 jest nadal preferowany, z wyjątkiem security.debian.org .
źródło
Na 08 października 2014 miałem ten sam problem, próbując zaktualizować Debiana za proxy w sieci lokalnej. W nadziei, że będzie to miało znaczenie dla innych, zamieszczam tutaj swoją odpowiedź. Jak wspomnieli inni, podczas edycji
/etc/hosts
należy zachować ostrożność.Ale osobiście chciałem tylko zrobić aktualizację.
Zawartość /etc/apt/sources.list podczas aktualizacji (przed aktualizacją było inaczej):
Treść pliku /etc/apt/apt.conf:
Dodatek do / etc / hosts:
Teraz działanie
apt-get update ; apt-get upgrade
jako root działało dobrze.Jak wspomniano w innych odpowiedziach, użyj, uruchom polecenie hosta w domenie, aby uzyskać poprawny adres IP do wstawienia do pliku hosts.
Przykład:
Pomyślnie zaktualizowano system do
Debian GNU/Linux testing (jessie)
. Możesz nie chcieć uruchamiać z testowymi repozytoriami, a następnie po prostu usunąć je ze źródeł. Repozytoria testowe zawierają nowsze aktualizacje kilku pakietów, ale nie są uważane za stabilne.źródło
hosts
pliku jest wysoce nieoptymalnym rozwiązaniem.Znalazłem o wiele lepszy sposób na zrobienie tego. Otwórz
sources.list
plik i zanotuj nazwy hostów repozytoriów. Uzyskaj ich adresy IPv4 , a następnie edytuj jesources.list
przy użyciu adresów IPv4, a nie nazw hostów. Apt-get powinien teraz kontaktować się z repozytoriami pod podanymi adresami IPv4, omijając IPv6.Wadą jest to, że repozytoria zwykle mają skonfigurowane równoważenie obciążenia i / lub geolokalizację IP, które ta metoda oczywiście omija. Nie powinno to jednak mieć znaczenia, jeśli robi to tylko kilka osób. Jeśli okaże się, że jeden serwer lustrzany działa wolno, spróbuj uzyskać inny adres IP repo (na przykład za pomocą usługi ping online) i użyj go.
źródło
Możesz spróbować, jeśli działa dla Ciebie
-> zastąp nazwę interfejsu
źródło