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。
ignore将无线网络的IPv6设置为:

在此处输入图片说明

的输出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,2015年

为什么要使用IPv6?就像heemayl所说,在网络设置> [适配器]>高级下更改为使用IPv4。
TheWanderer

1
看来您可能有一台主机通过发送路由器广告0:0:0:d5::/64。该范围已被IETF保留,因此绝对不是有效的广告前缀。如果这些RA已经停止,则可能无法找出它们的来源。在那种情况下,您真正​​能做的就是重启网络接口,问题就消失了。如果仍在发送RA,则可以查看数据包捕获以查看它们来自哪个MAC。
卡巴斯德(Kasperd),2015年

1
除了错误配置的IPv6连接之外,导致您的问题的另一个原因是缺少RFC 6555支持apt-get。如果apt-get遵循RFC 6555,您将永远不会注意到任何问题。
卡巴斯德(Kasperd)

1
您的本地路由器做错了事,并为您提供了无效的IPv6地址。检查并修复路由器的配置。
迈克尔·汉普顿

Answers:


168

这对我有用,由Zach Adams提供(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要好得多。
Cyrusmith '16

2
如果您对此没有运气,请尝试以下方法:askubuntu.com/a/759540/4246
Gauthier

1
OMG帮了大忙!
GaTechThomas

4
注意:这在14.04和16.04 LTS版本上仍然有效
Elder Geek,

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的网络,您将获得比您预期的可靠的连接。此外,这些行也无法解决问题的根本原因,而您甚至还没有发现。
卡巴斯德(Kasperd)

我在任何地方都不需要IPv6,因此可以正常工作。
巴比

4
这很愚蠢,因为与IPv4相比,要连接到同一网段上的主机,IPv6链路本地地址具有多个优点。
卡巴斯德(Kasperd)

1
无法通过手机执行此操作;)让我们同意我们不同意。
2015年

4
做你想做的。我只是发表评论以确保可能遇到相同问题的任何其他人都知道,对建议的更改进行更改sysctl.conf最终会导致问题。
卡巴斯德(Kasperd)

15

更好的方法是使用apt-get而不是编辑gai.conf文件。

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

如果要使其持久化,只需在bash文件中为'apt-get'添加一个别名。


但这是否会使所有IPv4的连接都可以成为IPv6?
metame '17

@metame就是重点。OP说他的IPv6被禁用,尝试使用它会引起问题。
Francesco Dondi

0

其他解决方案没有帮助...就我而言,我使用以下方法创建了一个AWS EC2实例Ubuntu 18.04

Auto-assign Public IP -> no pick disable

在尝试了所有建议的解决方案之后,我举起手杀死了它,并使用创建了一个新的ec2实例。

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

而且效果很好... apt-get update && apt-get upgrade现在很高兴

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.