Linking IRCd-Hybrid and UnrealIRCd
An IRC server operator and I were beating our heads against the wall for awhile trying to figure out why our two daemons would not link. The comparison between the connect{}
sections of our respective ircd.conf
files were perfectly matched. Yet no matter what, the servers continued to report errors on authentication issues. Interestingly, while the question seemed to be asked quite a bit in IRC configuration forums, nobody ever really answered the question.
The answer is very simple – IT WILL NEVER WORK. EVER.
Not only did everyone in the forums continue to provide misleading and inaccurate information, but nobody even came close to explaining why.
On the IRCd-Hybrid host, I ran tcpdump:
sudo tcpdump -i eth0 dst 172.20.100.11 and port 6667 -vv -w capture.pcap
On the UnrealIRCd host, I also ran tcpdump:
sudo tcpdump -i eth0 dst 172.20.100.13 and port 6667 -vv -w capture.pcap
Viewing the two entries in WireShark reveals the following obvious answer:
Connection Packet from IRCd-Hybrid |
Connection Packet from UnrealIRCd |
According to RFC2813 – Internet Relay Chat: Server Protocol, the field is supposed to look like PASS moresecretpassword 0210010000 IRC|aBgH$ Z
where the PASS
command is followed by a password, version number, flags and options. The UnrealIRCd server doesn’t even come close to following the RFC. IRCd-Hybrid is much closer, but skipped the version number altogether.
The bottom line is … they don’t talk to the same language during the very first authentication step so they will not connect to each other.