问题描述
当我在我的机器上运行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
最佳解决办法
这对我有用,Zach Adams(https://zach-adams.com/2015/01/apt-get-cant-connect-to-security-ubuntu-fix/)提供:
Turns out this is an issue where connecting over IPv6 on some servers causes them to get stuck at this point. The fix is really simple.
打开/etc/gai.conf
在线下
# For sites which prefer IPv4 connections change the last line to
通过删除#
取消注释以下行:
# precedence ::ffff:0:0/96 100
This will allow you to still use IPv6 but sets IPv4 as the precedence so that apt-get won’t get stuck.
次佳解决办法
忽略了网络的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’的别名。