可以 ping 但无法在具有桥接接口的主机上进行 wget

可以 ping 但无法在具有桥接接口的主机上进行 wget

这让我发疯了,因为我花了两天时间试图解决这个问题。

我有一台装有 KVM 和 libvirt 的 Ubuntu Server 14.04.2 LTS。我有两个客户虚拟机:

  1. pfSense-2.2:virtio 网络接口,WAN1 - 电缆,WAN2:aDSL 和 LAN IP:192.168.2.13
  2. Ubuntu Server 14.10:ne2000 网络接口,IP:192.168.2.10(主机名:deathstar)

主机有以下桥接接口:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#auto eth0
#iface eth0 inet manual

auto br0
iface br0 inet static
        address 192.168.2.10
        netmask 255.255.255.0
        network 192.168.2.0
        broadcast 192.168.2.255
        gateway 192.168.2.13
        bridge_ports eth0
        bridge_stp on
        bridge_fd 0
        bridge_maxwait 0
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 192.168.2.13
        dns-search localdomain

auto br1
iface br1 inet manual
        bridge_ports eth1
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

auto br2
iface br2 inet manual
        bridge_ports eth2
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

带有 virtio 桥接接口的 pfSense 客户机运行正常,但带有 Ubuntu 的第二个客户机只能通过 ne2000 接口正常运行,如果我使用 virtio 桥接接口,它可以完美 ping 和解析 DNS,但无法使用 wget 或 apt-get 访问任何站点。

没什么大不了的,我可以用 ne2000 忍受它,但是主机现在无法访问互联网,与以前相同的症状,我可以 ping 并解析 DNS,但无法使用 wget 或 apt-get 访问。

有趣的是,直到大约 10 天前,它都运行正常,可能是某些系统更新“破坏”了主机中的某些东西,现在它无法更新或访问任何网站。

我多次搜索不同的论坛,尝试禁用 IPv6(很多人报告说这解决了问题),打开和关闭 bridge_stp,在 /etc/network/interfaces 文件中包括和排除“auto eth0”等等,但都不起作用,我被这个困住了。

正如您所看到的,DNS和ping工作正常...

pablot@deathstar:~$ ping google.com
PING google.com (173.194.42.14) 56(84) bytes of data.
64 bytes from eze03s05-in-f14.1e100.net (173.194.42.14): icmp_seq=1 ttl=51 time=26.0 ms
64 bytes from eze03s05-in-f14.1e100.net (173.194.42.14): icmp_seq=2 ttl=51 time=27.4 ms
64 bytes from eze03s05-in-f14.1e100.net (173.194.42.14): icmp_seq=3 ttl=51 time=24.9 ms
64 bytes from eze03s05-in-f14.1e100.net (173.194.42.14): icmp_seq=4 ttl=51 time=24.7 ms
^C
--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 24.732/25.798/27.421/1.071 ms
pablot@deathstar:~$

但其他一切都失败了......

pablot@deathstar:~$ sudo apt-get update
0% [Connecting to ar.archive.ubuntu.com (200.236.31.4)]

事情就这样结束了……

Err http://ar.archive.ubuntu.com trusty InRelease

Err http://ar.archive.ubuntu.com trusty-updates InRelease

Err http://ar.archive.ubuntu.com trusty Release.gpg
  Unable to connect to ar.archive.ubuntu.com:http:
Err http://ar.archive.ubuntu.com trusty-updates Release.gpg
  Unable to connect to ar.archive.ubuntu.com:http:
Reading package lists... Done
W: Failed to fetch http://ar.archive.ubuntu.com/ubuntu/dists/trusty/InRelease

W: Failed to fetch http://ar.archive.ubuntu.com/ubuntu/dists/trusty-updates/InRelease

W: Failed to fetch http://ar.archive.ubuntu.com/ubuntu/dists/trusty/Release.gpg  Unable to connect to ar.archive.ubuntu.com:http:

W: Failed to fetch http://ar.archive.ubuntu.com/ubuntu/dists/trusty-updates/Release.gpg  Unable to connect to ar.archive.ubuntu.com:http:

W: Some index files failed to download. They have been ignored, or old ones used instead.

这就是我用 wget 得到的结果...

pablot@deathstar:~$ wget google.com
--2015-03-17 10:13:20--  http://google.com/
Resolving google.com (google.com)... 173.194.42.0, 173.194.42.1, 173.194.42.9, ...
Connecting to google.com (google.com)|173.194.42.0|:80... failed: Connection timed out.
Connecting to google.com (google.com)|173.194.42.1|:80... failed: Connection timed out.
Connecting to google.com (google.com)|173.194.42.9|:80... failed: Connection timed out.
Connecting to google.com (google.com)|173.194.42.3|:80... failed: Connection timed out.
Connecting to google.com (google.com)|173.194.42.7|:80... failed: Connection timed out.
Connecting to google.com (google.com)|173.194.42.14|:80... failed: Connection timed out.
Connecting to google.com (google.com)|173.194.42.4|:80... failed: Connection timed out.
Connecting to google.com (google.com)|173.194.42.2|:80... failed: Connection timed out.
Connecting to google.com (google.com)|173.194.42.8|:80...

我用全新安装的 pfSense 替换了防火墙(以防万一我在不知情的情况下阻止了自己),结果相同。我还在笔记本上的 Virtualbox 上安装了相同的 Ubuntu 版本,并尝试使用桥接和非桥接接口,在两种情况下都通过相同的防火墙完美运行。

所以一切都让我认为我的主机配置错误,这也只影响带有桥接接口的 ubuntu 安装,但找不到它。

任何帮助将不胜感激。

提前致谢,Pablo

答案1

无论我在 kvm 服务器上使用标准 linux 桥接器还是开放虚拟桥接器,我都遇到了同样的问题。最后我在 pfSense 网页的 VirtIO 驱动程序支持下找到了答案:

禁用硬件校验和卸载 鉴于 FreeBSD 中 VirtIO 网络驱动程序的当前状态(2014-06-11),需要选中“系统”>“高级”下的“网络”选项卡下的“禁用硬件校验和卸载”框,并在保存设置后手动重新启动 pfSense,即使没有提示指示这样做,也能够直接从 VM 主机访问受 pfSense 保护的系统(至少是其他 VM 客户机,也可能是其他系统)。该问题似乎与https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=165059

这对我有用。

答案2

我遇到了同样的问题,我的设置如下:联想笔记本电脑运行原生 Ubuntu。我手动创建了一个使用 ax88179_178a 驱动程序的 USB-Enet 接口桥。我使用桥是为了模拟连接到桥“另一侧”的所有设备的不良网络条件。

我能够通过网桥 ping 和 ssh 到设备,但 wget 不起作用。

我尝试按照说明禁用 IPv6这里没成功。我也尝试过调整 mtu 设置,但没成功。

最终对我有用的方法是使用笔记本电脑上的本机以太网端口作为桥接接口之一,并使用加密狗作为桥接中的第二个端口。一旦我这样做了,一切都正常了。所以对我来说,问题是我使用的接口驱动程序中的一个错误。

相关内容