I've set up Ubuntu in a VM (VirtualBox) and on it run an Apache2 server. On the guest OS (Ubuntu 11.04) it works fine: I go http://localhost in a browser on the guest OS and get the "It works!" message.
The guest OS's network adaptor is configured as 'bridge' so that it gets a 'normal' IP address - 192.168.1.X rather than 10.0.5.1 or some such. The router's DHCP server is set up to map a fixed IP address to the guest OS's MAC. If on the host system I go to http://192.168.1.99 (the guest OS's IP) everything works fine.
Next, I configure the router's NAT to forward port 80 to 192.168.1.99 (the guest OS). From the host OS I go to http://18.104.22.168 (the router's public IP) and I promptly get "It works!" from the http server.
So far, so good. But if I try http://123.456.6.7 from outside my LAN I don't get through. I disabled the firewalls on both the host and guest OS-es, but that didn't solve the problem.
And now I'm confused and stuck as to how to go about this, so I kindly ask for your ideas and pointers.