IRCって何……

この記事では割愛します。クリエイターズネットワーク公式サイトのIRCとは?をご覧ください。

charybdisって何……

IRCデーモンの1つです。プログラムの名前です。ここでは、固有名詞です。

簡単に系譜を説明しておきますと、ircd-hybridというIRCデーモンをベースに開発された、ircd-ratboxというIRCデーモンがあり、これをベースにIRC3.1という規格に対応するための実験的な(と言っても十分安定した動作ができます)デーモンとして分裂したものが、このcharybdisというIRCデーモンです。

IRCnetで使われていて、また恐らく普及率も高い、いわゆる「IRCデーモン」は、そのプログラムの名前からして「ircd2.11」という堂々としたものです。これはRFCで定義されているIRCに完全に準拠している、デーモンのバージョン=IRCという規格そのもののバージョンと言えるほど、それはそれは由緒正しきデーモンです。
しかし、現在も使われているIRCのRFCは最も古いもので1993年発行(RFC1459)であり、この記事の筆者より年寄りなのです。2000年に追加で4つ発行されました(RFC2810-2813)が、それでもすでに15年の歳月が経っています。

現実には、当時の状況で作成された規格では手に負えなくなっている部分が多々あります。例えばスパム対策。例えばNICK。
1993年と言えば、インターネットが爆発的に普及する原因の1つとして名高いMicrosoftWindows95すら発売されていません。つまりインターネットの利用者人口が今より圧倒的に少ないのです。
当時生まれてすらいないので想像ですが、サーバーコンピュータに過負荷をかけるスパムボットや、チャンネルの管理権(チャンネルオペレータ権)を奪うボットなど、ほとんど存在しなかったと思われます。それらへの対抗策が十分だとは言えません。
大文字・小文字を区別しないアルファベット26文字に、数字と、いくつかの記号しか使えないニックネーム(NICK)は、RFCでは9文字しか使えないことになっています。意味のある文字列として使える数万種類は、現在ではほとんど使いつくされてしまっているのではないでしょうか。

というわけで、IRC2(と通称される)規格は古すぎる。現在の状況にあわせてIRCそのものをバージョンアップしよう。という活動があり(atheme.org)、そこに参加したいくつかの(後発の)IRCデーモン開発元や、クライアントの開発元が合同で編纂したのがIRC3です。それに準拠すべく作られたデーモン。それがcharybdisです。

前置きで疲れました(自業自得という)。

で、この記事を書いてるの誰?

はい、鯉(こい)と申します。IRCでのNICKは “koi-chan” でいることが多いです。クリエイターズネットワークでは、主にIRC関連の管理をしております。

irc.cre.jpサーバー・風隠(irc.kazagakure.net)サーバー・公式ボット「Toybox」「Role」の維持管理をしたり、新しい機能の導入を画策したりしています。

IRC関連で何か提案やご意見のあります方は、IRCチャンネル #cre で発言してみてください。ログを読んでまるで川の鯉がパンくずに食いつくように反応するかもしれません。

charybdisの系譜

ircd-hybridは、RHELのEPELリポジトリに含まれているくらい有名なデーモンらしいです。そこから派生したircd-ratboxは、主に欧米圏で利用者の多い EFnet というIRCネットワークで使われていることで有名です。
そしてircd-ratboxから派生した件のcharybdisから派生した、ircd-sevenは、プログラマやウィキペディアン達が集うことで有名な同じく海外のIRCネットワーク freenode で開発され、運用されています。

つまり、実績は十分ということが言いたかったのです。

この記事を書いている段階では、最新バージョンは 3.4.2 です。

軽く解説。

クリエイターズネットワークで使おうかと思って設定ファイルを日本語化した、というのが今回の趣旨でした。前置きと本文が同じ内容って……いつものことか。

一部のコメントを日本語化した設定ファイルはこの記事の末尾にあります。
# 完全に翻訳してくれたらすごくうれしいですハイ。

リレーできるデーモン

charybdisがリレーできるデーモンは、調べた限りでは、同じhybridから派生したデーモンだけのようです。

このほかにリレーできるデーモンを見つけた方は、その時のそれぞれの設定ファイルとデーモンのバージョンを教えていただけるとすごくありがたいです。

なお、以下は軽く試した感じだとリレーできなかったデーモンです。

とくに、現在クリエイターズネットワークで使っている ngIRCd とのリレーはやりたかったのですが……どうやらcharybdis側のスパム対策機能のいくつかが ngIRCd に搭載されていなかったようで、残念ながらリレーできないようでした。

SSLリレーの設定

サーバー間の接続をSSLで暗号化する場合、リレー設定のフラグに ssl を記述するほか、指定する相手のポートを、リレー相手の設定ファイル listen{} ブロックで sslport で記述した番号にしなければなりません。ただの port で設定した番号では、エラーになってSSLリレーが構築されません。

ちなみに、SSL接続に必要な3ファイル(秘密鍵・サーバー証明書・DHパラメータ)は、同梱のシェルスクリプト bin/genssl.sh でまとめて作成できます。当然オレオレ証明書ですが、暗号化自体はできます。盗聴などを気にするならば、きちんとした認証局で発行してもらいましょう。

IRCサービス

freenode のNickServやChanServなどの機能のことです。
これcharybdisと同じ開発元からリリースされている Atheme-Services というデーモンで提供されています。

これを使うなら、charybdis(やほかのIRCデーモン)側では、IRCサーバーとリレーするように設定する必要があります。普通のIRCボットとは違う強力な機能を使うには、クライアントではなくサーバーとしての権限が必要なのでしょう。

Atheme-Servicesの設定については今後、別に記事を書きたいと思います。

では設定ファイルをどうぞ