Debian 7でUnrealIRCdチャットサーバーを実行する方法

前書き

この記事では、Unreal IRCデーモン(IRCd)を使用してIRCサーバーを構築、インストール、および構成する方法を学習します。ユーザーはIRC(インターネットリレーチャット)を介して接続できます。 IRCは、ユーザーがネットワーク経由で送信されるメッセージを介してリアルタイムでチャットできるようにするプロトコルです。

特に、このチュートリアルでは* Debian 7 x64 *ドロップレットを使用します。

ステップ1-ircdユーザーの作成

新しいDebian 7 x64ドロップレットを起動したばかりで、rootとしてログインしていると仮定します。 現在rootユーザーでない場合は、次を使用してrootに切り替えます。

su

外部のユーザーが見ることができるデーモンやサービスと同様に、セキュリティとパフォーマンスの両方の理由から、UnrealIRCdをrootとして実行しないことが最善です。 このため、まずデーモンを実行するためのユーザーを作成することから始めます。

adduser ircd

プロンプトでユーザーの新しいパスワードを作成します。 XKCDのパスワード作成方法を使用して作成したパスワードをお勧めします。つまり、3〜5個のかなり一般的な辞書の単語を、長さが十分なエントロピー(強度)コンピューターが推測するのを困難にするが、人間が覚えやすいパスワード。

パスワードの作成を求められない場合は、次を入力します。

passwd ircd

次に、パスワードを作成するように求められます。

ユーザー特権の付与

次に、サーバーに_sudo_が付属していることを確認する必要があります。sudo_は、UNIXベースのシステム(Linuxなど)向けの一般的なユーティリティです。 慣れていない人のために、_sudo_コマンドを使用すると、ユーザーはルート(_su_または_superuser)特権でコマンドを実行できます。したがって、名前- s uper u ser * do *-前提条件ライブラリ。

Debian 7にはデフォルトでsudoがインストールされています。 インストールする必要がある場合は、次を入力します。

apt-get install sudo

sudoがインストールされたことがわかったので、先ほど作成した* ircd *ユーザーをsudoグループに追加して、sudoコマンドへのアクセスを許可する必要があります。

これを行うには、次のコマンドを実行します。

adduser ircd sudo

ユーザー作成手順はこれで完了です! これで、新しいユーザーに簡単に切り替えることができます。

su ircd
  • ircd *ユーザーのホームディレクトリに移動します。

cd ~

ステップ2-前提条件のインストール

UnrealIRCdをインストールする前に、不足しているライブラリがいくつかあります。 これらには、安全な接続に使用されるライブラリと、UnrealIRCdを構築するために必要なコンパイラおよびライブラリが含まれます。

これらのパッケージは、* make gcc build-essential openssl libcurl4-openssl-dev zlib1g zlib1g-dev zlibc libgcrypt11 、および libgcrypt11です。 -dev *。

これらをDebianにインストールするには、APTを使用します。 次のコマンドを実行して、パッケージマネージャーを最新の状態にします。

sudo apt-get update

次のコマンドを実行して、前提条件をインストールします。 プロンプトが表示されたら入力します。 これらのパッケージの一部はすでにインストールされていることがあります-執筆時点では、zlib1gとopensslはすでにDebianに含まれていますが、完全性のためにここにリストされています。

sudo apt-get install make gcc build-essential openssl libcurl4-openssl-dev zlib1g zlib1g-dev zlibc libgcrypt11 libgcrypt11-dev

パッケージマネージャーがすべてのパッケージをダウンロードしてインストールするのに時間がかかることがあるので、今はおやつをつかむのに良い時間です。

これが完了したら、UnrealIRCdをダウンロードしてインストールし、ビルドプロセスを開始できます。

ステップ3-UnrealIRCdのインストール

UnrealIRCdはデフォルトではDebianや主要なディストリビューションのパッケージとして利用できないため、ソースから手動でダウンロードしてビルドします。

Debianに組み込まれているwgetユーティリティを使用して、UnrealIRCdのソースパッケージをダウンロードします。 wgetをダウンロードする必要がある場合は、次のコマンドを実行します。

sudo apt-get install wget

インストールを続行するには、UnrealIRCdのWebサイトからダウンロードリンクを取得する必要があります。 UnrealIRCdの公式ダウンロードページにアクセスして、最新の安定したソースブランチをダウンロードしてください。

ダウンロードページが表示されると、「ここをクリックしない場合、ダウンロードは5秒で開始されるはずです」というリンクが表示される場合があります。これは、Unrealソースコードを含むファイルへのリンクです。 * wget *で使用するURL。

執筆時点では、URLは* http://unrealircd.org/downloads/Unreal3.2.10.4.tar.gz*です。

  • ircd *ユーザーとしてログインしながら、ホームディレクトリにいることを確認しましょう。

cd ~

それでは、ソースコードをダウンロードしましょう。 警告: `+-no-check-certificate +`フラグを使用することは、このファイルを取得する安全性の低い方法です。 速度に対するセキュリティが目標の場合は、別の方法を使用する必要があります。

wget --no-check-certificate http://unrealircd.org/downloads/Unreal3.2.10.4.tar.gz

ソースコードを独自のフォルダーに抽出します。

tar xzvf Unreal3.2.10.4.tar.gz

これで、新しいディレクトリに切り替えることができます。

cd Unreal3.2.10.4

そして最後に、ビルドプロセスを開始しましょう。 ソースパッケージに組み込まれているスクリプトを使用します。

