apt-get update 无法连接

apt-get update 无法连接

我运行专用的 ubuntu 10.04 服务器。

我使用 kvm/libvirt/virsh 来运行同样是 ubuntu 10.04 的虚拟机。

我桥接了网络(2 个 IP 中的 1 个通过 NAT 路由到 LAN,我的 VM(192.168.1.111)在那里接收它。

我可以通过 ssh 从虚拟机本地连接到虚拟机,我可以 ping 我网络之外的任何站点。

我使用 iptables 路由了端口 80(和其他端口),并且可以从外部连接到虚拟机上的 apache。

然而,apt 根本不起作用,这让我很难受,因为我无法安装任何东西......

$ apt-get update

导致一系列错误,如下:

W: Failed to fetch http://de.archive.ubuntu.com/ubuntu/dists/lucid-backports/multiverse/binary-amd64/Packages.gz  Unable to connect to de.archive.ubuntu.com:http: [IP: 141.30.13.30 80]

我可以从终端 ping 域和 IP,没有任何问题。

我可以毫无问题地解析域名。

我尝试了在网上找到的所有 /etc/apt/sources.list 变体。一个在我的专用机器上运行的列表,一个默认列表,几个手工编译的列表。结果总是一样的:无法连接

我认为这是某种路由问题,但我真的很困惑,因为我似乎可以从虚拟机获得完全的网络访问权限。由于未安装软件包,我无法从虚拟机终端执行 wget 或 ftp(并且我无法编译它们,因为没有安装 gcc - 我想使用 apt 来完成所有这些操作 ;) )。哦,aptitude 当然是一样的......

帮助!

PS这是我的 iptables 设置:

iptables -t nat -L -v
Chain PREROUTING (policy ACCEPT 86 packets, 14254 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DNAT       tcp  --  any    any     anywhere             anywhere            tcp dpt:https to:192.168.1.111:443
    0     0 DNAT       tcp  --  any    any     anywhere             anywhere            tcp dpt:ftp to:192.168.1.111:21
   13   780 DNAT       tcp  --  any    any     anywhere             anywhere            tcp dpt:www to:192.168.1.111:80

Chain POSTROUTING (policy ACCEPT 31 packets, 2236 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 MASQUERADE  tcp  --  any    any     192.168.1.0/24      !192.168.1.0/24      masq ports: 1024-65535
    1    76 MASQUERADE  udp  --  any    any     192.168.1.0/24      !192.168.1.0/24      masq ports: 1024-65535
    1    84 MASQUERADE  all  --  any    any     192.168.1.0/24      !192.168.1.0/24

iptables -L -v
Chain INPUT (policy ACCEPT 1699 packets, 354K bytes)
 pkts bytes target     prot opt in     out     source               destination
   18  1179 ACCEPT     udp  --  virbr0 any     anywhere             anywhere            udp dpt:domain
    0     0 ACCEPT     tcp  --  virbr0 any     anywhere             anywhere            tcp dpt:domain
    2   656 ACCEPT     udp  --  virbr0 any     anywhere             anywhere            udp dpt:bootps
    0     0 ACCEPT     tcp  --  virbr0 any     anywhere             anywhere            tcp dpt:bootps

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
 2448 3146K ACCEPT     all  --  any    any     anywhere             192.168.1.0/24      state NEW,RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  any    virbr0  anywhere             192.168.1.0/24      state RELATED,ESTABLISHED
 1448 79657 ACCEPT     all  --  virbr0 any     192.168.1.0/24       anywhere
    0     0 ACCEPT     all  --  virbr0 virbr0  anywhere             anywhere
    0     0 REJECT     all  --  any    virbr0  anywhere             anywhere            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  virbr0 any     anywhere             anywhere            reject-with icmp-port-unreachable

@g-巴赫

好的,下面是过滤规则(iptables -L -v -t filter)。

关于架构:主机有 2 个 ip 映射到 eth0 和 eth1。eth1 是 libvirt 的桥接器。并且应该路由/屏蔽到不同的虚拟机(通常我们不会为虚拟机打开重叠的端口 - 至少不会低于 1024)。

经过一番尝试后,我可以更好地说明问题:

这是防火墙 (iptables) 规则。我显然不知道如何设置 iptables(以前从未这样做过)。当我疯狂地摆弄它们时,我发现有些东西可以工作,有些则不行(与 ubuntu 服务器的连接可以工作,传入连接不再工作,等等)。

因此,您是对的,网桥等都没问题。关于从虚拟机到外部的 ping 和连接:它无法使用 wget 和 ssh/telnet。有一个初始连接,但是我没有发送任何数据(我通过路由了 20、21 和 22)。还有 - 例如,我可以在虚拟机中安装 apache 和 wordpress 并从外部连接到它,但是 wordpress 无法建立 ftp 连接来获取更新等。

iptables -L -v -t 过滤器

Chain INPUT (policy ACCEPT 19574 packets, 7015K bytes)
 pkts bytes target     prot opt in     out     source               destination
   27  1757 ACCEPT     udp  --  virbr0 any     anywhere             anywhere            udp dpt:domain
    0     0 ACCEPT     tcp  --  virbr0 any     anywhere             anywhere            tcp dpt:domain
   43 14104 ACCEPT     udp  --  virbr0 any     anywhere             anywhere            udp dpt:bootps
    0     0 ACCEPT     tcp  --  virbr0 any     anywhere             anywhere            tcp dpt:bootps

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
 1850  119K ACCEPT     all  --  any    any     anywhere             192.168.1.0/24      state NEW,RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  any    virbr0  anywhere             192.168.1.0/24      state RELATED,ESTABLISHED
 1538  308K ACCEPT     all  --  virbr0 any     192.168.1.0/24       anywhere
    0     0 ACCEPT     all  --  virbr0 virbr0  anywhere             anywhere
    0     0 REJECT     all  --  any    virbr0  anywhere             anywhere            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  virbr0 any     anywhere             anywhere            reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT 5787 packets, 635K bytes)
 pkts bytes target     prot opt in     out     source               destination

谢谢你的努力!

答案1

由于您可以从虚拟机 ping 站点,因此路由不可能是问题所在 - 至少我看不出它怎么会是问题所在。您能否发布过滤表的 iptables?也许在通过特定端口转发传出的新连接时存在问题。

只是为了确保我正确理解了您使用的拓扑:您有一个具有两个 IP 的物理 Ubuntu 10.04 服务器,在该服务器上,您运行一个具有一个接口的 VM,该接口桥接到服务器的一个接口?我想我在这里弄错了,与您的描述不太相符...

另外,是否故意将 INPUT 和 OUTPUT 的策略设置为 ACCEPT,并且另外还有一堆规则也跳转到 ACCEPT?我不明白这会如何影响您的问题,我只是很好奇 :P

相关内容