or if u are into linux then u can look at
ipcop
its free, and the whole installation/setting up process gives u fair bit of knowledge on the whole !
<edit>
u dont have to be a linux guru, basic knowledge is fine. i'm not a 24/7 linux user, but i still managed to get IPCop running. there's quite a bit of support in forums and mailing lists all around.
i'd even say that someone without any linux knowledge could get IPCop up and running within no time. the 'installation' and 'admin' manuals are quite good and sufficient.
</edit>