apt-get update stuck:连接到security.ubuntu.com

当我在我的机器上运行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:  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:  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 

这对我有用,Zach Adams提供( https://zach-adams.com/2015/01/apt-get-cant-connect-to-security-ubuntu-fix/ ):

事实certificate,这是一个在某些服务器上通过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不会卡住。

忽略了网络的IPv6设置,但通过/etc/sysctl.conf禁用IPv6工作:

/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设置。

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

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

如果你想使这个持久化只是在你的bash文件中添加’apt-get’的别名。