It is a lot of work. I had to find an old PC around my home that is good enough for the job, install Linux, optimize it, tweak it, install some apps to it, configure the hardware, lock it all down and harden the Linux system down, set it up as a router, and then start creating rules and such. I'm using a custom coded program to do the work. The worst part of it all though is keeping an eye on system resources. Since I'm using a Pentium III box, it tend to run out of resources quite quickly especially if I'm making 500,000+ connections to game servers in a short amount of time (Steam lol) in a given time, so I need to keep scripts running to keep the RAM free and such.
The only issue with this setup though is if I think the router is blocking something, I have to go down to the router, open up a web browser on it and load up the site in question as that's where I deliberately leave the browsers unfiltered. It is a big pain in the butt to crack down on problems as well, and to keep Linux up to date (updates tend to ruin much of the work, but I do keep Linux up to date).