Linux is useful for setting up firewalls because it is easy and free. However I have a few tips for anyone who is going to make one (I've set up a couple).

http://www.linuxdoc.org
has great howtos, check out ipchains, ipmasq, and firewall.

http://juanjox.kernelnotes.org/
check this site out, you need to read it to figure out ip port forwarding in > 2.2.X kernels.

and for VPNs, i'd recomment poptop.

I suggest using ipmasq for a couple of reasons, it provides good protection and cuts down the # of IPs you need. A also think using DMZs is a good idea if your requirements warrant one, and your resources allow one.

Good Luck if tou're trying to set one up. Make sure if you recompile the kernel, to include all the networking stuff you may ever want so you dont have to recompile again later...