我有一台运行 LXC 容器的 Ubuntu 14.04.1 LTS 服务器。容器也运行 Ubuntu 14.04.1。主机的网络配置非常标准,静态 IP、ISP 的 DNS(IP1/IP2)以及谷歌的:
$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers <IP1> <IP2> 8.8.8.8
系统上未使用防火墙。
现在,在容器内部,apt-get 会间歇性地工作。重新启动主机并启动容器后,它工作正常。但过了“一段时间”(我没有测量过)后,apt-get 开始失败:
# apt-get update
Ign http://security.ubuntu.com trusty-security InRelease
Ign http://security.ubuntu.com trusty-security Release.gpg
Ign http://security.ubuntu.com trusty-security Release
Ign http://archive.ubuntu.com trusty InRelease
<...>
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-updates/universe/binary-i386/Packages 404 Not Found [IP: 91.189.92.201 80]
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-updates/multiverse/binary-i386/Packages 404 Not Found [IP: 91.189.92.201 80]
E: Some index files failed to download. They have been ignored, or old ones used instead.
源列表是默认的。尝试替换它们,但没有任何变化。这发生在所有容器上。重新启动时没有任何变化。奇怪的是它们可以 ping IP 和主机(因此 DNS 可能正常工作。尝试 ping google.com、ubuntu.com、archive.ubuntu.com、security.ubuntu.com,总是成功)。
容器网络配置:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
关于 LXC 配置,我为所有容器使用 ubuntu 的默认设置、veth 设备和 lxcbr0 桥。我对 LXC 还很陌生,所以如果我在某个地方搞砸了,请多多包涵...
任何想法都是有帮助的。如果需要更多信息,请告诉我,我会更新描述 :)
谢谢你的时间
附言:我已经尝试过标准的“apt-get 失败”补救措施,例如这个但没有成功。
答案1
经过一番 Google 搜索(因为我现在真的很好奇你的问题!),我发现这个帖子gateway
,描述了一个类似的问题,其中可接受的解决方案是从主机配置中删除或注释掉相应行,而将客户机配置保留在 DHCP 上。
另外,请验证您的子网设置,因为这之前让我搞乱了(在 Windows 上,请注意,但仍然......)