VirtualBox bridged adapter can ping but can't curl

There is a dedicated server running Ubuntu Server 12.04.2. There are 4 useable IPs for this server: A, B, C, D. The server itself takes A.

The server is now running two VirtualBox guests, both with "Bridged adapter" network type. One guest is running Windows Server 2003, using IP address B. Another one is running Arch Linux (Live CD), using IP address C.

  1. In the Ubuntu host, the network is fine. I can apt-get and the downloading speed is good.
  2. In Windows guest, I can ping www.google.com in cmd.exe, but I cannot visit www.google.com in IE6.
  3. In Arch Linux guest, I can ping www.google.com in zsh, but curl -v www.google.com does not work. I can also telnet www.google.com 80, which means at least 80/tcp and 53/udp ports are working. (There is no iptables firewall on the server, actually.)
  4. In Arch Linux guest, I can even ssh to another machine! (using standard 22/tcp )
  5. In Arch Linux guest, I try to wget some https site, it stuck at "Connecting to XXX.XXX.XXX.XXX:443... connected".

I've tried changing --nictype1 setting for the VM and/or setting different MTUs in the guest OS, but the problem continues.

Can anyone help me?

Addtional information: When changing "Bridged adapter" to "NAT", the guest OS can curl www.google.com. Everything is fine. But since I need public IP, I have to use "Bridged adapter" for guest OS.

Addtional informationi 2: In guest OS with "Bridged adapter", I can ssh other host using 22/tcp, I can dig some domain using 53/udp, but I cannot wget or curl websites using 80/tcp or 443/tcp, but telnet www.google.com 80 or telnet www.google.com 443 is fine. When using "NAT" , everything is fine.


Well, I figured out this by myself.

I by accident found that I can curl google.com but cannot curl www.google.com and since the first one is rather smaller, I think this is a problem with MTU or something, causing the guest OS being unable to transfer large segment of data.

After googling "virtual bridged mtu" I found this post: https://forums.virtualbox.org/viewtopic.php?f=7&t=30632&start=0

Then I tried ethtool -K eth2 sg off rx off tx off tso off in the Ubuntu Server (eth2 is the bridged interface), and... it works like a charm! Instantly