./Config

リリースノートを読み、* Enter *を押してスクロールを続けます。 質問を見逃さないように、下部のパーセント値に注目してください。 リリースノートが終了し、configureスクリプトが開始されると、UnrealIRCdが質問を開始します。

What directory are all the server configuration files in?

これはデフォルトのままにしておくことができます。 * Enter *を押して続行します。

What is the path to the ircd binary including the name of the binary?

これもデフォルトのままにします。 * Enter *を押します。

What should the default permissions for your configurations files be?  (Set this to 0 to disable)

もう一度、デフォルトのままにします。 次の質問は重要です。

Do you want to support SSL (Secure Sockets Layer) connections?

回答:

デフォルトでは、UnrealIRCdの構成スクリプトはSSL接続をサポートしませんが、ここでYesと入力すると有効になります。 これが、OpenSSLを以前にインストールした理由です。

次に、システム上のOpenSSLへのパスの入力を求められます。 前にAPTでこれを処理できるため、デフォルトのままにしておくことができます。

If you know the path to OpenSSL on your system, enter it here. If not
leave this blank (in most cases it will be detected automatically).
  • Enter *を押します。

次の質問は、ドロップレットでIPv6を使用している特定のユーザーにとって重要です。

Do you want to enable IPv6 support?

Dropletを最初にセットアップするときにIPv6を有効にした場合にのみ、この質問に「はい」と答えてください。 DropletでIPv6が有効になっていない場合、これをデフォルト(「いいえ」)のままにして、Enterキーを押します。

次の質問は、IRCネットワーク内の複数のリンクサーバーでIRCデーモンを操作するユーザーに関するものです。 Ziplinksは、送信前にデータを圧縮することにより、IRCサーバー間でデータを交換する際の帯域幅を節約するための基本的な手段です。 *はい*と答える必要はありませんが、行うことをお勧めします。 この記事に記載されていないUnrealIRCdの構築で問題が発生した場合は、もう一度実行して、この質問に「いいえ」と答えてください。

Do you want to enable ziplinks support?

回答:

パスについて尋ねられたら、* Enter *を押します。

If you know the path to zlib on your system, enter it here. If not
leave this blank

次のいくつかの質問はすべて、* Enter *を押すことでデフォルトで回答できます。

Do you want to enable remote includes?
Do you want to enable prefixes for chanadmin and chanowner?
What listen() backlog value do you wish to use?
How far back do you want to keep the nickname history?
What is the maximum sendq length you wish to have?
How many buffer pools would you like?
How many file descriptors (or sockets) can the IRCd use?
Would you like to pass any custom parameters to configure?

質問への回答が終了すると、構成スクリプトはビルドプロセスのソースディレクトリの準備を開始します。 これには少し時間がかかる場合がありますので、お気軽に少し休憩してください。

最終的に、IRCdのSSL証明書を生成するように求められます。 適切な認証機関によって発行されたSSL証明書を既にお持ちでない限り、おそらくこのオプションをデフォルト(「はい」)のままにしておくことをお勧めします。これがこのチュートリアルで行うことです。

国、州、都市、組織など、サーバーに関する情報を求められます。 ここで意味のあるものなら何でも入力できます。 名前の入力を求められたら、サーバーのドメイン名を入力する必要があります。

  • Enter を押して続行します。 署名済み証明書に関する簡単なメッセージが表示されます。 もう一度 Enter *を押すと、構成プロセスが完了します。

ステップ4-UnrealIRCdの構築

これがすべての最も簡単なステップです! *〜/ Unreal [ダウンロードしたバージョン] *ディレクトリに移動します:

cd ~/Unreal3.2.10.4

作ろう!

make

ビルドプロセスが開始されます。 これは最も長いステップです。最後の2つの休憩中にお茶やコーヒーを作っていない場合は、今が間違いなくそうです。ビルドプロセスを完了するには数分かかります。

ステップ5-UnrealIRCdの構成

ビルドプロセスが完了したら、新しいUnrealIRCdサーバーを構成する準備ができました。 構成ファイルは、Cのような構文で記述されています。 長いですが、かなり簡単です。

サンプル構成ファイルのコピーを作成します。

cp ~/Unreal3.2.10.4/doc/example.conf ~/Unreal3.2.10.4/unrealircd.conf

これにより、英語のサンプル設定ファイルがルートUnrealディレクトリにコピーされます。 サーバーが英語以外の言語で動作する場合は、ターゲットオーディエンスが使用するものには何でも2文字の言語コードを使用できます。例えば *。/ doc.example.fr.conf *執筆時点では、ドイツ語、スペイン語、フランス語、ハンガリー語、オランダ語、ロシア語、トルコ語が英語とともにサポートされていますが、このチュートリアルでは英語のサンプル構成を取り上げます。

好みのテキストエディターで構成ファイルを開きます。

nano ~/Unreal3.2.10.4/unrealircd.conf

それでは、好みに合わせて構成ファイルの編集を始めましょう。 構成ファイルを上から下に順番に処理するため、セクションの順序が少し変わっている場合があります。 私たちの目的にとって、上から下へ行くことが最も簡単な方法です。

この構成ファイルにはコメントアウトされた大きなセクションがあり、ほとんどのユーザーに影響を与えない一部の設定は詳細には表示されません。

モジュール

