Обновление apt-get застряло: подключение к security.ubuntu.com


79

Когда я бегу apt-get updateна своей машине, он застревает в:

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

Я не вносил последние изменения в систему и использую свою домашнюю сеть, которая ранее работала нормально.

Я не могу объяснить, почему он переключился на использование IPv6.
У меня есть IPv6 ignoreдля беспроводной сети:

введите описание изображения здесь

Выход из 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

Измените IP-адресацию на IPv4, а затем повторите попытку ..
Heemayl

Почему вы используете IPv6? Как сказал Heemayl, перейдите на использование IPv4 в разделе «Параметры сети»> [Адаптер]> «Дополнительно».
Странник

1
Похоже, что у вас может быть хост, отправляющий рекламу маршрутизатора с 0:0:0:d5::/64. Этот диапазон указан как зарезервированный IETF, так что это определенно недопустимый префикс для рекламы. Если эти RA уже прекратились, может быть невозможно выяснить, откуда они пришли. В этом случае все, что вы действительно можете сделать, это перезапустить сетевой интерфейс, и проблема исчезнет. Если RA все еще отправляются, то вы можете посмотреть захват пакета, чтобы увидеть, с какого MAC они приходят.
Касперд

1
Помимо неверно настроенного подключения IPv6, еще одной причиной вашей проблемы является отсутствие поддержки RFC 6555 apt-get. Если бы вы apt-getследовали RFC 6555, вы бы никогда не заметили никаких проблем.
Касперд

1
Ваш локальный маршрутизатор делает что-то не так и выдает вам недействительные адреса IPv6. Проверьте и исправьте конфигурацию маршрутизатора.
Майкл Хэмптон

Ответы:


168

Это работает для меня, любезно предоставлено Заком Адамсом ( https://zach-adams.com/2015/01/apt-get-cant-connect-to-security-ubuntu-fix/ ):

Оказывается, это проблема, когда соединение через IPv6 на некоторых серверах приводит к их застреванию на этом этапе. Исправление действительно простое.

Откройте /etc/gai.conf

Под линией

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

Раскомментируйте следующую строку, удалив #:

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

Это позволит вам по-прежнему использовать IPv6, но устанавливает IPv4 в качестве приоритета, чтобы apt-get не зависал.


16
Спасибо! Этот ответ намного лучше, чем просто рабское отключение ipv6.
Сайрус

2
Если вам не повезло с этим, попробуйте это: askubuntu.com/a/759540/4246
Gauthier

1
Боже мой, это очень помогло!
GaTechThomas

4
Примечание: это все еще действует в версиях 14.04 и 16.04 LTS
Старейшина Гик

1
Работал для меня на Linux Mint 18.1 & 18.2. Это должно быть по умолчанию.
Мат

23

Настройки IPv6 для сети были проигнорированы, но отключение IPv6 через /etc/sysctl.confработало:

Добавьте следующие строки внизу /etc/sysctl.conf:

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

Запустите, sudo sysctl -pчтобы перезагрузить /etc/sysctl.confнастройки.


6
Это не так, как вы должны делать. Эти линии означают, что после подключения к сети, которая фактически имеет IPv6, вы получите менее надежное соединение, чем предполагалось. Кроме того, эти строки не делают ничего, чтобы устранить основную причину вашей проблемы, которую вы даже не определили.
Касперд

Мне нигде не нужен IPv6, так что это прекрасно работает.
Паби

4
Это просто глупо, потому что для подключения к узлам в одном и том же сегменте сети есть много преимуществ в локальных адресах IPv6 по сравнению с IPv4.
Касперд

1
Не могу сделать это с моего телефона;) Давайте просто согласимся, что мы не согласны.
Паби

4
Делай что хочешь. Я просто прокомментирую, чтобы все, кто сталкивался с той же проблемой, знали, что внесение предложенных изменений в sysctl.confконечном итоге вызовет проблемы.
Касперд

15

Лучше всего использовать apt-get следующим образом вместо редактирования файла gai.conf.

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

Если вы хотите сделать это постоянным, просто добавьте псевдоним для 'apt-get' в вашем файле bash.


Но разве это не создаст соединения, которые могут быть IPv6 все IPv4?
метам

@ метаме вот и весь смысл. OP сказал, что его IPv6 отключен, и попытка его использования вызывает проблемы.
Франческо Донди

0

Другие решения не помогли ... в моем случае я создал экземпляр Ubuntu 18.04 aws ec2, используя

Auto-assign Public IP -> no pick disable

попробовав все предложенные решения, я вскинул руки и убил его, создав новый экземпляр ec2, используя

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

и все работало нормально ... apt-get update && apt-get upgradeтеперь счастливы

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.