有一台专用服务器运行 Ubuntu Server 12.04.2。此服务器有 4 个可用 IP:A、B、C、D。服务器本身占用 A。
服务器现在运行两个 VirtualBox 客户机,网络类型均为“桥接适配器”。一个客户机运行 Windows Server 2003,使用 IP 地址 B。另一个客户机运行 Arch Linux (Live CD),使用 IP 地址 C。
- 在Ubuntu主机中,网络很好。我可以,
apt-get
并且下载速度也不错。 - 在 Windows 客户机中,我可以
ping www.google.com
在 cmd.exe 中访问,但无法在 IE6 中访问 www.google.com。 - 在 Arch Linux 客户机中,我可以
ping www.google.com
在 zsh 中运行,但curl -v www.google.com
不起作用。我也可以telnet www.google.com 80
,这意味着至少 80/tcp 和 53/udp 端口正在运行。(实际上,服务器上没有 iptables 防火墙。) - 在 Arch Linux 客户机中,我甚至可以
ssh
连接到另一台机器!(使用标准 22/tcp) - 在 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”时,一切都正常。curl
telnet www.google.com 80
telnet 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
因此,输入我的主机即可解决此问题。