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.
- In the Ubuntu host, the network is fine. I can
apt-get
and the downloading speed is good. - In Windows guest, I can
ping www.google.com
in cmd.exe, but I cannot visit www.google.com in IE6. - In Arch Linux guest, I can
ping www.google.com
in zsh, butcurl -v www.google.com
does not work. I can alsotelnet 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.) - In Arch Linux guest, I can even
ssh
to another machine! (using standard 22/tcp ) - 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