I'm looking at moving away from using my DIR-825 as a gateway and moving into a Linux box to do it all for me. I've found IPCop, but I'm looking for something with a little more power.
My main goal is basically to be able to point different external domain names to different internal servers.
backup.example.com - 192.168.0.5
home.example.com - 192.168.0.1
I host my DNS on my own dedicated server (windows), so I don't know much about doing the gateway thing in my home (my hosting provider does it all for me).
Do any of you know of any free Linux Distros that can accomplish what I'm looking for?
It's not Linux, it's FreeBSD, but we swear by pfSense at our work. It won't do hostname-based forwarding though. I haven't seen any gateways except for ISA that support this (and ISA is far, far from FOSS), so you will need multiple external IP addresses to achieve what you want (this will be the same regardless of which gateway you choose though, unless you do a reverse proxy for HTTP requests).
you can try untangle http://untangle.com
I believe you can also do this with Apache name based virtual hosts on a Linux server and then a redirect page for each one to an Apache proxy name that will get to the internal host. Kind of a complicated rube-goldberg way of doing it, but meets your specs for name based forwarding.
Your example has different IP addresses. If these are unique external IP addresses that need to be mapped, instead of name based ones, things are much easier. You could use SmoothWall to do it easily with unique IP's.