Обновление 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.