IRCd
Server software that implements IRC
title: "IRCd" type: doc version: 1 created: 2026-02-28 author: "Wikipedia contributors" status: active scope: public tags: ["irc", "software-using-the-gnu-general-public-license"] description: "Server software that implements IRC" topic_path: "general/irc" source: "https://en.wikipedia.org/wiki/IRCd" license: "CC BY-SA 4.0" wikipedia_page_id: 0 wikipedia_revision_id: 0
::summary Server software that implements IRC ::
An IRCd, short for Internet Relay Chat daemon, is server software that implements the IRC protocol, enabling people to talk to each other via the Internet (exchanging textual messages in real time). It is distinct from an IRC bot that connects outbound to an IRC channel.
The server listens to connections from IRC clients on a set of TCP ports. When the server is part of an IRC network, it also keeps one or more established connections to other servers/daemons.
The term ircd originally referred to only one single piece of software, but it eventually became a generic reference to any implementation of an IRC daemon. However, the original version is still distributed under the same name, and this article discusses both uses.
History
TLS (Transport Layer Security)
Some IRCd support Transport Layer Security, or TLS, for those who don't, it is still possible to use SSL via Stunnel. The unofficial, but most often used port for TLS IRCd connections is 6697. More recently, as a security enhancement and usability enhancement, various client and server authors have begun drafting a standard known as the STARTTLS standard which allows for TLS and plain text connections to co-exist on the same TCP port.
IPv4 and IPv6
IRC daemons support IPv4, and some also support IPv6. In general, the difference between IPv6 and IPv4 connections to IRC is purely academic and the service operates in much the same manner through either protocol.
Clustering
Large IRC networks consist of multiple servers for horizontal scaling purposes. There are several IRC protocol extensions for these purposes.
IRCX
IRCX (Internet Relay Chat eXtensions) is an extension to the IRC protocol developed by Microsoft
P10
The P10 protocol is an extension to the Internet Relay Chat protocol for server to server communications developed by the Undernet Coder Committee to use in their ircu server software. It is similar in purpose to IRCX and EFnet TS5/TS6 protocols and implements nick and channel timestamping for handling nick collisions and netsplit channel riding, respectively. Other IRCd's that utilize this protocol extension include beware ircd.
TS6
The TS6 protocol is an extension to the Internet Relay Chat protocol for server to server communications developed initially by the developers of ircd-ratbox. It has been extended by various IRC software and has the feature that proper implementations of TS6 can link to each other by using feature negotiation—even if features are disparate.
Configuration
Jupe
Juping a server, a channel, or a nickname refers to the practice of blocking said channel or nickname on the server or network or said server on the network. One possible explanation of how this term came about is that it is named after the oper named Jupiter, who gained control of the nickname NickServ on EFnet. EFnet does not offer services such as NickServ; Jupiter gained control of the nickname as he (among other operators) did not believe nicknames should be owned. Today, EFnet opers jupe nicknames that are used as services on other networks.
A nickname or server jupe takes advantage of the fact that certain identifiers are unique; by using an identifier, one acquires an exclusive lock that prevents other users from making use of it.
Officially sanctioned jupes may also utilize services or server configuration options to enforce the jupe, such as when a compromised server is juped to prevent it from harming the network.
In practice IRC operators now use jupe configurations to administratively make channel or nicknames unavailable. A channel jupe refers to a server specific ban of a channel, which means that a specific channel cannot be joined when connected to a certain server, but other servers may allow a user to join the channel. This is a way of banning access to problematic channels.
O-line {{anchor|O-line}}
An O-line (frequently also spelled as O:line; on IRCds that support local operators, the O-lines of those are called o:lines with a lower-case O), shortened from Operator Line and derived from the line-based configuration file of the original IRCd, is a line of code in an IRC daemon configuration file that determines which users can become an IRC operator and which permissions they get upon doing so. The name comes from the prefix used for the line in the original IRCd, a capital O. The O-line specifies the username, password, operator flags, and hostmask restrictions for a particular operator. A server may have many O-lines depending on the administrative needs of the server and network.
Operator flags are used to describe the permissions an operator is granted. While some IRC operators may be in charge of network routing, others may be in charge of network abuse, making their need for certain permissions different. Operator flags available vary widely depending on which IRC daemon is in use. Generally, more feature rich IRC daemons tend to have more operator flags, and more traditional IRC daemons have fewer.
An O-line may also be set so that only users of a certain hostmask or IP address can gain IRC operator status using that O-line. Using hostmasks and IP addresses in the O-line requires the IP address to remain the same but provides additional security.
K-line
When a user is k-lined (short for kill line), the user is banned from a certain server, either for a certain amount of time or permanently. Once the user is banned, they are not allowed back onto that server. This is recorded as a line in the server's IRC daemon configuration file prefixed with the letter "K", hence "K-line".
Some IRC daemons, including ircd-hybrid and its descendants, can be configured to propagate K-lines to some or all other servers on a network. In such a configuration, K-lines are effectively global bans similar to G-lines.
While the precise reason for the disconnection varies from case to case, usual reasons involve some aspect of the client or the user it is issued against.
; User behavior : K-lines can be given due to inappropriate behavior on the part of the user, such as "nickname colliding", mode "hacking", multiple channel flooding, harassing other users via private messaging features, "spamming" etc., or in the case of older networks without timestamping, split riding, which cannot be corrected through use of channel operator privileges alone. ; Client software : Some IRC daemons can be configured to scan for viruses or other vulnerabilities in clients connecting to them, and will react in various ways according to the result. Outdated and insecure client software might be blocked to protect other network users from vulnerabilities, for instance. Some networks will disconnect clients operating on/via open proxies, or running an insecure web server. ; Geographic location : An IRC network operating multiple servers in different locales will attempt to reduce the distance between a client and a server. This is often achieved by disconnecting (and/or banning) clients from distant locales in favour of local ones.
There are a number of other network "lines" relating to the K-line. Modern IRC daemons will also allow IRC operators to set these lines during normal operation, where access to the server configuration file is not routinely needed.
G-line
A G-line or global kill line (also written G:line) is a global network ban applied to a user; the term comes from Undernet but on DALnet a similar concept known as an AKill was used.
G-lines are sometimes stored in the configuration file of the IRCd, although some networks, who handle K-lines through the IRC services, prefer to have them stored in their service's configuration files. Whenever a G-lined person attempts to connect to the IRC network, either the services or the IRC daemon will automatically disconnect the client, often displaying a message explaining the reasoning behind the ban.
G-lines are a variant of K-lines, which work in much the same way, except K-lines only disconnect clients on one server of the network. G-lines are normally applied to a user who has received a K-line on one server but continues to abuse the network by connecting via a different server. G-lines are often regarded as an extreme measure, only to be used in cases of repeated abuse when extensive attempts have been made to reason with the offending user. Therefore, especially on larger networks, often only very high ranking global IRC operators are permitted to set them, while K-lines, which are mostly regarded as a local affair, are left to the operators of the individual server in the network.
G-lines also work slightly differently from K-lines. G-lines are typically set as *@IPaddress or *@host, with the first being the better option. If the *@host option is used, the server must conduct a reverse DNS lookup on the user and then compare the returned host to the hosts in the G-line list. This results in delay, and, if the DNS doesn't return correct results, the banned user may still get on the network.
Z-line {{anchor|GZ-line|D-line|X-line}}
A Z-line or zap line (also written Z:line) is similar to a K-line, but applied to a client's IP address range, and is considered to be used in extreme cases. Because a Z-line does not have to check usernames (identd) or resolved hostnames, it can be applied to a user before they send any data at all upon connection. Therefore, a Z-line is more efficient and uses fewer resources than a K-line or G-line when banning large numbers of users.
In some IRC daemons such as ircd-hybrid, this is called a D-line (deny line) or an X-line.
Z-lines are sometimes stored in the configuration file of the IRCd, although some networks, who handle lines through the IRC services, prefer to have them stored in their service's configuration files. Whenever a Z-lined person attempts to connect to the IRC network, either the services or the IRC daemon will automatically disconnect the client, often displaying a message explaining the reasoning behind the ban.
Z-lines are a variant of K-lines, which work in much the same way. Most Z-lines are "awarded" to people who abuse the network as a whole (on smaller networks, these are more frequently issued for isolated incidents).
Z-lines also work slightly differently from K-lines. Z-lines are typically set as *@IP or *@host, with the first being the better option. Z-lines do not wait for an ident response from the connecting user, but immediately close the socket once the user's IP is compared to the Z-line list and a match is found. If the *@host option is used, the server must conduct a reverse DNS lookup on the user and then compare the returned host to the hosts in the Z-line list. This can result in delays, or if the DNS doesn't return correctly, banned users could still get on the network. In actuality, the *@host option is completely against the intentions of using a Z-line, and therefore some IRCd programs will not allow anything other than @IP, with wildcards (?,) or CIDR prefix lengths (e.g. /8) allowed in the IP section to block entire subnets. Another difference from K-lines (which affect only IRC clients) is if an IP is banned, nothing, not even other servers, can connect from this IP (or IP range, depending on the banmask).
One advantage to using Z-lines over K-lines and G-lines, from a server or network administrator's perspective, a Z-line uses less bandwidth than a K-line, mainly because it doesn't wait for an ident response or DNS lookup.
A disadvantage to using Z-line over K-line or G-line is that it becomes more difficult to ban entire ISPs and very dynamic IP addresses, common with some dialup and DSL connections. For example, if a network administrator wants to ban all of ISP example.com (with hypothetical IP address ranges of 68.0.0.0 – 68.255.255.255 and 37.0.0.0 – 38.255.255.255), a G-line could use @example.com, whereas Z-line would require @37..., @38..., and @68... to accomplish the same thing.
Z-lines can also be global, in which case they are called GZ-lines. GZ-lines work in the same manner as Z-lines, except that they propagate to every server on the network. Some IRC daemons may also be configured to share Z-lines with other servers.
Q-line
On some IRCds, such as UnrealIRCd, a Q-line forbids a nickname, or any nickname matching a given pattern. This is most often used to forbid use of services nicknames (such as "X", or NickServ) or forbid use of IRC operator nicknames by non-operators. Some IRC daemons may disconnect users when initially applying the Q-line, whilst others will force a nickname change, or do nothing until the user covered by the Q-line reconnects. Other IRCds, like ircd-hybrid, use the "RESV" ("reserve") command instead, with the stats letter remaining as Q. The "RESV" command can also forbid a channel from being used.
References
References
- (2000). "RFC 2810 - Internet Relay Chat: Architecture". Tools.ietf.org.
- [http://www.irchelp.org/irchelp/ircd/server-request.html IRC Server Request FAQ] {{webarchive. link. (2009-04-22)
- (2000). "RFC 2810 – Internet Relay Chat: Architecture". Tools.ietf.org.
- (1993). "RFC 1459 – Internet Relay Chat Protocol". Tools.ietf.org.
- (1993). "RFC 1459 – Internet Relay Chat Protocol". Tools.ietf.org.
- [http://www.irc.org/tech_docs/ircnet/faq.html#ircd IRCD FAQ on irc.org]
- "Search IRC, IRCD version overview". Searchirc.com.
- (2010-02-26). "Open Directory – Computers: Software: Internet: Servers: Chat: IRC". Dmoz.org.
- "IRCD – the server". Funet.fi.
- [http://www.irc.org/history_docs/jarkko.html IRC History on IRC.org]
- [http://daniel.haxx.se/irchistory.html History of IRC, Daniel Stenberg]
- [http://www.ithildin.org/ Ithildin IRCd]
- [http://www.inspircd.org/ Inspire IRCd]
- "WebMaster Inc.".
- "WeIRCd".
- [http://www.ircxpro.com OfficeIRC – IRC Server Software, Web Chat, Internal Communications and Instant Messaging (IM)]
- [http://smartirc4net.meebey.net/jaws/index.php?blog/show/SmartIrc4net_035_released Blog entry mentioning RFC violations]
- [http://www.alien.net.au/irc/irc2numerics.html Numerics diversity of different IRC daemons]
- [http://git.dmdirc.com/cgit.cgi/parser/tree/src/com/dmdirc/parser/irc/IRCParser.java Client source (DMDirc) showing conditions for different servers (e.g. in function starting at line 1523)]
- [https://www.iana.org/assignments/port-numbers IANA.org]
- (1993). "RFC 1459 – Internet Relay Chat Protocol". Tools.ietf.org.
- "STARTTLS standard".
- Paul Mutton, ''IRC hacks'', [[O'Reilly Media]], 2004, {{ISBN. 0-596-00687-X, pp. 371
- [http://ircd.bircd.org/bewarep10.txt beware's P10 documentation]
- [http://web.mit.edu/klmitch/Sipb/devel/src/ircu2.10.11/doc/p10.html ircu P10 documentation]
- "Reply to thread "K-lined for {{sic".
- "Freenode, Using the network".
- [http://docs.dal.net/docs/operinfo.html IRC Operator Version 1.1.2]
::callout[type=info title="Wikipedia Source"] This article was imported from Wikipedia and is available under the Creative Commons Attribution-ShareAlike 4.0 License. Content has been adapted to SurfDoc format. Original contributors can be found on the article history page. ::