IRC channel ops are notorious for kicks and bans. Many reasons are called for, others are just plain silly. #okopipi on Undernet is notorious for klining you if you so much as sneeze (one of the reasons they were banned from Freenode- heavy kline abuse). Frankly, it gets old. Luckily, however, IRC klines at the channel level are based solely on nick and IP address/host. This has it's advantages and disadvantages. Both of which will be discussed here.
To connect to the hidden service that Freenode has, you will need a few things. First, obviously, Tor. Second, privoxy, as Tor depends on it, and thirdly, Irssi. Although you can most certainly connect to the Freenode hidden service using xChat, Gaim, or other IRC clients, Irssi is the client I use, and will be discussed here. The general principles will apply to most.
I am going to assume that you have access to an OpenSSH server, to which you have access remotely. If running Ubuntu, as you should be, installing Tor is easy. If you don't have them installed, make sure to also get screen and irssi:
sudo aptitude install tor irssi screen
All necessary dependencies will be resolved, and the daemons started. Now pull up a terminal and type:
screen torify irssi
You will have the default irssi screen staring you in the face waiting for a command. Normally at this point, you would type /connect irc.freenode.net or something similar. However, irc.freenode.net is not a hidden url, and thus will not take you to the hidden service. Because Tor is looking a localhost as a proxy, Freenode will tell you that you are banned from the server. The IP that Freenode will show, as it should, will be 127.0.0.1. So, there must be another way to connect. There is, and you have to use the hidden service.
Currently, the url to the hidden service on Freenode is mejokbp2brhw4omd.onion. So, you could type that in your irssi prompt, and connect. However, that url, if you ask me, is somewhat a pain to type let alone recall. There is an easier way. First, detach the screen by typing ctrl+a d. Back in the terminal:
sudo vim /etc/tor/torrc
...and add mapaddress 10.40.40.40 mejokbp2brhw4omd.onion anywhere in the file (I added it to the very top). Restart tor.
sudo /etc/init.d/tor restart
That IP address is a little easier to recall and type, so from here, reattach your screen with screen -r and now you can type /connect 10.40.40.40 at the irssi prompt. However, this is still more of a pain than I would like. Luckily, irssi is the single most configurable IRC client out there. We can add a shortcut to point to that address. In the irssi client:
/server add -auto -network freenode 10.40.40.40 6667
Now, when pulling up irssi, you will automatically connect. If for any reason you get disconnected, /server freenode will connect you to the hidden service. If your nick is registered with NickServ and you need to identify, then something like this might be a bit more appropriate:
/server add -auto -network freenode 10.40.40.40 6667 (password) (nick)
Now just connect:
Now that you are connected, you can join channels as normal, and move about with ease. In a channel, run a /whois nick (substituting for your nick), and you will see something similar to i=aaron@gateway/tor/x-ef387c8e0932dd32. That last string being a random encrypted string of characters showing your exit Tor node. This is a hell of a lot better than firstname.lastname@example.org or something else more revealing. Also, klines (kicks and bans) are much more difficult as they can now only be based on nick. As we all know, changing a nick is easy, and there is an infinite amount combinations. However, this doesn't mean that network staff can't handle the situation.
The only thing you may notice is lag. Because we are now connected to 3 Tor nodes plus a random Freenode server, we are going to have some latency problems. This is normal with Tor. Generally, I have an average of 5 seconds lag. This can be a little annoying, especially when in a meeting on a channel.
One problem. Now that you are connected via Tor to the Freenode hidden service, channels like to block Tor users because of abuse. I don't like this, because the honest people that just want to stay anonymous (the large majority of users), are punished because of the few who enjoy abuse and trolling. It was a shock to me to find #ubuntu and #ubuntuforums block tor users. Here, I wanted to join two channels to help where I could, and I was blocked.
Luckily, lilo came to my rescue, and I was issued a tor/regular cloak. Now, not only is Tor hiding my IP/host, but the cloak is changing my Tor host. I was able to join #ubuntu and #ubuntuforums just fine. However, you can get a cloak issued without using Tor, that will hide your IP/host. The best way to be issued a cloak is to donate to PDPC (after lilo issued me the cloak, I felt guilty, and donated :)).
There you go. You can now enjoy IRC anonymously. I should stress, as lilo did to me, if using Tor and definitely if issued a cloak, realize that you are now representing the best of Freenode. You should convey it as such. This means don't abuse the privilege, but more importantly, help others understand, especially channel ops, that anonymity can be very positive and enjoyable, and many wish to participate in such a fashion.