インストールメモ
[ircd IRC Server]
1.アーカイブファイルの入手
ハンターネットから取得。
ftp.rthunter.gr.jp/pub/unix/src/irc/irc2.10.3+jp6.tgz
2.アーカイブファイルの展開
取得したアーカイブファイルを、適当な場所で展開します。
% gzip -d irc2.10.3+jp6.tgz
% tar -xvf irc2.10.3+jp6.tar
すると、irc2.10.3+jp6/ のようなディレクトリが作成されます。
3.configure の実行
展開された irc2.10.3+jp6/ の中に移動し、configure コマンドを実行します。
この時にログの出力先やインストール先のパスを変更したい場合は以下のオプションが利用可能です。
カッコ内はデフォルトです。
--prefix=DIR (/usr/local)
--sbindir=DIR (prefix/sbin)
--logdir=DIR (prefix/var/log/ircd)
--sysconfdir=DIR (prefix/etc)
--localstatedir=DIR (prefix/var/run)
--resconf=FILE (/etc/resolv.conf)
--zlib-include=DIR
--zlib-library=DIR
--zlib-prefix=DIR
--with-zlib
--without-zlib
--enable-ip6
--enable-dsm
全てがデフォルトのままだと、ログが /usr/local/var/log/ircd に記録されてしまうので、今回はログ
の出力先だけ /var/log/ircd に変更します。
# ./configure --logdir=/var/log/ircd
4.make の実行
configure が終了すると OS 名のディレクトリが出来ているのでそこに移動します。
# cd i386-unknown-freebsd3.2
Makefile と config.h を確認して、必要なら修正して make all です。
今回は特になにも変更しませんでした。
# make all
5.インストール
コンパイルが終了すれば、make install を実行します。
# make install
これにより ircd がインストールされます。
デフォルトの場合のバイナリのインストール先は /usr/local/sbin です。
6.ircd.conf と ircd.motd の作成
インストールしただけでは作られないので ircd.conf と ircd.motd を作成する。
ircd.conf は example.conf をコピーして編集すると楽。
デフォルトでは /usr/local/etc に作成する。
# cd /usr/local/etc
# cp example.conf ircd.conf
# vi ircd.conf
今回は単独で irc サーバーを立ち上げるので ircd.conf は下記の様にした。
M:tcb.rthunter.gr.jp:210.228.136.152:IRC Server at hunternet:6667
A:shingo hayashi - hunternet:hayashi@rthunter.gr.jp:IRC Server::
P:210.228.136.152:::6667:
Y:1:90:0:50:512000::
I:*::*::1
設定ファイルの詳細は一番最後の「設定資料」を参照すること。
ircd.metd(ユーザーが接続してきた時にサーバーから返すメッセージファイル)を作成する。
# touch ircd.motd
# vi ircd.motd
このファイルの内容は単なるメッセージなので何でも良い。
7.自動起動ファイルの作成
/usr/local/etc/rc.d の中に ircd.sh という起動スクリプトを書いて実行権限を与えておく。
# cd /usr/local/etc/rc.d
# touch ircd.sh
# vi ircd.sh
ファイル名は何でも良いが、分かりやすい名前が良いだろう。
ファイルの中身は以下の様にした。
#!/bin/sh
/usr/local/sbin/ircd -c
8.リブートと動作確認
リブートを掛ければ自動的に ircd がデーモンで立ち上がっているはず。
ps -aux コマンドにより起動している事を確認する。
# ps -aux
見づらい場合は ps -ax を使うと良い。
/usr/local/sbin/ircd -c のプロセスがあれば立ち上がっています。
IRCクライアントから接続して見ましょう。
<参考> http://www.note.iri.co.jp/irc/
-------「設定資料」---------------「設定資料」-----------------「設定資料」----------「設定資料」---------
ircd.conf ファイルの記述方法について解説します。
1.マシーンの情報(M) -- Machine information [必要不可欠]
サーバーマシーンの情報を此処に書きます。
形式:
M:<サーバー名>:<サーバーのIPアドレス>:<地理的位置>:<ポート>
例:
M:csa.bu.edu::Boston University Computer Science Department:6667 M:csa-irc-server:128.197.13.20:Boston University Computer Science Department:6667
「サーバー名」には普通マシーンのFQDN、ドメイン名を使います。
その場合「サーバーのIPアドレス」は省いても構いません。
別にFQDNを使わなくても構いません。但しその時は必ず「サーバーのIPアドレス」
を書いて下さい。また他マシーンのFQDNを使用しないように注意して下さい。
色々ややこしい問題がでてくるので、自マシーンのFQDNを使用することを強くお薦めします。
これが通常、IRC空間でのサーバー名になります。
「サーバーのIPアドレス」にはサーバーの動いているマシーンのIPアドレスを書きます。
いくつかのIPアドレスが有る場合もここで確定します。
これは外向きの接続の場合に使うIPアドレスです。
「地理的位置」にはサーバーマシーンの置いている場所を書きます。
書き方は”Uji Kyoto Japan”のようなものが多いです。
「ポート」は他のサーバーから来るUDP-pingのために書きます。
他のサーバーは自動接続の時このポートに接続するように
設定しなければなりません。
2.管理者の情報(A) -- Administrative info [必要不可欠]
管理人の情報を此処に書きます。
形式:
A:<管理人の名前と場所>:<管理人のE-mailアドレス>:<備考>::
例:
A:Helen Rose - Boston University CS Department:Helen Rose :Client Server::
「管理人の名前と場所」には管理人のフルネームとそのマシーンのある場所を書きます。
「管理人のE-mailアドレス」には管理人のE-mailアドレスを書きます。
「備考」には他に書きたいことを自由に書いて下さい。
3.ポート接続(P) -- Port connections [必要不可欠]
様々な接続のためにここでポートを指定します。6667が標準的です。
接続の種類ごとに色々なポートを使用した方がよいでしょう。
なおconfig.hでUNIXPORTを定義してコンパイルした場合はUNIXドメインも使えます。
形式:
P:<サーバーのIPアドレス>:<*>::<ポート>: (I-NETドメイン利用時)
or
P::<*>:<*>:<ポート>: (UNIXドメイン利用時)
例:
P::::6667:
P:206.252.192.20:::6668:
P:::147.210.*:6669:
P:::128.2.0.0:6664:
P:/tmp/.ircd:*:*:6666:
「サーバーのIPアドレス」には接続を許可するサーバーのIPアドレスを書きます。
なお空欄の場合はそのサーバー全てのIPアドレスを指定したことになります。
「IPアドレスのマスク」には接続しに来たマシーンのIPアドレスによって接続を許可するか決められます。
なおワイルドカードとして*と0が使えます。
"P:::128.2.*:6664:"と"P:::128.2.0.0:6664:"は同じものです。
但し*を128.2*.12の様に間に使ってはなりません。セグメントはセグメントごとに扱われるからです。
「UNIXソケットのディレクトリ」にはUNIXドメインを使う場合、
UNIXソケットを作るディレクトリを書きます。
「ポート」には外から来る接続のために使用するポートを書きます。
なおUNIXドメインを使う場合、「UNIXソケットのディレクトリ」に作られる
UNIXソケットのファイル名になります。
4.接続のクラス(Y) -- Connection Classes [推奨]
ここで接続のクラスを書きます。接続のクラスとは接続の仕方を
接続の種類によって分けるためのもので、サーバーとの接続のためのクラスと
クライアントの接続のためのクラスは分けるべきです。
またY行はクラスの記載が必要な行より先に書いて下さい。
「sendQ」以外を空欄にすると0と理解されます。
形式:
Y:<クラスナンバー>::<接続確認の頻度>:<最大接続数>::: (サーバーのクラス)
or
Y:<クラスナンバー>:::<最大接続数>::<ローカルな制限>:<グローバルな制限> (クライアントのクラス)
例:
Y:2:90:300:1:4000000::
Y:10:90::100:512000:10:32
Y:11:90::100:512000:0.1:0.2
Y:12:90::100:512000:1:3
Y:13:90::100:512000:1:1
「クラスナンバー」には任意の数字を書いて下さい。
ここでそれぞれのクラスを区別します。
他の行のクラス記入欄にはこの数値を書いて下さい。
なおサーバーとの接続時クラスナンバーが大きい方を優先します。
「pingの頻度」には何秒ごとにpingを送るかを設定します。
なおどのくらいを設定するかわからない人は
config.hにあるデフォルト値を使用して下さい。
またサーバーとの接続の場合はリンクの両側で
同じ値を使用するのが望ましいでしょう。
「接続確認の頻度」には何秒おきに他のサーバーからの接続を確認するか
を設定します。重要なリンクほど小さい値を設定すると良いでしょう。
「最大接続数」には接続できる最大数を設定します。
サーバーとの接続の場合、自動接続できる接続数を設定します。
(CONNECTコマンドを使用した場合はこの限りではありません。)
クライアントの接続の場合は、I行またはO行ごとの最大接続数として
設定します。なお書かなかった場合は0(制限は無し)と見なされます。
「sendQ」にはsendQを何byteにするか設定します。
(これはconfig.hに書かれたMAXSENDQLENGTHに拘束されません。)
もしこの欄が空白だとconfig.hに書かれたデフォルト値が使われます。
「ローカルな制限」でそのサーバー自身への複数のクライアント接続を規制します。
形式としては
"<同一ホストの最大接続数>.<同一ホスト且つ同一ユーザーの最大接続数>"
の様になります。書かなかった場合は0(制限は無し)と見なされます。
また一つの数字しか書かなかった場合は「同一ホストの最大接続数」と見なされます。
なお、「同一ホスト且つ同一ユーザーの最大接続数」ではidentdを使用します。
もしidentサーバーから反応がなかった場合、"unknown"というユーザー名が
使われますが、これは「同一ホスト且つ同一ユーザーの最大接続数」には引っかかりません。
「グローバルな制限」で複数のクライアント接続を規制しますが「ローカルな制限」と異なり、
他のサーバーへ接続している数もカウントします。
形式は「ローカルな制限」と同じです。なお、ローカルからの接続も含むので
「グローバルな制限」では同じかより大きい値を使用して下さい。
なお書かなかった場合は0(制限は無し)と見なされます。
5.クライアント接続(I,i) -- Client connections [必要不可欠]
クライアントとして接続を許可するホストを書きます。
なおI行に書かれたホストはクライアントとしての全ての機能を持ちますが、
i行に書かれたホストはニックネームが変えられない、チャンネルオペレータ権限を
行使できないなどの規制があります。まずi行から条件を確かめていきます。
形式:
I:<クライアントホストのIPアドレス>:<パスワード>:<ホストネーム>:<ポート>:<クラスナンバー> (通常のクライアント接続)
or
i:<クライアントホストのIPアドレス>:<パスワード>:<ホストネーム>:<ポート>:<クラスナンバー> (制限付きクライアント接続)
例:
i:*@*::::13
i:*@*:foobar:::13
i:::*@*.???:13
I:*@192.168.*::::12
I:*@128.197.*::*@*.bu.edu::10
I:::hrose@csa.bu.edu::10
I:::*@ppp*.bu.edu::12
「クライアントホストのIPアドレス」には接続を許可するクライアントのIPアドレスを書きます。
なお"username@128.197.27.1"の様にユーザーネームも併用する場合はクライアント側に
identサーバーがある必要があります。また*や?(ワイルドカード)も利用できます。
空欄の場合はこの条件でのマッチングはしません。但しもちろん下の「ホストネーム」かどちらかに
条件を明記する必要があります。
「パスワード」には接続にパスワードを必要とする場合に記載して下さい。
「ホストネーム」には接続を許可するクライアントのホストネームを書きます。
「クライアントホストのIPアドレス」と同じようにユーザーネームを併用する場合はidentサーバーが
クライアント側にある必要があります。また同様に*や?(ワイルドカード)も使えます。
空欄の場合は特別の意味を持ちます。詳しくはこのすぐ後に述べます。
どのようにマッチングしているかと言いますと、まず「ホストネーム」を見ます。
もし条件にマッチしたとしたらそのホストネームでの接続を許可します。
条件にマッチしなくても「クライアントホストのIPアドレス」でのマッチングを試みます。
ここで条件にマッチしたら例えホストネームが逆引きできるとしても
IPアドレスでの接続を許可します。
「ホストネーム」が空欄の場合は利用できる限り「クライアントホストのIPアドレス」
でのマッチング成功だとしてもホストネームで接続を許可します。
「ポート」にはクライアントが利用するポートを書きます。
なお空欄や0を書いた場合は全てのポートで許可します。
「クラスナンバー」にはY行に書かれたクラスナンバーを書いて下さい。
ここで利用できるユーザーの最大数が決まります。
6.オペレータ特権(O,o) -- Operator privileges [随意選択]
ここにオペレータとしてアクセスするホストの情報を書きます。
よく調整された末端のサーバーなら必要ないでしょう。
ircd.confの変更を反映させたいときはircdに"kill -HUP"をかけて下さい。
O行はグローバルオペレータとして接続しますが、o行はローカルオペレータ
としての接続を許可します。ローカルオペレータでないと使えないコマンドがあります。
形式:
O:<ホストネーム>:<パスワード>:<ニックネーム>:<ポート>:<クラスナンバー> (グローバルオペレータ)
or
o:<ホストネーム>:<パスワード>:<ニックネーム>:<ポート>:<クラスナンバー> (ローカルオペレータ)
例:
O:*.bu.edu:Zaphod:Trillian::10
O:hrose@csa.bu.edu:Zaphod:Trillian::10
o:*.bu.edu:ITBites:jhs::10
O:rocker@csa.bu.edu:T0eiVgHrqeKTQ:Rocker::10
「ホストネーム」にはサーバーオペレータとして接続を許可するホストを書きます。
"username@hostname"のようにusernameを併用した場合identサーバーのリプライを使用します。
「パスワード」には接続時必要となるパスワードを記載して下さい。
なお管理には十分注意して下さい。パスワードを人に教えないということはもちろんのこととして
ircd.confを安易に他ユーザーが見られないようにしておくべきです。
もしconfig.hでCRYPT_OPER_PASSWORDを定義した場合、cryptされたパスワードを書いて下さい。
その場合、もしよかったらircdディレクトリの下にあるcryptディレクトリの中に
あるプログラムを使って下さい。
「ニックネーム」にはサーバーオペレータとして接続を許可するニックネームを書きます。
但しこのニックネームでなければサーバーになれないということではありません。
詳しくはOPERコマンドを見て下さい。
「ポート」は現在使用しません。空欄にして於いて下さい。
「クラスナンバー」にはY行に書かれたクラスナンバーを書いて下さい。
ここで利用できるユーザーの最大数が決まります。
適切なI行のためにI行で使用するクラスナンバーより小さい番号を使用した方が良いでしょう。
まあ、あんまりこだわらなくても良いでしょう。
7.制限の行(R) -- Restrict lines [推奨せず]
クライエントを接続するかしないか外部のプログラムを使って制限します。
但し、config.hでR_LINESを定義している必要があります。
また、プログラムには(USERコマンドによって与えられた)ユーザー名、ホスト名、
identサーバーのリプライの三つのパラメータが与えられます。
なお、プログラムからの返答は"Y <メッセージ>"(接続を許可します。メッセージは破棄されます。)
か"N <メッセージ>"(接続を拒否をします。メッセージはその理由として表示します。)
でなければなりません。
形式:
R:<ホストネーム>:<プログラムのフルパス>:<ユーザー名>:::
例:
R:csl.bu.edu:/home/hrose/bin.sun3/sun3access:*:::
「ホストネーム」には対象とするホスト名を書いて下さい。
「プログラムのフル・パス」には使用するプラグラムのfull-path、絶対パスを書いて下さい。
なおもちろんのことircdプロセスのユーザーで実行できる必要があります。
「ユーザー名」には対象とするユーザー名を書いて下さい。
8.締め出されたアカウント(K,k) -- Excluded accounts [随意選択]
"ユーザー名@ホスト名"の形式でそのサーバーから締め出すユーザーを指定します。
なおk行では「ユーザー名」の変わりに「認証」を使います。identサーバーのリプライという点では
同じですが、「認証」では本来認めないUNIX以外のタイプのリプライも認めます。
但しその場合ユーザー名の前に"-"を付けます。
これは自分のサ−バーにのみ適用されます。だから他のサーバーでは
(そのサーバーでも書かれていない限り)、IRCに接続できます。
形式:
K:<ホストネームまたはIPアドレス>:<対象時間またはコメント>:<ユーザー名>:<ポート>: (通常の規制)
or
k:<ホストネームまたはIPアドレス>:<対象時間またはコメント>:<認証>:<ポート>: (UNIX以外も視野に入れた規制)
例:
k:*.alaska.edu::*FSSPR:0
K:acs*.bu.edu:0800-1200,1300-1700:*:0
K:*foo.edu:Use server irc.bar:*:0
K:*toto.fr:Use port 6666:*:6667:
k:129.69.*:identd (rfc1413) required:unknown::
k:=129.69.*:identd (rfc1413) required:unknown::
「ホストネームまたはIPアドレス」には接続を拒否するホスト名またはIPアドレスを書いて下さい。
ホストネーム、またはIPアドレスを書きます。もちろん*(ワイルドカード)も使用可能です。
同様にIPアドレスのbitmask(例えば127.18.*を127.18.0.0と書く)も使えます。
IPアドレスでの指定の場合、正引きできるできないに関わらずIPアドレスで判定します。
正引きできないときのみの判定にしたい場合は、"="を前に付けて下さい。
「対象時間またはコメント」には通常、接続を拒否する理由として使うメッセージを書きます。
もちろん空白にした場合はデフォルトの文が使われます。
また、"0800-1200,1300-1700"の様にして接続する時間を限定することができます。
(例ではサーバーマシーンのローカルタイムでAM8:00〜PM12:00及び
PM1:00〜PM5:00の間接続できません。)
なお(このlineがアクティブなうちに)接続していても時間が来れば追い出されます。
その時は五分前に警告が来ます。
「ユーザー名」には対象とするユーザー名を書いて下さい。
identサーバーからのリプライを利用します。*(ワイルドカード)も使えます。
ちなみにidentサーバーのタイプがUNIX以外の時はそのリプライは
使わずにUSERコマンドのパラメータを使います。
「認証」には対象とするユーザー名を書いて下さい。
ただしこの欄では必ずしもUNIXタイプであるidentサーバーのリプライを必要と
しません。但しその場合はリプライの前に"-"を付け足します。
後は「ユーザー名」と同じです。
「ポート」には対象とするポートを書いて下さい。
なお空欄や0を書いた場合は全てのポートで禁止します。
9.サーバー接続(C,c,N) -- Server connections [Network環境製作]
[C,c] このC行で自分のサーバーがどのサーバーに接続しに行くか設定します。
c行を用いると行き交うデータを圧縮する形式(zlibライブラリで圧縮)でリンクを張ります。
そのためにはconfig.hでZIP_LINKSを定義してなければなりません。
なお接続先のサーバーが圧縮形式でのリンクを拒否したり、サポートしていなかった場合は
自動的に非圧縮形式でリンクを張ります。またこのC行だけでは正しくリンクを張れません。
下記のN行とペアで機能します。常にC行とN行はペアで記載して下さい。
その上、C行は3つ以下にとどめて於いた方が無難です。クライアントへの遅延や
ネットワークの余分なトラフィック増加など問題が多々起こるためです。
また複数文書いた場合、より下に書かれたサーバーから優先して接続しに行きます。
形式:
C:<ホストネームまたはIPアドレス>:<パスワード>:<サーバー名>:<ポート>:<クラスナンバー> (非圧縮リンク)
or
c:<ホストネームまたはIPアドレス>:<パスワード>:<サーバー名>:<ポート>:<クラスナンバー> (圧縮リンク)
例:
下記(N行の欄)参照
「ホストネームまたはIPアドレス」には接続しに行くホスト名またはIPアドレスを書いて下さい。
"username@"をホスト名やIPアドレスの前に付けてidentサーバーを用いたマッチングも利用できます。
「パスワード」には接続先の管理人と相談して決めたパスワードを書きます。
此処にあるパスワードが相手のサーバーのN行に書かれているパスワードと一致する必要があります。
またペアとなっているN行のパスワードとは違うものにした方が好ましいでしょう。
「サーバー名」には相手のIRC空間でのサーバー名を書いて下さい。
相手のM行に書かれた「サーバー名」を書けばよいでしょう。
但し、後に述べるN行で「ドメインマスク」を使用してサブドメインの集約を
行っていた場合、M行に書かれた「サーバー名」を書かずに
集約されたサーバー名を使用して下さい。
「ポート」には接続しに行くポートを書いて下さい。
但しM行に記載したUDP-pingの為のポートと異なる場合、
<接続しに行くポート>.
の形式で書いて下さい。なお空欄にした場合、こちらからは自動接続しに
行かないで、相手からの接続を待ち続けるようになります
「クラスナンバー」にはY行に書かれたクラスナンバーを書いて下さい。
[N] このN行でどのサーバーの接続を許可するか決めます。
またこのN行だけでは正しくリンクを張れません。上記のC行とペアで機能します。
常にC行とN行はペアで記載して下さい。
形式:
N:<ホストネームまたはIPアドレス>:<パスワード>:<サーバー名>:<ドメインマスク>:<クラスナンバー>
例:
C:hrose@cs-ftp.bu.edu:bigspark:cs-ftp.bu.edu:6667:2
N:hrose@cs-ftp.bu.edu:bigalpha:cs-ftp.bu.edu::2
C:irc-2.mit.edu:camelsrk00l:irc-2.mit.edu::2
N:irc-2.mit.edu:andsoarellamas:irc-2.mit.edu:1:2
c:irc-2.mit.edu:camelsrk00l:irc-2.mit.edu:6667.6668:2
N:irc-2.mit.edu:K6yiH\i87f5:irc-2.mit.edu:1:2
「ホストネームまたはIPアドレス」には接続しに行くホスト名またはIPアドレスを書いて下さい。
"username@"をホスト名やIPアドレスの前に付けてidentサーバーを用いたマッチングも利用できます。
「パスワード」には接続先の管理人と相談して決めたパスワードを書きます。
此処にあるパスワードが相手のサーバーのC行に
書かれているパスワードと一致する必要があります。
またペアとなっているC行のパスワードとは違うものにした方が好ましいでしょう。
但し、config.hでCRYPT_LINK_PASSWORDを定義してコンパイルしている場合は、
パスワードをcryptして、暗号化されたパスワードを書くようにして下さい。
その場合、もしよかったらircdディレクトリの下にあるcryptディレクトリの中に
あるプログラムを使って下さい。
「サーバー名」には相手のIRC空間でのサーバー名を書いて下さい。
相手のM行に書かれた「サーバー名」を書けばよいでしょう。
但し、「ドメインマスク」を使用してサブドメインの集約を
行っていた場合、M行に書かれた「サーバー名」を書かずに
集約されたサーバー名を使用して下さい。
「ドメインマスク」には数字を書き込みます。
この数字を使ってサブドメインの集約を行います。
どういうことかと言いますと、世界各地に広がっている全てのサーバーが
サーバー名などネットに流すと余計な負荷がかかってしまいます。
そのため各地域ごとで一つのネットを作り、他ネットとの繋がりを一つにして
他ネットからその地域のサーバーを見たとき、その入り口のサーバーしか
見えないようにすることが便利です。そのため、そのN行で記載した相手に対して
自分がどこそこの地域の入り口サーバーであることを名乗るためにこの欄が使われます。
例えばサーバー名がtolsun.oulu.fiの場合、「ドメインマスク」に1と書くとN行で書かれた
サーバーには、そのホスト名の一番最初のパーテションを*にして*.oulu.fiという
サーバー名であると広報し、*.oulu.fiにマッチするサーバーに接続する場合はtolsun.oulu.fi
が担当するという意味になります。
「ドメインマスク」を2にした場合はtolsun.oulu.fi→*.fiの様になります。
注意すべき事は*.fiというサーバー名を名乗りながらnic.funet.fiというサーバー名の
サーバーに接続できないということです。サーバー名が重なってしまうからです。
またこの機能を使う所はバックボーンがしっかりしていて、その地域内のサーバーにとって
便利の良いサーバーで有ることが重要なります。他にも既にそのサーバー名が使われていないか
ネットワーク全体を調べることが重要です。
「クラスナンバー」にはY行に書かれたクラスナンバーを書いて下さい。
10.自動接続の拒否(D) -- Deny auto-connections
自分のマシーンからの自動接続を規制します。
これは大きい複雑な状況のあるネットワークに繋げているときに役立つでしょう。
形式:
D:<否定されたサーバー名>:<否定されたクラスナンバー>:<サーバー名>:<クラスナンバー>:
例:
D:*.edu::*.fi::
D::2:eff.org:3:
「否定されたサーバー名」にはこの機能を作動させるための条件を
サーバー名のマッチングという方法で書きます。
此処に書かれたサーバーが同じIRC空間、ネットワークに有れば
このD行は機能します。*(ワイルドカード)も使用できます。
「否定されたクラスナンバー」にはこの機能を作動させるための条件を
クラスナンバーのマッチングという方法で書きます。
此処に書かれたクラスナンバーで繋がれたサーバーが同じIRC空間、
ネットワークに有ればこのD行は機能します。これは直接的に
繋がっていなくてもかまいません。
「サーバー名」にはD行が機能した場合にどのサーバーへの自動接続を
禁止するかサーバー名で書きます。*(ワイルドカード)も使用できます。
「クラスナンバー」にはD行が機能した場合にどのサーバーへの自動接続を
禁止するかクラスナンバーで書きます。此処に書かれたクラスナンバーで
繋がれたサーバーへの自動接続を禁止します。
これは直接的に繋がっていなくてもかまいません。
11.ハブ接続(H) -- Hub connections [随意選択]
ハブ"hub"として接続することを許可します。
ハブ自体はconfig.hのHUBで定義する物ですが、ハブを設定すると
複数のサーバーに接続することができるようになります。
独立したサーバーと接続するとき以外はH行を設定して下さい。
形式:
K:<サーバー名のマスク>::<許可するサーバー名>::
例:
H:*::cs-ftp.bu.edu::
H:*.mit.edu::irc-2.mit.edu::
「サーバー名のマスク」には許可したハブがどういうサーバーと繋がっていることを
許可するか書きます。なおホスト名ではなくサーバー名で書いて下さい。
また、*(ワイルドカード)も使えます。
「許可するサーバー名」にはハブとして接続を許可するサーバー名を書いて下さい。
また、*(ワイルドカード)も使えます。
12.リーフ接続(L) -- Leaf connections [随意選択]
リーフ"leaf"として接続することを強制します。
リーフというのは一つの他サーバーとしか接続してないということです。
他にも他サーバーのリンクツリーを制限することができます。
もしこの制限に歯向くようなことをしたら、そのサーバーとの接続を切ります。
形式:
L:<禁止するホスト名のマスク>::<サーバー名>:<リンクツリーの深さ>:
例:
L:::kaja.gi.alaska.edu::
L:::cm5.eng.umd.edu:1:
L:*.edu::*.au::
「禁止するホスト名のマスク」にはL行で制限するサーバーの接続を禁止する
サーバーのホスト名のマスクを書いて下さい。
つまり「サーバー名」で指定したサーバーが此処でマッチするサーバーと
接続しないよう制限するということです。*や?などのワイルドカードも使えます。
また空欄にした場合、*と同義になります。
つまり対象のサーバーをリーフとして制限すると言うことです
なお、SERVERコマンドが届く度に確かめます。
「サーバー名」にはL行で制限するサーバーのサーバー名を書いて下さい。
*(ワイルドカード)も使えます。
「リンクツリーの深さ」にはL行で制限するサーバーが接続するサーバーのリンクツリー
の深さを書きます。もし空白なら1と見なされます。1ならリーフであるよう制限されます。
0ならどことも接続するなということです。
SERVERコマンドが届く度にhopカウントを参考にしてその深さを調べます。
13.バージョンの制限(V) -- Version limitations [随意選択]
サーバープログラムのバージョンやコンパイルのオプションを元にして
接続してくるサーバーを制限します。
形式:
V:<バージョンのマスク>:<フラグ>:<サーバー名のマスク>::
例:
V:IRC/020901*::*::
V:*:*/D:*::
V:IRC/020902*:IRC/K:*.edu::
「バージョンのマスク」には禁止するサーバープログラムのバージョンを
書きます。*(ワイルドカード)も使えます。
例えば2.9.1なら020901となります。まあマイナーバージョンアップも
視野に入れて020901*とした方がよいでしょう。
また2.10系列から前に「サーバーのタイプ」を付けるようになりました。
なおircdではid、"IRC"となってます。区切りには/(スラッシュ)を使います。
「フラグ」にはircd/s_debug.cで定義されたフラグを書いて下さい。
もしVERSIONコマンドのリプライにここで指定されたフラグが書かれていたら
そのサーバーとの接続を拒否します。
例えばDを書くとDEBUGMODEを定義してコンパイルしたサーバーが
接続しにきても拒否します。KならOPER_KILLと言った感じです。
「バージョンのマスク」と同様に、2.10系列から「サーバーのタイプ」を
指定するようになりました。
「サーバー名のマスク」には対象とするサーバー名のマスクを書いて下さい。
*(ワイルドカード)も使えます。
14.締め出されたマシーン(Q) -- Excluded machines [推奨せず]
ある特定のサーバーを隔離します。これは同じIRC空間全てのマシーンに
同じQ行がないと隔離しようとするサーバーが接続してきたとき、IRC-netがバラバラになる
危険性があります。おおよその場合独立サーバーになってしまうでしょう。
仕組みとしては新しいサーバーが広報されてきたとき、もし新しいサーバーがこのQ行に
マッチしていたら、その広報してきたサーバーとのリンクをこちらから切るようになります。
決して軽々しく使わないで下さい!
形式:
Q::<隔離する理由>:<サーバー名>::
例:
Q::this server is too slow and lags the net:cm5.eng.umd.edu::
「隔離する理由」には隔離する理由を書いて下さい。
礼儀として当然のことでしょう。
「サーバー名」には対象とするサーバーのサーバー名を書きます。
15.サービス接続(S) -- Service connections [随意選択]
サービス"service"は普通のクライアントの全ての能力を持っていないけど
より活発的な方法で振る舞う能力を持っています。相互干渉するというより自動化された
クライアントと考えた方が良いでしょう。
簡単に説明するとサービスはチャンネルに入れませんし、大多数の人が使える
コマンドの一部も使えません。しかし特権を持ちflood controlに影響されません。
詳しくはdoc/SERVICE.txtを見て下さい。
形式:
S:<ホストネームのマスク>:<パスワード>:<サービスの名前>:<サービスのタイプ>:<クラスナンバー>
例:
S:eep.local.net:thisisapassword:EepInfo:0:1
「ホストネームのマスク」にはサービスとして接続を許可するホストの
IPやホストネームを書きます。*(ワイルドカード)も使えます。
「パスワード」にはSERVICEコマンドで使用するパスワードを書きます。
「サービスの名前」にはサービスで利用する名前を書いて下さい。
サービスはニックネームを持ちませんし、この名前はニックネームと違って
S行で設定しているもの以外に変えられません。
「サービスのタイプ」にはサービスのタイプを書いて下さい。
これでどういう特権を持つか規定します。なおタイプはircd/service_def.hの
中に書かれています。複数のタイプを持つときは足した和を書いて下さい。
「クラスナンバー」にはY行に書かれたクラスナンバーを書いて下さい。
16.サーバーの斡旋(B) -- Bounce server [推奨]
クラスの人数がいっぱいかサーバー自体がいっぱいか認証に
失敗したクライアントを他サーバーへ斡旋します。
形式:
B:<クラスナンバー又はホスト名のマスク>::<サーバーのホスト名>:<ポート>:
例:
B:-1::irc.stealth.net:6667:
B:*.fi::irc.funet.fi:6667:
「クラスナンバー又はホスト名のマスク」には対象とするクライアントを
クラスナンバー、ホスト名、IP、IPのbitmaskで指定します。
*(ワイルドカード)も使用できます。
なお"All connections in use"の様にエラーが出る場合は
サーバーが完全にいっぱいということでサーバーはクライアントのホストも
クラスも知ることができません。こういう場合は空欄にして下さい。
「サーバーのホスト名」には斡旋先のサーバーのホスト名を書いて下さい。
「ポート」には斡旋先のサーバーのポートを書いて下さい。
17.ローカルのデフォルトサーバー(U) -- Default local server [必要なし]
サーバープログラムの動いているホストのクライアントの標準のサーバーを指定します。
このU行は互換のためにあるだけで使わないで下さい。
その代わりconfig.hの中のUPHOSTの定義を使用して下さい。
形式:
U:<ホストネームまたはIPアドレス>:<パスワード>:<サーバー名>:<ポート>
例:
U:128.214.5.6::tolsun.oulu.fi:6667
U:tolsun.oulu.fi::tolsun.oulu.fi
「ホストネームまたはIPアドレス」にはサーバーのホスト名あるいはIPアドレス
を書いて下さい。
「パスワード」にはサーバーのパスワードを書きます。
「サービス名」にはサーバーのIRC空間におけるサーバー名を書きます。
「ポート」にはサーバーのポートを書きます。省略した場合は標準のポート6667が使われます。