サーバの設定

以降の説明ではFreeBSD 4.1.1Rで12月後半のports currentを利用しました [1]

IRCのサーバはirc/ircd-hybridです。 設定ファイルは/usr/local/etc/ircdにまとまっています。 以下のファイル名はこのディレクトリ中のファイル名とします。 最低限設定が必要な設定ファイルはircd.confになりますが、初期設定のままでは実行できません。 設定の詳細な説明はexample.confを参照すれば良いでしょう。 ここでは、とりあえず動く設定をFigure 1-1に示します。 この設定ではリレーを行わないようになっていますが、コメント(##)でリレー用の設定の一例を示してあります。 IRCサーバのホスト名irc.take60.orgは適宜自分の所に読みかえて下さい。

Figure 1-1. ircdの設定ファイル例(/usr/local/etc/ircd/ircd.conf:抜粋)

# IRC 設定フェイル例(ircd.conf抜粋)
#
## (訳注)Take60が原文を損なわない程度に意訳しています。
##        利用の前には英語の原文を参照して下さい。
#
# M: サーバ名を設定する。
#    各フィールドはホスト名(ドメイン形式)、オプショナルな割当アドレス、
#    文章での名前、利用するポート番号の順です。
#    ポート番号は普通は6667を利用します。
#
M:irc.take60.org::Take60's World:6667
# A: 管理情報。
#    この行には3つのフィールドがあります。
#    各フィールドには任意の文章を含めることができます。
#    これは、/ADMIN コマンドで表示されます。
#
A:Take60 IRC Server:Somewhere, Japan:Take60<take60@i.am>
#
# Y: 接続クラスの定義. 
#    クラスは、C,N,I 行で使われる前にY:行中で定義されなければなりません
#    フィールドはクラス番号、秒で表現したping頻度、秒表示の接続頻度、
#    最大リンク数(自動接続で使われます)、sendqのサイズの順です。
#    サービスのために、少なくとも4MBのsendqが推奨されます。
#
# 備考: Y行は I行やO行の前に定義されなければなりません。
#       これは、I行とO行の両方がY行やクラスへの定義を参照するからです。
#
# 接続頻度フィールドが同じIPアドレスからの最大クライアント接続数の定義のために使われます。
# つまり '1'と設定した場合には全てのこのY行を利用しているI行はIPアドレス当たり1接続に制限されます。
# ここを 空白もしくは0としておくことで、このチェックは行われません。
#
Y:1:90:0:20:100000
Y:2:90:300:10:4000000
#
# I: あなたのサーバへ接続するクライアントを認証します。
#    ドメイン指定、IPアドレス指定に加えてアスタリスクのワイルドカードが使えます。
#    2番目のフィールドは接続するために使わなければならないパスワードを記入できます。
#    オプショナルな5番目のフィールドは接続クラス数を入れることができます。
#
## (訳注)この設定ではtake60.orgドメインからの接続のみを許可します。
I:*.take60.org::*.take60.org::1
#
# あるホストからの接続数を任意の数に制限することが可能です。
# これには、clonersを使います。
# これは、Y行中の普段は使われていないconfreq行を使うことで実現できます。
#
# クラス3中の100ユーザを許可し、一度には同じIPから1ユーザだけ接続させたい場合は以下のようになります。
#
Y:3:90:1:100:100000
#
# O: オペレータの認証
#    フィールドはオペレータがログインしている(ワイルドカードを用いた)ホストネーム、
#    オペレータのパスワード、オペレータのニックネームの順です。
#    最初の例では、take60.org内の全てのマシンから、/oper take60 takeと入力することでオペレータになれます。
#
O:*.take60.org:take60:take
#
# C:, N: 他のサーバへの接続の設定
#
# C: あなたのサーバが接続しようとするサーバの指定
# N: あなたのサーバに接続しようとするリモートサーバの接続許可
#
# この2行は普通ペアで用いられます。
#
# これらの行は2番目のフィールドにパスワードを含みます。
# 実際、まともなセキュリティで運用するためには、 *全ての* IRCサーバ接続はパスワードを持つべきです。
#
# C:行が4つのフィールドを持っている場合(4つめはTCPのポート番号です)、
# IRCはそのサーバに接続しようとします。
# あなたは少なくとも一つそのような行を設定しなければなりません。
#
# N:行が4つのフィールドを持つ場合、4番目のフィールドは*(アスタリスク)によって
#   置き換えられ先頭から削除されるサーバ名の要素の数を指定します。
#   これは、hostmakingの実装によって実現されています。
#   例えば、hayes.ims.alaska.eduを *.alaska.edu で表現するためには2
#   (つまり最初のふたつの部分を取り除く)を使います。
#   もし、これを使うときにはサーバの管理者に連絡して下さい。
#   サーバの管理者はhostmaskされた名前をコンピュータに登録する必要があるからです。
#   登録しないと接続することができません。
#
# 5番目のフィールドは接続クラス番号です。
#
# 以下の2行はこのサーバ(irc.take60.org)をirc.hoge.ac.jpに接続しようとします。
#
## C:irc.hoge.ac.jp:hoge:irc.hoge.ac.jp:6667:2
## N:irc.hoge.ac.jp:hage:irc.hoge.ac.jp::2
#
## (訳注)相手側のサーバ(irc.hoge.ac.jp)での設定は以下のようになります。
##
#### C:irc.take60.org:hage:irc.take60.org:6667:2
#### N:irc.take60.org:hoge:irc.take60.org::2
        

ircd.motdはクライアントの接続を行った時に最初に表示されるファイルです。 どんなアスキーアートを使うかは腕の見せ所です;)

動作確認にはtelnetを使えばいいでしょう [2]Figure 1-2のように動作確認を行います。 IDENTによる認証が通っていないので図のような表示になりますが、とりあえずの動作は確認できるでしょう。

Figure 1-2. ircdの動作確認

> telnet irc.take60.org 6667
Trying 127.0.0.1
Connected to localhost.
Escape character is '^]'.
NOTICE AUTH :*** Looking up your hostname...
NOTICE AUTH :*** Found your hostname, cached
NOTICE AUTH :*** Checking Ident
NOTICE AUTH :*** No Ident response
ERROR :Closing Link: 127.0.0.1 (Ping timeout)
Connection closed by foreign host.
	

Notes

[1]

4.2Rで解説したかったのですが、バックアップにDVD-RAMを利用しているのでod-driverがないとダメな生活になってしまっているのです…

[2]

下手なクライアントを使うと、クライアントが悪いのか、サーバが悪いのかの問題の切り分けの必要がでてきてはまると思います。