I initially tried using znc (which worked well), but noticed the version on my Ubuntu Hardy box was old and had some security issues which hadn’t been addressed. A colleague suggested using irssi’s proxy which I have since done, and so far it’s working well (though no back log like znc has). In irssi, I had to:
/network add freenode /server add -auto -network freenode irc.freenode.net 6667
I then configured the proxy itself:
/load proxy /set irssiproxy_password <password> /set irssiproxy_ports freenode=<port>
(replacing <password> and <port> appropriately)
I then connected to that network and joined my channels:
/server irc.freenode.net /join <#channel>
Finally, I saved the irssi configuration:
/save
Using Colloquy, I then set up a new connection pointing to this server and using the password and port specified. Colloquy automatically opened up the channels I was in in irssi which confirmed that the proxy was working correctly.