połączenie z archive.ubuntu.com trwa zbyt długo

50

Mam serwer Ubuntu 11.10, który właśnie zainstalowałem. Teraz, jeśli spróbuję coś zrobić apt-get, spróbuje się połączyć archive.ubuntu.com.. Pozostanie w [Connecting to archive.ubuntu.com (2001:67c:1360:8c01::1a)]fazie przez około 2 minuty, po czym faktycznie zacznie się komunikować i pobierać rzeczy ...

W końcu zawsze się łączy, ale [Connecting to archive.ubuntu.com (2001:67c:1360:8c01::1a)]za każdym razem czeka na fazę przez około 2 minuty!

Nie miałem tego problemu wcześniej na Ubuntu 11.10, zaraz po ponownej instalacji systemu operacyjnego.

Wszelkie pomysły na temat problemu?

Ahmad
źródło
Zastanawiam się, czy ma to związek z faktem, że używasz IPv6. Czy jesteś w sieci IPv6?
Thomas Ward
Nie, nie sądzę. Nie skonfigurowałem żadnej takiej rzeczy ..
Ahmad
Adresy IP w dołączonych wiadomościach to IPv6. To sugeruje, że używa IPv6, a jeśli się nie mylę, nie ma tylu serwerów IPv6 dla archiwum.
Thomas Ward
1
@Ahmad Ponieważ rozwiązałeś problem i napisałeś rozwiązanie, prosimy o opublikowanie go jako odpowiedzi (a następnie możesz go edytować również ze swojego pytania). Pamiętaj, że nie musisz czekać, aby to zrobić; tylko użytkownicy o reputacji mniejszej niż 100 muszą czekać przed udzieleniem odpowiedzi na własne pytania. Możesz nawet oznaczyć swoją odpowiedź jako zaakceptowaną (choć musisz na to poczekać dwa dni po opublikowaniu pytania).
Eliah Kagan
Gotowe .. Teraz muszę tylko czekać 22 godziny, aby móc zaakceptować własną odpowiedź :)
Ahmad

Odpowiedzi:

87

Rozwiązałem to 12.10, edytując /etc/gai.conf i usuwając komentarz z linii:

#
#    For sites which prefer IPv4 connections change the last line to
#
precedence ::ffff:0:0/96 100

Pozwala to utrzymać włączony IPv6, ale ustawia kolejność pierwszeństwa przed IPv4 zamiast IPv6.

UberSteve
źródło
13
Nie powinienem pisać ty jako komentarz, ale myślę, że należy powiedzieć, że ty
jesteś
1
Oto odpowiedź
kbuilds
3
Potwierdzono również na Ubuntu 14.04 / ElementaryOS freya!
oikonomopo
2
doskonały! działał urok!
John
2
Nadal obowiązuje dla Xubuntu 15.04
Dag
16

Rozwiązanie:

Zrozumiałem problem. Musiałem wyłączyć łączność IPv6, jak zauważył Lord Of Time.

Uruchomienie następującego polecenia w terminalu informuje, czy protokół IPv6 jest włączony, czy nie:

cat /proc/sys/net/ipv6/conf/all/disable_ipv6

0oznacza jego włączone, a jednocześnie 1wyłączone.

Aby wyłączyć IPv6 z poziomu terminala, wprowadź następujące dane:

echo "#disable ipv6" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.all.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.lo.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Ponownie uruchom pierwsze polecenie i powinno być 1teraz.

Ahmad
źródło
Nie mam tego pliku ...
amadib,
Wyłączenie IPv6 nie jest rozwiązaniem. To obejście. Potrzebujemy IPv6 i wyłączenie go zdecydowanie nie jest zalecane. Prawidłowe rozwiązania albo zmuszają APT do używania tylko ipv4, albo ustawiają priorytet, jak pokazano w najlepszym rozwiązaniu.
mniess
7

Jeśli chcesz tylko zmodyfikować apt-get, możesz wymusić IPv4 za pomocą:

apt-get -o Acquire::ForceIPv4=true update

Aby ustawienie było trwałe, utwórz plik 99force-ipv4 w /etc/apt/apt.conf.d/.

sudoedit /etc/apt/apt.conf.d/99force-ipv4

Umieść w nim następującą zawartość:

Acquire::ForceIPv4 "true";

Zapisz plik i gotowe. Jeśli zamiast tego chcesz wymusić IPv6, zmień 4 na 6 w nazwie pliku i ustawieniach. Aby wybrać jedną z nich, przetestuj szybką metodą i sprawdź, która działa lepiej.

Łukasz
źródło