Head over heels for gadgets!
I've always had issues with using iptables on Ubuntu. Why they make it such a pain in the butt to work with iptables is beyond me. That said, if you're using Ubuntu 10.04 the normal 'iptables save' does not seem to work the way it think should. It seems to require an extra parameter for it to save correctly.
Running the following should save your chains and rules and make them available for when the system or iptables itself is restarted:
/etc/init.d/iptables save active
I am not too sure why this extra bit is needed as our Gentoo servers and even our Debian server simply allows just the save command to be used. However, I hope others find the above useful when working with iptables in Ubuntu. I am hoping the Ubuntu team fixes this (as well as the init.d scripts from the client version of Ubuntu if they haven't already). I really hope even with the introduction of the 'ufw' (Ubuntu Firewall) software they don't dumb down the functionality of iptables to where someone who knows what they're doing is no longer able to do so.