I have a home server running ESXi v5.0.0 with a VM guest OS (linux) up and running.

I have apache 2.x installed and serving to my machine (i.e I can access the default apache page when going to http://localhost)

I can also access it via my internal ip 192.168.1.X (which was made static to my router) The ESXi host has also has an ip (also static) as well, but of course different then the VM. In my router I'm forwarding port 80 to the GUEST OS internal IP, but this doesn't seem to allow outside access to the webserver on the guest os.

I've verified the networking in the ESXi configuration has the vm on the VM Netowrk and connecte to the host's NIC. (The guest os can access the external world).

I've verified I have the right external IP address (and also that I can access the Host externally [via temporarily forward a port to the host port])

Note: there is only 1 NIC card on the host.

Bottom line, how do I get the guest os to be able to accept traffic from the outside world?

This is my first experiment with ESXi so let me know if there's any futher relevant information I can give to help solve this issue.

  • Have you read and followed the VMWare ESXi network configuration instructions? (Specifically the troubleshooting section -- tell us the results :) – voretaq7 Jan 17 '12 at 21:11
  • Questions about Home servers are Off-Topic. Please see the FAQ. – Chris S Jan 17 '12 at 21:12
  • 1
    just remove the "home" part from your post and it's still very relevant to sys admins. – Safado Jan 17 '12 at 21:19
  • @Safado The fact that he's a home user implies a casual level of familiarity with virtualization, networking, and troubleshooting making the question less relevant to Professional System Administrators. – Chris S Jan 17 '12 at 21:21
  • When you are trying to connect using your external IP, are you trying to connect from an external host? Most cheap routers are not going to do hairpin-NAT. – Zoredache Jan 17 '12 at 21:32

One step I would take is to see if the packets are getting to your guest at all. On your linux host, run

tcpdump -i eth0 tcp dst port 80

substituting "eth0" for whatever your interface is called. With that running, try and access your page (I would suggest using an "outside of your network" host like a cellphone using the carriers internet and not your wifi). When you request the page, you should see the packets being spit out by tcpdump if your guest OS is receiving them. If it is, try checking the firewall or your webserver configuration. If you don't see any output from tcpdump, then I'd start looking at router or the Host.

  • Thank you! tcpdump indicated that traffic was indeed reaching the guest OS--just need to open the firewall. – OnResolve Jan 17 '12 at 21:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.