I'm using a Belkin Router at home which my server is behind the only problem with it is it doesnt allow (forgive me) I think its Loopback or something like that I saw on a webpage.

So everyone can view my sites great from the internet but if the router picks up any traffic from inside my home network (for instance if I type www.mydomain.co.uk) I just get the control panel for my router.

I can still view the default server by typing the local IP of the server but I also have virtual servers running and I need a way to test them.

Does anyone know how I can view sites on my virtual servers internally?

It is the hosts file on the machine you are trying to view the site from. So if your webserver is the Linux box and you are trying to test it/view it from your Windows machine you would want to edit the hosts file on your Windows machine.

When your browser tries to connect it is still going to send the URL you type in the browser to your server, only when it tries to resolve the name of the site it will look it up in your hosts file and send the request to the internal IP of the webserver. The webserver will see the incoming name from the browser request and your virtual hosts will work fine.

I use this all the time when testing sites in a similar manner to what it sounds like you are trying to do.

Now, I have assumed one thing. That your webserver actually has an internal IP address and that your router in question forwards a public address back to your internal web server. Perhaps I assumed too much.

Correct, I assume you have a router/firewall handling your Internet connection that is taking traffic directed to it on port 80 and forwarding it back to the Linux server on your internal LAN with an internal private address, perhaps a 192.168.x.x or 10.x.x.x address.

So if you update the hosts file on your internal machine it should point the domain name(s) in question to the 192.168.x.x or 10.x.x.x. address of the webserver.