UnrealIRCdは_modular_ IRCdであると宣伝されています。これは、ソースコードベース全体を再コンパイルし、その場でロード/アンロードすることなくデーモンの機能を作成できるからです。 したがって、一部のコア機能は、Unrealの2つのストックモジュール、およびモジュールに保存されます。 次の2行を探します。

// loadmodule “src/modules/commands.so”;
// loadmodule “src/modules/cloak.so”;

Cのような構文に慣れていない人のために、ダブルスラッシュ( + // +)は、行のスラッシュの後に来るものをすべて無視するようにUnrealに指示します。 マテリアルの周りに「+ / * 」と「 * / +」を追加することにより、複数行をコメントアウトできます。

2つのモジュールのコメントを外して、次のようにします。

/* FOR *NIX, uncomment the following 2lines: */
loadmodule "src/modules/commands.so";
loadmodule "src/modules/cloak.so";

me \ {}-サーバー名

`+ me {} +`というラベルのセクションが表示されるまで、構成ファイルをスクロールし続けます。 最初にコメントアウトされた例のセクションがあります。 コメントのないものが必要です。

過去にMラインと呼ばれていたこのセクションは、ユーザーが接続するときのサーバーに関する特定の詳細を定義します。

  • name *をサーバーのホスト名に設定します。

  • info *フィールドには、「MyDomain IRC」など、IRCサーバーの正式な名前を含める必要があります。名前と情報フィールドは引用符で囲む必要があります。

複数のIRCサーバーをリンクする予定がない限り、* numeric *フィールドはデフォルトの番号のままにしてください。 複数のサーバーを使用する場合、ネットワーク内のすべてのサーバーがこのフィールドで異なる値を持っていることを絶対に確認する必要があります。 これは、内部のUnrealIRCdに対する一意の識別子として機能します。

me
{
       name "";
       info "";
       numeric 1;
};

admin \ {}-管理者の連絡先情報

次のセクションは、 `+ admin {} +`ブロックまたはa:lineです。 再び、コメントされていない例に達するまでスクロールします。

これには、サーバー管理者としての連絡先情報が含まれている必要があります。 ここには好きなだけ置くことができますが、少なくとも1行は必要です。

ほとんどのユーザーは、1行目に本名(例では「Bob Smith」)、2行目にニックネーム(例では「bob」)、3行目に電子メールアドレスを配置します。 唯一の要件は、これらの各行を引用符で囲み、セミコロン( +; +)で終わることです。

admin {
       "";
       "";
       "";
};

これで、単純な連絡先情報を超えて、より具体的なサーバー関連の構成に進むことができます。

クラス\ {}-クライアントとサーバーの接続設定

次のブロックである `+ class {} +`ブロックは、サーバーがネットワークに接続する「クライアント」(ユーザー)、およびネットワークにリンクする「サーバー」(IRCサーバーをサーバーのネットワーク)。

通常、これらの設定は、ほとんどの小規模ネットワークシナリオでデフォルトのままにしておくことができます。 ただし、大規模なネットワーク操作を実行している場合は、これらのブロックの値がどのように機能するかについてのドキュメントを読むことをお勧めします。

デフォルト設定で問題ありません:

class           clients
{
       pingfreq 90;
       maxclients 500;
       sendq 100000;
       recvq 8000;
};

class           servers
{
       pingfreq 90;
       maxclients 10;          /* Max servers we can have linked at a time */
       sendq 1000000;
       connfreq 100; /* How many seconds between each connection attempt */
};

許可\ {}-サーバーパスワード、例外

`+ allow {} +`ブロックは、ネットワークへの接続を許可するユーザーを設定します。

一般に、誰でも参加できる大規模なオープンIRCサーバーの場合、これはデフォルトのままにしておく必要があります。

プライベートまたはパスワードで保護したいサーバーの場合、2番目の例の `+ allow {} `ブロックに示すように、最初のグローバルブロックに行を追加する必要があります。 最初の ` allow {} `ブロックには、クライアント接続のグローバル設定があります。 と値が両方とも「 * @ * +」に設定されていることがわかります。これは、「どこからでも誰でも」という意味です。

これにより、接続時にユーザーにパスワードの入力を求めることができます。

allow {
       ip             *@*;
       hostname       *@*;
       class           clients;
       maxperip 5;

};

/* Passworded allow line */
allow {
       ip             *@255.255.255.255;
       hostname       *@*.passworded.people;
       class           clients;
       password "f00Ness";
       maxperip 1;
};

異なるIPまたは他の接続パラメーターで許可設定を微調整する必要がない場合は、2番目の* allow *ブロックをコメント化することもできます。

次のブロックである `+ allow channel {} +`ブロックは、設定ファイルで後から設定された制限から除外されるチャンネルまたはチャットルームの種類を定義します。

ちょっとした説明:後のブロックで、禁止するチャネルまたはチャネル名のキーワードを定義できます。このブロックにより、禁止の免除を定義できます。 通常、特別な場合を除き、これをそのままにしておくことができます。構成例では、これがどのように機能するかを示しています。

   allow channel {
       channel "#WarezSucks";
       class "clients";
   };

この例では、構成ファイルの後半のワイルドカード文字列「+ * warez * +」に一致するチャネルが制限されているにもかかわらず、サーバーがすべてのクライアントに#WarezSucksチャネルへのアクセスを許可します。

特定のチャネルを禁止し、他の特定のチャネルは禁止しないという特定のケースがない限り、これを問題なくそのままにしておくことができます。

oper \ {}-オペレーター設定

次のブロックは間違いなく最も重要なものの1つです。+ oper {} + `ブロック、または + o:line + `は、サーバーの所有者またはほとんどのユーザーが_IRCop_と呼ぶ資格情報を定義します。

このセクションを注意深く読んでください。すべてを正しく行う必要があるためです。

`+ oper {} +`ブロックは、あなたと他の特権ユーザーがIRCopとして実行できることを定義します。 これは、あなた自身を含めて管理者が定義される場所であり、このため、いくつかの選択肢があります。 ただし、ここでは、サンプルブロックから始めます。

設定ファイルには現在、ユーザー名が「+ bobsmith 」のサンプル「 oper {} 」ブロックが含まれています。 ただし、これを完全に削除して、独自の ` oper {} +`ブロックに置き換えることをお勧めします。 サーバーでオペレーターとして使用するユーザーごとに新しいブロックを追加する必要があります。

以下に、設定ファイルにコピーして貼り付けることができるo:lineの例を示します。 で示されている値は、ユーザーが変更するものです。

oper  {
   class clients;
   from {
       userhost *@*;
   };
   password "";
   flags {
       global;
       netadmin;
       can_gkline;
       can_gzline;
       can_zline;
       can_kline;
       can_unkline;
       can_restart;
       can_die;
       can_rehash;
   };
   swhois "";
};

これらの各項目の説明は次のとおりです。

  • 以前に「クライアント」または「サーバー」以外のクラスを指定した場合、このユーザーがどのような種類のオペレーターであるかを定義します。 これを変更する必要はありません。

  • `+ from {} `サブブロックには、このo:lineを使用できるホスト名( ` userhost +`で指定)が含まれます。 一般に、ほとんどのクライアント(自分を含む)が動的IPアドレスを持ち、したがって常に変化するホスト名を持っているため、これを_ @ _のままにしておくことができます。

  • サーバーに対して自分自身をオペレーターとして識別するために使用するパスワードを定義します。 パスワードは、文字列リテラルと同様に、引用符で囲む必要があります。

  • `+ flags {} +`サブブロックには、指定されたIRCopが演算子として識別されたときに持つ特権が含まれます。 http://www.unrealircd.com/files/docs/unreal32docs.html#operblock [公式ドキュメント]には、これらの各特権インジケーターの機能のリストがありますが、基本的なアイデアを提供するためにそれらをすぐに調べます。何を期待するのか。

  • このIRCopがすべてのサーバーでIRCopと見なされるかどうかを定義します。 または、 `+ local `を使用できます。この場合、o:lineが有効になっているサーバーに接続しているユーザーにのみ影響しますが、独自のo:lineの場合は、 ` global +`を使用する必要があります。

  • ユーザーがオペレーターのヘルプを要求したときのIRCopのレベル(または「ランク」)を定義します。 「+ netadmin 」が最高で、「 servicesadmin 」、「 admin 」、「 coadmin +」、ランクインジケータなしの順になります。

  • 、、、、およびすべては、問題のあるユーザーを削除する必要がある場合に特定の種類のユーザー禁止を適用できるように特権を定義します。 IRCの用語では、ak-line` は、回線が適用されるサーバーへの接続の禁止を指します。 A + `z-line` +は、他のタイプの非Unrealサーバーではa +` g-line` +とも呼ばれ、k-lineに似ていますが、ネットワーク上のすべてのサーバーに適用されます(サーバーにローカルに保存されます)禁止が適用されます)。 A + `gz-line` + and +` gk-line` +はすべて同じですが、それぞれの-lineはネットワーク内のすべてのサーバーに適用されます-そのため、禁止がサーバーのリンク解除またはネットワークからの切断に適用される場合、禁止はまだアクティブであると見なされます。 `can_unkline`を設定すると、これらの禁止を削除できます。

  • サーバーに/ RESTARTコマンドを送信してIRCdを再起動し、プロセス内のすべてのユーザーを切断することを許可することを指定します。

  • / DIEコマンドをサーバーに送信して、IRCdの実行を停止し、すべてのユーザーを切断することを許可することを指定します。

  • / REHASHコマンドの送信を許可することを指定します。これにより、現在アクティブな構成が再ロードされ、サーバーを再起動せずに変更を加える必要がある場合に役立ちます

  • 最後に、このオプションは、ユーザーがオペレーターとして識別されている間にユーザーが/ WHOISを実行したときに表示する特別なメッセージを指定します。 この行は完全に省略できますが、「これは何を見ていますか?」のような面白いメッセージを出す機会としてこれを使用したいです。

IRCopsになりたいすべてのユーザーに対応するために、必要に応じて上記のo:lineを複製してください。 一般に、小規模ネットワークでは1〜2人のオペレータのみが必要です。ただし、ネットワークの成長に合わせてo:linesを追加して、ユーザーのチェックを続ける必要があると感じるかもしれません。

リッスン\ {}-IP、ポート、およびSSL

o:lineがセットアップされたので、構成のさらに重要な部分に進むことができます。 `+ listen {} +`ブロックでは、ユーザーが接続できるポートを設定できます。

デフォルト設定は、ほとんどのサーバーで問題ないはずです。

listen      *:6697
{
   options
   {
       ssl;
       clientsonly;
   };
};

listen *:8067;
listen *:6667;

各_listen_宣言の「:」の前にある「+ * +」は「すべて」を意味します。これは、UnrealIRCdをバインドするIPアドレスに置き換えることができます。 サーバーに複数のIPがある場合、アドレスごとに個別の_listen_宣言が必要です。

ただし、ほとんどの目的では、単に「+ listen *:6667+」を使用します。「+ * 」ワイルドカードは、「:+ 、この場合、ポート + 6667 + `。

注意: UnrealIRCdでIPv6アドレスをサポートするには、上記のビルド手順でIPv6サポートを使用してコンパイルし、DropletがIPv6接続をサポートする必要があります。 ただし、IPv6アドレスを指定する場合は、デーモンがIPとポートを区別できるように、アドレス自体を[括弧]で囲む必要があることに注意してください。

listen [fd3a::a1c9:b311:985e]:6667

+ options {} +`サブブロックでは、 `+ ssl +`フラグはサーバーがSSL接続を許可するかどうかを定義します。 (+ serversonly + `とは対照的に) + clientsonly + `フラグを使用すると、このポートがクライアント専用かサーバー専用かを指定できます。 それ以外の場合、デフォルトでは、クライアントとサーバーの両方がこのポートに接続できます。 `+ clientsonly +`設定は問題ありません。

注: UnrealIRCdを最初に起動するときに「使用中のアドレス」エラーが表示された場合、「+ * +」ワイルドカードをドロップレットのIPアドレスに置き換える必要があります。バインドするプライマリIPを推測できます。

次のブロック `+ link {} +`は、デフォルト設定のままにしておくことができます。 このブロックは、2つのサーバーを接続してIRCネットワークを形成するときに使用されますが、このチュートリアルでは取り上げません。

link            hub.mynet.com
{
       username        *;
       hostname        1.2.3.4;
       bind-ip         *;
       port            7029;
       hub             *;
       password-connect "LiNk";
       password-receive "LiNk";
       class           servers;
               options {
                       /* Note: You should not use autoconnect when linking services */
                       autoconnect;
                       ssl;
                       zip;
               };
};

ulines \ {}-特権を持つサービス

`+ ulines {} +`ブロックは、ネットワークに接続するサーバーに昇格した権限が必要なことを定義します。

一般に、_services_をIRCネットワークに接続するとき(サービスは、ニックネーム登録など、RFC標準で指定されていない機能のホスト全体をIRCに追加する特別なプログラムとデーモンのセットです)、これを使用してサービスを保証します特権は、通常のサーバーの特権を超えています。

通常のサーバーではこれを使用しないでください。 サンプルサーバーを独自のサービスサーバーに置き換えます。

ulines {
       ;
       ;
};

drpass \ {}-/ RESTARTおよび/ DIEのパスワード

次のブロック、「+ drpass {} +」は、IRCopがサーバーで/ DIEまたは/ RESTARTコマンドを使用することを選択した場合に設定するパスワードを定義します。

IRCopにこれを行う権限がある場合でも、IRCop権限が侵害された場合に備えて、このパスワードを設定することをお勧めします。 このように、侵害されたオペレーターアカウントは、単純なIRCopアクセスでサーバーをダウンさせることはできません。

drpass {
   restart "";
   die "";
};

ログ\ {}-ログ設定

次のブロックである `+ log {} +`ブロックは、デフォルト設定のままにすることができます。

必要に応じて、ログブロックに関する情報をhttp://www.unrealircd.com/files/docs/unreal32docs.html#logblock [ドキュメントで読む]で確認できますが、通常はそのままにしておいてかまいません。 UnrealIRCdは、ログ管理において非常に徹底しています。

エイリアス\ {}-コマンドエイリアス

次の一連のブロックである `+ alias {} +`ブロックには、新しいIRCサーバーと一緒にサービスをインストールする場合のコマンドエイリアスの定義が含まれています。

新しいサーバーでサービスを起動する予定がない場合は、これらのブロックをそのままにしておくことができます。

ファイル\ {}-構成ファイルを含める

調整する次のブロックは、 `+ files {} +`ブロックです。このブロックでは、構成に含める特定の特別なファイルを指定します。

これらのほとんどはコメント化されていますが、少なくとも以下を探してコメントを外し、指定する必要があります。 *警告:*存在しないファイルをここで指定すると、UnrealIRCdは起動しません。 設定の編集が終了したら、これらのファイルを作成する必要があります。 チュートリアルの後半で2つのファイルを作成します。

これらの2つのファイルを見つけてコメント解除します。

motd ircd.motd;

...

rules ircd.rules
  • `+ motd +`パラメーターは、サーバーMOTD、または接続時に、またはユーザーが/ MOTDコマンドを使用するときにユーザーに送信される_日のメッセージ_を指定します。

  • `+ rules +`パラメーターは、/ RULESコマンドによって提供されるサーバールールを含むファイルを指定します。 IRCは、過去にはそれほど合法ではないファイル共有などで悪名が高かったため、サーバーのルールを考慮することをお勧めします。

tld \ {}-国際的な例外

次のブロックである `+ tld {} `ブロックは、機能的には ` files `ブロックと同じですが、トップレベルドメインで示されるように、さまざまな国から接続しているユーザーに特別な例外を設定できます。 (例えば オーストラリアの場合は「 .au 」、ロシアの場合は「 .ru +」など)。

このセクションで作成したファイルは、適切な `+ files {} +`ブロックで見つかったファイルと同じくらい必要なので、このセクションをコメントアウトすることもできます。 このセクションをCスタイルのコメントで囲みます。

/*
tld {
   ...
};
*/

これにより、現在の構成には適用されなくなります。

次のセクションは完全にオプションです。ただし、構成は順番に説明しているため、少なくとも指示をざっと読んで、各ブロックの機能を理解することをお勧めします。

禁止\ {}-ニックネーム、IP、および名前の禁止

これらのセクションはすべてデフォルト設定のままにしておくことができます。

このセクションでは、サーバー設定を介して悪意のあるユーザーからサーバーを保護するさまざまな方法を見ていきます。

次のブロックである「+ ban {} +」ブロックでは、特定のニックネームの使用を禁止したり、特定のIPアドレスをサーバーへの接続から禁止したり、他のオプション全体を禁止したりできます。

個々の禁止ブロックには、両方ではなく、ニックネームまたはIPを選択する必要があることに注意してください。

ban nick/ip {
   mask [""/]; // Banned nick or IP
   reason "";
};

または、コメントアウトするだけです:

/*
ban nick {
       mask "*C*h*a*n*S*e*r*v*";
       reason "Reserved for Services";
};
*/

特定のユーザーを禁止するために、ニックネームやIPの代わりに実際のIRCホストマスク([email protected])をマスクフィールドで使用することもできることに注意してください。「+ ban」ではなく「+ ban user +」 ip + または + ban nick + `。

