VirtualBox 桥接适配器可以 ping 但不能 curl

VirtualBox 桥接适配器可以 ping 但不能 curl

有一台专用服务器运行 Ubuntu Server 12.04.2。此服务器有 4 个可用 IP:A、B、C、D。服务器本身占用 A。

服务器现在运行两个 VirtualBox 客户机,网络类型均为“桥接适配器”。一个客户机运行 Windows Server 2003,使用 IP 地址 B。另一个客户机运行 Arch Linux (Live CD),使用 IP 地址 C。

  1. 在Ubuntu主机中,网络很好。我可以,apt-get并且下载速度也不错。
  2. 在 Windows 客户机中,我可以ping www.google.com在 cmd.exe 中访问,但无法在 IE6 中访问 www.google.com。
  3. 在 Arch Linux 客户机中,我可以ping www.google.com在 zsh 中运行,但curl -v www.google.com不起作用。我也可以telnet www.google.com 80,这意味着至少 80/tcp 和 53/udp 端口​​正在运行。(实际上,服务器上没有 iptables 防火墙。)
  4. 在 Arch Linux 客户机中,我甚至可以ssh连接到另一台机器!(使用标准 22/tcp)
  5. 在 Arch Linux 客户机中,我尝试访问wget一些 https 站点,它卡在“正在连接到 XXX.XXX.XXX.XXX:443...已连接”。

我尝试更改--nictype1虚拟机的设置和/或在客户操作系统中设置不同的 MTU,但问题仍然存在。

谁能帮我?

附加信息:将“桥接适配器”更改为“NAT”后,客户操作系统可以curl www.google.com。一切都很好。但由于我需要公共 IP,因此我必须对客户操作系统使用“桥接适配器”。

附加信息 2:在具有“桥接适配器”的客户操作系统中,我可以ssh使用 22/tcp 访问其他主机,可以dig使用 53/udp 访问某些域,但无法使用 80/tcp 或 443/tcp 访问wget或访问网站,但或可以正常使用。使用“NAT”时,一切都正常。curltelnet www.google.com 80telnet www.google.com 443

答案1

嗯,我自己解决了这个问题。

我偶然发现可以curl google.com但不能curl www.google.com,而且由于第一个比较小,我认为这是 MTU 或其他问题,导致客户操作系统无法传输大段数据。

在谷歌搜索“虚拟桥接 mtu”后,我发现了这篇文章:https://forums.virtualbox.org/viewtopic.php?f=7&t=30632&start=0

然后我尝试ethtool -K eth2 sg off rx off tx off tso off在 Ubuntu Server 上(eth2 是桥接接口),然后...它运行起来非常好!立即

答案2

我也遇到了同样的问题。

虚拟机中桥接网卡的默认 MTU 是 1500。但是当我使用带有 DF 标志的 ping 来检测实际 MTU 时,结果却是 1498。

sudo ifconfig eth0 mtu 1498因此,输入我的主机即可解决此问题。

相关内容