Overview of Internet Relay Chat
IRC or Internet Relay Chat is the grandfather of all modern IM/chat apps we’re familiar with today. While waining in popularity, it is still an effective means of communication for adhoc or permanent groups. It’s used frequently for informal technical support with emerging open source technologies.
There are several separate IRC networks. These are essentially IRC servers linked together for message passing between them. They share a set channels. Different networks host different channels, and networks may be thematic.
A channel is essentially a group chat. Each channel has different rules (channel modes) and channels may have restricted or open membership. In it’s simplest form IRC requires no user registration. Simply connect to an IRC network and choose a handle or nickname (nick) that is not currently in use. Of course it is possible to register a nick (as you would register for any IM account), but extended non-use (~10 weeks) results in your nick getting recycled for others to use. Apart from securing an identity, having a registered nick is required to join some channels or when accessing the IRC server from a disreputable IP range (generally because of a shared proxy or VPN service). Generally you always want to have at least one registered nick. Unregistered nicks are disposable and there is no guarantee you can use the same name twice. You can have as many nicks as you need.
Establishing a Registered Identity
Download an IRC client. There are plenty and many are free.
Connect to an IRC network. There are many and your IRC client may already have the connection details to the popular ones. In the example below I connected to freenode. at chat.freenode.net:6667. Initially make sure you use no public VPN or proxy otherwise anonymous access is blocked.
Your client will probably connect you with a generic nickname like “Guest44”.
Step 1. Choose a handle for yourself.
Step 2. Let’s register that nick with a real email address. NickServ is a bot, but we send a private message to it as we would to anyone else.
/msg NickServ REGISTER mypassword myemailaddress
Step 3. You will receive an email that will give you a verification code. Use that verification code to convince the NickServ you have access to that email address.
/msg NickServ VERIFY REGISTER mynickname myverificationcode
Step 4. OK, now that our nick is registered, let’s make sure nobody else uses it. Disallow anonymous use of your registered nicks.
/msg NickServ SET ENFORCE ON
Step 5. Do not expose email
/msg NickServ SET HIDEMAIL ON
Step 6. Optional, otherwise skip ahead to step 9. Now we will add a second nick and make that registered as well. Switch to a different nickname.
Step 7. Link the current nickname to another registered nickname (one used in Step 1, and the password specified in Step 2).
/msg NickServ IDENTIFY mynickname mypassword
Step 8. Group all nicknames together.
/msg NickServ GROUP
Step 9. Verify your identity.
/msg NickServ INFO
Remember, nicknames expire. On freenode after 10 weeks of non-use or only 2 weeks if not used after initial creation. Each IRC network is different.
Ways to Connect with a Registered Identity
Method 1. Upon initial connection:
/CONNECT chat.freenode.net 6667 mynickname:mypassword
Method 2. After connection:
/MSG NickServ IDENTIFY mynickname mypassword
Method 3. Alternatively, if you use a client-side SSL certificate (imported into IRC client) and register that certificate fingerprint with NickServ you can avoid using passwords. The password you specified in Step 2 need not be used as long as your IRC client has the client-side cert installed.
There are many ways to create a self-signed client certificate. Google is your friend. Once you have created/obtained it and installed it into your IRC client, take note of the SHA1 fingerprint.
/msg NickServ cert add mysha1fingerprint /msg NickServ cert list
Show channels on server.
Join a channel. If #somechannel does not exist, it is created
/JOIN #somechannel optionalpassword
Ask to join a restricted channel.
/KNOCK #inviteonlychannel Please invite me!
Create your own channel. Setting the mode to +i makes channel members invisible. +s Marks the channel as secret. The channel will not appear in channel listings, the NAMES command will not list nicknames for users who are not channel members, and the channel will not appear in WHOIS unless WHOIS is called by a fellow channel member.
/JOIN ##mynewchannel channelpassword /MODE ##mynewchannel +si
Channels come and go constantly. You can reserve a channel much the same way a nick can be reserved. For reserved channels see: https://botbot.me/how-to-setup-irc-channel/
This is a public message to everyone in the channel. /MSG somenick This is a private message to somenick
Send a message to everyone joined to a channel. Sender has not joined channel. Channel may disallow.
/MSG #somechannel This is a message to a channel
/QUERY somenick This is a private message to somenick and so is this /QUERY This is a public message
Direct Client-to-Client communication circumvents the server. Messages are passed directly between parties. Files can be passed as well. This is a powerful privacy feature since IM clients always pass their messages via a server intermediary.
nickA wants to talk to nickB over a direct link, and send a file:
/DCC CHAT nickB /DCC SEND myfile.jpg nickB
nickB sees a request for connection. To establish the chat link and receive the download:
/DCC CHAT nickA /DCC GET nickA
nickA terminates the direct connection with nickB
/DCC CLOSE CHAT nickB
Learn about the users around you
Invisible users not returned by WHO
Get a list of all nicks joined to a channel. Invisible users not returned.
Get details on a nick. Reveals host, real name field, channels, server, login time
/WATCH +somenick /WATCH -somenick
Cut down on the noise and boost your privacy
- +R only send/receive from registered nicks
- +C only receive from users in same channel
- +i makes you invisible by removing mynick from NAMES and WHO, hides your channels
/MODE mynick +R /MODE mynick +C /MODE mynick +i
Disconnect from the IRC network
Pros and Cons of IRC
- Great for command line lovers.
- Powerful; lots of commands, lots of control
- Create your own invite only channels (assuming the server allows)
- Can establish direct client-to-client connections
- Frightens beginners
- No (native) persistent message log. When you connect to a channel you generally don’t have any access to message history. Users will tend to remain logged in and use /AWAY instead of leaving the channel.
- While your handle may be anonymous, the IRC server exposes your IP address to all other users.
- Being absent from the IRC server too long may result in your handle being recycled
Many of these issues can be mitigated by using an IRC bouncer (BNC).