Aktualizacja apt-get utknęła: Łączenie z security.ubuntu.com

79

Kiedy uruchamiam apt-get updatena moim komputerze, blokuje się na:

100% [Connecting to security.ubuntu.com (2001:67c:1562::15)] [Connecting to archive.canonical.com (2001:67c:1360:8c01::16)]

Nie wprowadziłem żadnych ostatnich zmian w systemie i korzystam z mojej sieci domowej, która wcześniej działała dobrze.

Nie potrafię wyjaśnić, dlaczego zmieniło się na IPv6.
Mam ustawioną IPv6 ignoredla sieci bezprzewodowej:

wprowadź opis zdjęcia tutaj

Ouput z ip addr:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
   valid_lft forever preferred_lft forever
inet6 ::1/128 scope host 
   valid_lft forever preferred_lft forever
2: mlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 4c:0b:be:22:0a:b4 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.106/24 brd 192.168.2.255 scope global dynamic mlan0
   valid_lft 1814086sec preferred_lft 1814086sec
inet6 ::d5:b551:28db:2789:225/64 scope global temporary dynamic 
   valid_lft 604483sec preferred_lft 85483sec
inet6 ::d5:4e0b:beff:fe22:ab4/64 scope global mngtmpaddr dynamic 
   valid_lft 604779sec preferred_lft 86379sec
inet6 fe80::4e0b:beff:fe22:ab4/64 scope link 
   valid_lft forever preferred_lft forever
Pabi
źródło
Zmień adres IP na IPv4, a następnie spróbuj ponownie ..
heemayl
Dlaczego korzystasz z IPv6? Jak powiedział heemayl, zmień na IPv4, w Ustawieniach sieciowych> [Adapter]> Zaawansowane.
Wędrowiec
1
Wygląda na to, że host może wysyłać reklamy routera 0:0:0:d5::/64. Ten zakres jest wymieniony jako zarezerwowany przez IETF, więc zdecydowanie nie jest prawidłowym prefiksem do reklamowania. Jeśli te RA już się zatrzymały, może nie być możliwe ustalenie, skąd pochodzą. W takim przypadku wystarczy zrestartować interfejs sieciowy i problem zniknie. Jeśli RA nadal są wysyłane, możesz spojrzeć na przechwytywanie pakietów, aby zobaczyć, z którego MAC pochodzą.
kasperd
1
Oprócz źle skonfigurowanej łączności IPv6, innym czynnikiem przyczyniającym się do problemu jest brak obsługi RFC 6555 apt-get. Postępując apt-getzgodnie z RFC 6555, nigdy nie zauważyłeś żadnego problemu.
kasperd
1
Twój lokalny router robi coś złego i daje ci nieprawidłowe adresy IPv6. Sprawdź i napraw konfigurację routera.
Michael Hampton

Odpowiedzi:

168

To zadziałało dla mnie, dzięki uprzejmości Zach Adams ( https://zach-adams.com/2015/01/apt-get-cant-connect-to-security-ubuntu-fix/ ):

Okazuje się, że jest to problem polegający na tym, że połączenie przez IPv6 na niektórych serwerach powoduje ich zablokowanie w tym momencie. Poprawka jest naprawdę prosta.

Otwórz /etc/gai.conf

Pod linią

# For sites which prefer IPv4 connections change the last line to

Usuń komentarz z następującego wiersza, usuwając #:

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

To pozwoli ci nadal używać IPv6, ale ustawia IPv4 jako priorytet, aby apt-get nie utknął.

billynoah
źródło
16
Dzięki! Ta odpowiedź jest znacznie lepsza niż tylko niewolnicze wyłączenie ipv6.
Cyrusmith,
2
Jeśli nie masz szczęścia, spróbuj: askubuntu.com/a/759540/4246
Gauthier
1
OMG, który tak bardzo pomógł!
GaTechThomas
4
Uwaga: To nadal obowiązuje w wersjach 14.04 i 16.04 LTS
Starszy Geek
1
Pracował dla mnie na Linux Mint 18.1 i 18.2. To powinno być domyślne.
mat
23

Ustawienia IPv6 dla sieci zostały zignorowane, ale wyłączenie IPv6 przez /etc/sysctl.confdziałało:

Dodaj następujące wiersze u dołu /etc/sysctl.conf:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Uruchom, sudo sysctl -paby ponownie załadować /etc/sysctl.confustawienia.

Pabi
źródło
6
To nie tak powinieneś robić. Linie te oznaczają, że po podłączeniu do sieci, która faktycznie ma IPv6, uzyskasz mniej niezawodne połączenie niż powinno. Ponadto te wiersze nie robią nic, aby naprawić pierwotną przyczynę problemu, której nawet nie zidentyfikowałeś.
kasperd
Nigdzie nie potrzebuję IPv6, więc działa dobrze.
Pabi
4
To po prostu głupie, ponieważ łączenie się z hostami w tym samym segmencie sieci ma wiele zalet w adresach lokalnych łącza IPv6 w porównaniu z IPv4.
kasperd
1
Nie mogę tego zrobić z mojego telefonu;) Po prostu zgódź się, że się nie zgadzamy.
Pabi
4
Rób co chcesz. Po prostu komentuję, aby upewnić się, że każdy, kto może spotkać ten sam problem, wie, że wprowadzenie sugerowanych zmian w sysctl.confkońcu spowoduje problemy.
kasperd
15

Lepszym rozwiązaniem jest użycie apt-get w następujący sposób zamiast edycji pliku gai.conf.

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

Jeśli chcesz, aby to trwało, po prostu dodaj alias dla „apt-get” w pliku bash.

Vinay Sheshadri
źródło
Ale czy nie tworzyłoby to połączeń, które mogłyby być IPv6 w całości IPv4?
metame
@metame o to właśnie chodzi. OP powiedział, że jego IPv6 jest wyłączony, a próba użycia go powoduje problemy.
Francesco Dondi
0

Inne rozwiązania nie pomogły ... w moim przypadku utworzyłem instancję aws ec2 Ubuntu 18.04

Auto-assign Public IP -> no pick disable

po wypróbowaniu wszystkich sugerowanych rozwiązań wzniosłem ręce i zabiłem to i utworzyłem nową instancję ec2 za pomocą

Auto-assign Public IP -> yes  Use subnet setting (Enable) 

i działało dobrze ... apt-get update && apt-get upgradesą teraz szczęśliwi

Scott Stensland
źródło