CentOSでIRCサーバー構築(SSL接続)

Irc1

CentOSでIRCサーバーを構築する

LINEやSkypeやチャットワークなどのコミュニケーションツールが流行っていても、やはり社内チャットの定番はIRC(Internet Relay Chat)!そこで今回はCentOS6にIRCサーバーを構築する方法をご紹介します。IRCサーバーは社内にも立てられますが、さくらVPSなど外部サーバーを使った場合も想定してSSL通信で暗号化する方法も解説いたします。

ircd-hybridをインストール

IRCサーバーのミドルウェアはいくつかありますが、今回はCentOS標準で用意されているircd-hybridをインストールしてみます。

$sudo yum install -y ircd-hybrid

これでircd-hybridがインストールされ、/etc/ircd/ircd.confが作成されますが、標準で用意されているircd.confはかなり難解なので、サンプルで用意されている簡単なircd.confに置き換えます。

$sudo cp /usr/share/doc/ircd-hybrid-7.2.3/simple.conf /etc/ircd/ircd.conf

SSL鍵の作成

IRCサーバーとのSSL通信に必要なSSLの鍵ファイルを準備します。ここでは、ドメインはirc.example.comとします。

sudo mkdir -p /etc/ssl/ircd
cd /etc/ssl/ircd
sudo openssl genrsa -out rsa.key 2048
sudo openssl rsa -in rsa.key -pubout -out rsa.pub
sudo chown ircd:ircd *
sudo chmod 600 *
sudo openssl req -new -days 365 -x509 -key rsa.key -out cert.pem

最後のコマンド実行後にSSL証明書について幾つか質問されますので、答えていきます。

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,

If you enter '.', the field will be left blank.

Country Name (2 letter code) [XX]:JP State or Province Name (full name) []:Tokyo Locality Name (eg, city) [Default City]:Shibuya Organization Name (eg, company) [Default Company Ltd]:hogehoge inc. Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:irc.example.com Email Address []:

これでSSL証明書が準備できました。

ircd.confの編集

ircd.confを編集します。編集箇所だけリストアップします。

serverinfo {
        name = "irc.example.com";
        sid = "101";
        description = "hogehoge IRC server";
        network_name = "hogehoge";
        network_desc = "This is hogehoge IRC Network";
        hub = no;
        max_clients = 512;
        rsa_private_key_file = "/etc/ssl/ircd/rsa.key";
        ssl_certificate_file = "/etc/ssl/ircd/cert.pem";
};

admin {
        name = "Saito Takayoshi";
        description = "Main Server Administrator";
        email = "******@example.com";
};

listen {
        flags = ssl;
        port = 6667;
};

auth {
        user = "@";
        class = "users";
        password = "**************";
        encrypted=yes;
};

最後にircdを起動させます。

sudo /etc/init.d/ircd start

IRCクライアントからの接続

LimeChatなどのIRCクライアントから接続します。ポートは6667。SSLチェックは忘れずに付けましょう。うまく成功すると以下のようにIRCクライアントにメッセージが表示されます。

Connected
*** Looking up your hostname...
*** Checking Ident
*** Found your hostname
*** No Ident response
*** Connected securely via TLSv1.2 AES256-SHA256-256
Logged in
Welcome to the hogehoge Internet Relay Chat Network saito
Your host is irc.example.com[0.0.0.0/6667], running version hybrid-7.3.1
This server was created Aug 20 2012 at 12:29:37
irc.example.com hybrid-7.3.1 CDGabcdfgiklnorsuwxyz biklmnopstveIOS bkloveI
CALLERID CASEMAPPING=rfc1459 DEAF=D KICKLEN=160 MODES=4 NICKLEN=51 PREFIX=(ov)@+ STATUSMSG=@+ TOPICLEN=120 NETWORK=hogehoge MAXLIST=beI:25 MAXTARGETS=4 CHANTYPES=#& are supported by this server
CHANLIMIT=#&:15 CHANNELLEN=50 EXCEPTS=e INVEX=I CHANMODES=eIb,k,l,imnpstOS WATCH=32 ELIST=CMNTU SAFELIST AWAYLEN=160 KNOCK are supported by this server
101AAAAAA your unique ID
There are 0 users and 1 invisible on 1 servers
I have 1 clients and 0 servers
Current local users: 1  Max: 1
Current global users: 1  Max: 1
Highest connection count: 0 (0 clients) (1 connections received)
MOTD File is missing
saito has changed mode: +i

これでログイン成功です。あとはチャンネルを作るなり自由にIRCを楽しみましょう。

なお、もし以下のメッセージが出力される場合、

The operation couldn’t be completed. (OSStatus error -9800.)

SSL通信に何らかの問題が発生しています(listenでSSLポートが開いていないなど)。設定をもう一度見直しましょう。