最後に、特定の `+ realname +`の使用を禁止することもできます。 ユーザーが最初にクライアントをセットアップするとき、ユーザー設定で「本名」を指定できます。 この設定はそれらに適用されます。 たとえば、Jackという名前のすべてのユーザーを禁止するには:

ban realname {
   mask "";
   reason "";
};

*注:*上記の禁止は、ユーザーがクライアント設定で自分の実名を変更することができることを考えると、いくぶん役に立たないが、完全を期すためにここにある。

次のような禁止例外を設定することもできます。

except ban {
   // My username is sigtau--don't ban me!
   mask
};

ユーザーに対して使用される「+ ban {} +」ブロックを確認したので、他のタイプの悪意のあるアクティビティに対して使用できる別のタイプのブロックを見てみましょう。

deny \ {}-非ユーザーアクティビティの制限

デフォルトの `+ deny {} +`ブロック設定は、ほとんどのサーバーでそのままにしておくことができます。

80年代、90年代、2000年代初期にIRCが非常に主流のプロトコルであったとき、仲介者の集中サーバーなしでIRCを介して直接通信したいユーザーに別の追加プロトコルが要求されました。 DCC(ダイレクトクライアントツークライアント)プロトコルが誕生し、ユーザーがチャットメッセージを相互に直接送信したり、ファイルを共有したりするなど、通常のIRCでは不可能なことを行えるようになりました。

しかし、DCCは、本質的に有害または悪意のあるファイルを識別するのに十分に精通していないユーザーの間で人気が高まったため、多くのセキュリティホールを開きました。 したがって、一部のIRCデーモンは、特定の種類のDCC要求を制限して、この種のアクティビティを防止し始めました。

UnrealIRCdはこれらのIRCデーモンの1つです。 `+ deny +`ブロックは、これらのタイプのファイル転送のブロックを含む、さまざまな制限タスクを実行できます。 たとえば、サンプル構成では、次のブロックがあります。

deny dcc {
   filename "*sub7*"; // note that this supports wildcards
   reason "Possible Sub7 Virus";
};

これにより、文字列「sub7」(以前のIRC時代の悪名高いhttp://en.wikipedia.org/wiki/Sub7[Sub7トロイの木馬]に基づく)を含むサーバーを介して送信されたDCC要求はすべて拒否されます。

`+ deny `ブロックは、ユーザーが特定のタイプのチャンネルに参加したり作成したりするのを防ぐこともできます。 以前、ユーザーが「#WarezSucks 」というチャンネルに参加できるようにした場所を覚えていますか? これは私たちが打ち消していた ` deny +`ブロックです。

deny channel {
   channel "*warez*";
   reason "Warez is illegal";
   class "clients";
};

これにより、ユーザーが名前に「warez」という単語を含むチャネルを作成できなくなります。

vhost \ {}-ユーザーのホスト名の非表示

ほとんどのサーバーはデフォルトの `+ vhost {} +`ブロックを使用できます。

一部の一般的なIRCサービスパッケージでは、構成ファイルを編集せずにこれを行うことができますが、ユーザーのホスト名を互いに非表示にする従来の方法は自動であり、ユーザーに登録されたニックネームを要求しませんでした。

これは、バウンサーを介して接続しているが、登録したくないニックネームを使用しているユーザー、またはサーバーに最初からサービスがない場合に便利です。

オプションの `+ vhost +`ブロックは、指定されたユーザーの偽のホスト名を設定します。 サンプル構成の1つのプリセットを見てみましょう。

vhost {
   vhost       i.hate.microsefrs.com;
   from {
       userhost *@*.image.dk;
   };
   login       stskeeps;
   password    moocowsrulemyworld;
};

これにより、ホスト名「*@*.image.dk」から接続するユーザーは、ホスト名を「*@i.hate.microsefrs.com」に設定できます。 通常、ユーザーは/ CHGHOSTコマンドを使用してこれを行います。

このコマンドの使用は、同じ機能を実行するIRCサービスパッケージの使用を支持して大幅に減少したため、ほとんどの目的で、適切に機能するIRCネットワークをセットアップするためにこのブロックがどのように機能するかを完全に理解する必要はありません。

set \ {}-ネットワーク構成

このセクションは*必須*です! このセクションを適切に設定しない限り、IRCデーモンは起動しません!

従っている場合、次のブロックは最後の、そして皮肉なことに、最も重要なブロックの1つである「+ set {} +」ブロックでなければなりません。

`+ set {} +`ブロックには、サーバーが操作するのに必要なたくさんの設定オプションが含まれています。 以下に、サンプルの設定のコピーと、各オプションの機能を説明するインラインコメントを追加します。 コメントが有用であると思わない限り、設定ファイルにコメントをコピーする必要はありません。

これらのオプションのすべてが必要なわけではありませんが、大部分を削除するのではなく、好みに合わせて編集してください。 複数のサーバーをリンクする場合、すべてのサーバーでこれらの一貫性と同一性を維持することをお勧めします。 サーバーをリンクする予定がない場合でも、これらのオプションを構成する必要があります。

これらのオプションのほとんどは、サンプルのドメイン名を独自のドメイン名に置き換えるだけです。

3つの `+ cloak-keys`に対して3つのランダムな値を生成する必要があることに注意してください。

set {
   network-name ""; // This is the name of the network reported to clients
                  // upon joining, and in many popular IRC clients, is the
                  // formal name used for tabbed view and logs.
   default-server ""; // Replace this with your server's domain--the
                    // daemon reports this to the client as being
                    // the network's proper hostname.
   services-server ""; // If you plan to add services to your
                          // IRC server, use the same domain as
                          // above, e.g. services.mydomain.com.
                          // Even if you aren't going to run
                          // services, you should do this anyway.
   stats-server ""; // Same as the above, except with stats
                    // stats servers.
   help-channel ""; // Set this to a be your network's official "help
               // channel" so that users have a place to go in case
               // they need help with something that only an IRCop
               // or server administrator could do.
   hiddenhost-prefix ""; // For anonimity purposes, UnrealIRCd masks users'
                // IP addresses using 'hidden hosts'--i.e. the host
                // user331.newyork.someISP.com is converted to
                // hiddenhost-3AB66E2-newyork.someISP.com.  This value
                // can be customized--change "rox" to whatever you
                // want (generally, alphanumeric lowercase) the hidden
                // host mask to be.  This is sometimes referred to as
                // "cloaking."
   cloak-keys {
       "";
       "";
       "";
   };

   // The above block are the random seeds used to generate unique cloaks for
   // each user without revealing their hostname to one another.  Generally, a
   // 10-20 character random alphanumeric mixed-case string will do.  Any online
   // password generator will work, or if you're in a pinch, just type whatever
   // alphanumeric string you want in all three string fields.
   //
   // THERE MUST BE EXACTLY THREE STRINGS.

   hosts {
       local       "";
       global      "";
       coadmin     "";
       admin       "";
       servicesadmin   "";
       netadmin    "";
       host-on-oper-up "";
   };

   // The above block can go mostly unchanged, apart from changing "roxnet.org"
   // to your domain of choice.  Setting host-on-oper-up automatically changes
   // the hostname of the IRCop user to be one of the above based on their rank
   // indicators in their o:line flags (`local`, `global`, `admin`, etc.).
};

設定の最後のブロックは、さらに別の `+ set {} +`ブロックである必要がありますが、今回は、オプションはネットワーク全体で一貫しているのではなく、このサーバーインスタンス専用です。

  • kline-addressメールを設定する必要があります。設定しないと、サーバーは起動しません。*

これらの設定の残りは、ほとんどのサーバーのデフォルトのままにしておくことができます。

set {
   kline-address ""; // When k-lines are applied, users are sometimes
                   // instructed to contact a particular e-mail for
                   // more information.  This should be that e-mail.
   modes-on-connect "+ixw"; // Leave these at default; however if you need to tweak
                // what modes users are automatically assigned upon
                // connecting, you can view the full mode reference
                // here: http://www.unrealircd.com/files/docs/unreal32docs.html#userchannelmodes
   modes-on-oper "+xwgs";   // These are modes that are applied when a user first
                // authenticates as an IRCop.  These are generally left
                // alone as well, but you can use the above link again
                // if you, for some reason, need to tweak these.
   oper-auto-join "#opers"; // This is the channel that IRCops are set to
                // be force-joined to as soon as they authenticate as
                // an IRCop.  You can set multiple channels by
                // delimiting them with commas: #chan1,#chan2,...
   maxchannelsperuser 10; // This is the maximum number of channels any one user
                  // session can be joined to.  You may raise or lower this
                  // as needed, however it must be greater than or equal
                  // to 1.
   options {
       hide-ulines; // This means any server specified in the ulines {} block
                // will not appear when a connected user uses /list.
                // IRCops automatically override this when they use /list.
       show-connect-info; // This allows a user to see messages such as
                  // "Looking up your hostname..." and "Requesting
                  // identd..." when they are connecting.  Generally a
                  // good idea to keep this.
   };

   anti-spam-quit-message-time 10s; // In the past, IRC servers have had issues
                    // with users joining and quitting with long
                    // quit messages in rapid succession to spam
                    // the server.  This helps combat that by
                    // specifying how long a user must be
                    // connected before the server will allow them
                    // to specify a message when using /QUIT.
                    // You can leave this as it is or change it.
   oper-only-stats "okfGsMRUEelLCXzdD"; // You should probably leave this alone,
                        // it defines which server stats are
                        // restricted to be viewable by IRCops only.
                        // Since there's too many stat modes to list
                        // for an article, here's a hint: once your
                        // server is up and running, use the /stats
                        // command (while authenticated as an IRCop)
                        // to get a list of character->stat pairs,
                        // which can be used to modify this list.
   throttle { // When users disconnect, their clients will try to reconnect them.
          // This prevents it from happening too quickly, potentially putting
          // the server under high load.
       connections 3; // The number of connections allowed...
       period 60s; // ...per x seconds, as specified here.
   };

   anti-flood { // This configures anti-flood settings to prevent users from
            // flooding the server with unnecessary commands.
       nick-flood 3:60; // Allows 3 nick changes per 60 seconds.

       // Some other useful options to read up on are away-flood for how
       // many times a user can use /AWAY, or unknown-flood-amount for
       // users that send unknown garbage data to the server.
   };

   spamfilter { // This controls settings for spam filtering and default ban info.
       ban-time 1d; // This is the default duration of a k-line/z-line ban when
                // automatically set by a spam filter.
       ban-reason "Spam/Advertising" // The message used by automatic bans.
       virus-help-channel "#help"; // The channel users can turn to if they
                       // need help with viruses such as those
                       // sent over DCC.
   };
};

それでおしまい!

設定ファイルへの変更を保存し、 `+ unrealircd.conf +`として保存されていることを確認します。 * CTRL-x を押し、次に y を押し、次に Enter *を押します。

おめでとうございます、設定ファイルの編集が完了しました! サーバーを起動する前に、いくつかの最終ステップを完了しましょう。

ステップ6-ircd.rulesおよびircd.motdの作成

UnrealIRCdを起動する前に、「+ irc​​d.rules 」と「 irc​​d.motd +」の2つのファイルを作成する必要があります。 シェルプロンプトで、次を入力してサーバールールのファイルを作成します。

nano ~/Unreal3.2.10.4/ircd.rules

これで、サーバールールをプレーンテキストとして入力できます。 / RULESコマンドを入力すると、ユーザーにこれらが表示されます。 このファイルの行は、IRCdによって自動的にラップされないように、80文字未満の長さにする必要があることに注意してください(インデントを使用する場合、これは苦痛になります)。

変更を保存してください。 今日のファイルのメッセージを作成します。

nano ~/Unreal3.2.10.4/ircd.motd

これは、ユーザーがサーバーに接続した瞬間に表示されるMOTDを入力できる場所です。 同じ80文字の行長制限もここに適用されます。 このファイルに入力する有用な情報は、注目のチャネル、サーバールールの簡単な内訳、現在のIRCopsなどです。 ここに必要なものをプレーンテキストで入力できます。

変更を保存してください。

構成に他のファイルをリストした場合は、ここでも作成します。

ステップ7-IRCdログファイル

IRCdにログを保存する場所があることを確認するには、先に進み、そのための空のファイルを作成しましょう。

touch ~/Unreal3.2.10.4/ircd.log

ステップ8-UnrealIRCdの開始

おめでとうございます。 独自のIRCデーモンを正常にセットアップしました。

Unrealディレクトリに移動します。

cd ~/Unreal3.2.10.4

チャットサーバーを起動します。

./unreal start

次のようなメッセージが表示されるはずです。

* Loading IRCd configuration ..
* Configuration loaded without any problems ..
* Initializing SSL.
* Dynamic configuration initialized .. booting IRCd.

起動エラーが発生した場合は、エラーに記載されている行番号と設定を確認してください。 構成ファイルで問題を見つけることができるはずです。

サーバーが起動すると、お気に入りのIRCクライアントを介してサーバーに接続できるようになります。 他のユーザーが接続できるように、ドロップレットではなくローカルマシンで行うことをお勧めします。

ステップ9-IRCクライアントの接続

お気に入りのIRCクライアントで、次を入力します。

/server  6667

ドメインまたはIPアドレス、およびポート番号(この例では、6667)が必要です。 `+ allow {} +`ブロックでサーバーのグローバルパスワードを設定する場合、それも使用する必要があります。

Windows用のいくつかの一般的なIRCクライアントは、http://mirc.com/ [mIRC]、http://hexchat.github.io/ [HexChat]、およびhttp://www.pidgin.im/[Pidgin]です。 Linuxを使用している場合、http://xchat.org [X-Chat]は無料で利用できます。 OS Xの場合、https://itunes.apple.com/us/app/xchat-azure/id447521961 [X-Chat Azure]およびApp Storeのいくつかの有料アプリケーションが利用可能です。

ステップ10-オペレーター認証

接続したら、IRCopとして認証する必要があります。 オペレーターとして認証するには、次を入力します。

/oper your-oline-username your-oline-password

これらは、 `+ oper {} +`ブロックで設定した認証情報です。

次に、以前に `+ oper-auto-join +`で指定したチャンネルに強制的に参加する必要があります。これは、あなたが現在IRCオペレーターであることを示しています。

SSL経由の接続に関する注意

サーバーインスタンスは自己署名SSL証明書を使用して設定されているため、一部のクライアントは「無効」または「信頼できない」証明書のためにSSL経由での接続を許可しない場合があります。 CACert.orgなどの無料サービスまたは選択した有料の認証局(CA)を使用して、有効なSSL証明書を生成する手段を探すことをお勧めします。

新しいIRCサーバーをお楽しみください! ここから、サービスを設定したり、ユーザーの招待を開始したりできます。 ハッピーチャット!