開発者ドキュメント

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

序章

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

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

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

新しいDebian7x64ドロップレットを起動したばかりで、rootとしてログインしていることを前提としています。 現在rootユーザーでない場合は、次のコマンドでrootに切り替えます。

su

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

adduser ircd

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

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

passwd ircd

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

ユーザー権限の付与

ここで、サーバーに sudo が付属していることを確認する必要があります。これは、UNIXベースのシステム(Linuxなど)で人気のあるユーティリティです。 なじみのない人のために、 sudo コマンドを使用すると、ユーザーはroot(suまたはsuperuser)特権でコマンドを実行できます。そのため、名前は s uper u ser do —前提条件ライブラリを設定するときに必要になります。

Debian7にはデフォルトで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 、[ X123X] zlib1g 、 zlib1g-dev zlibc libgcrypt11 、およびlibgcrypt11-dev

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

sudo apt-get update

次のコマンドを実行して、前提条件をインストールします。 プロンプトが表示されたら、yesと入力します。 これらのパッケージのいくつかはすでにインストールされていることに気付くかもしれません—執筆時点では、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 のフラグは、このファイルを取得するための安全性の低い方法です。 目標が速度よりもセキュリティである場合は、別の方法を使用する必要があります。

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スクリプトを使用します。

./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?

答え:

Yes

デフォルトでは、UnrealIRCdの構成スクリプトはSSL接続をサポートしていませんが、ここで「はい」と入力すると有効になります。 これが、以前に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を押します。

次の質問は、DropletでIPv6を使用している特定のユーザーにとって重要です。

Do you want to enable IPv6 support?

ドロップレットを最初にセットアップするときにIPv6を有効にした場合にのみ、この質問にはいと答える必要があります。 ドロップレットでIPv6を有効にしていない場合は、これをデフォルト(「いいえ」)のままにして、Enterを押すことができます。

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

Do you want to enable ziplinks support?

答え:

Yes

パスについて尋ねられたら、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は、モジュラー 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-lineと呼ばれていましたが、ユーザーが接続するときのサーバーに関する特定の詳細を定義します。

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

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

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

me
{
        name "unreal.example.com";
        info "Unreal Chat Server";
        numeric 1;
};

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

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

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

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

admin {
        "Will Preston";
        "will";
        "will@example.com";
};

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

class {} —クライアントとサーバーの接続設定

次のブロック、 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 {} —サーバーパスワード、例外

The allow {} ブロックは、ネットワークへの接続を許可するユーザーを構成します。

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

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

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

allow {
        ip             *@*;
        hostname       *@*;
        class           clients;
        maxperip 5;
        password "yourpasswordhere";    
};      

/* 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";
    };

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

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

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

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

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

The oper {} ブロックは、あなたと他の特権ユーザーがIRCopとして実行できることを定義します。 これは、あなた自身を含む管理者が定義される場所であり、このため、かなりの数のオプションがあります。 ただし、ここでは、ブロックの例から始めます。

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

以下に、構成ファイルにコピーして貼り付けることができるo:lineの例を示します。 redに示されている値はお客様が変更する必要があります。

oper username {
	class clients;
	from {
		userhost *@*;
	};
	password "yourpasswordhere";
	flags {
		global;
		netadmin;
		can_gkline;
		can_gzline;
		can_zline;
		can_kline;
		can_unkline;
		can_restart;
		can_die;
		can_rehash;
	};
	swhois "This will appear when users run a /WHOIS on you";
};

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

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

リッスン{}— IP、ポート、SSL

これでo:lineが設定されたので、構成のより重要な部分に進むことができます。 の中に listen {} ブロックを使用すると、ユーザーが接続できるポートを設定できます。

ほとんどのサーバーでは、デフォルト設定で問題ありません。

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

listen *:8067;
listen *:6667;

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

ただし、ほとんどの場合、単に使用します listen *:6667、 そしてその * ワイルドカードは、UnrealIRCdを、後に指定されたポート上のすべてのIPアドレスにバインドしようとします。 :、この場合、ポート 6667.

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

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

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

注: UnrealIRCdを最初に起動したときに「アドレスはすでに使用されています」というエラーが表示された場合は、 * Unrealは、バインドするプライマリ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 {} —特権のあるサービス

The ulines {} ブロックは、ネットワークに接続するどのサーバーが昇格された特権を持つ必要があるかを定義します。

一般に、 services をIRCネットワークに接続する場合(サービスは、ニックネーム登録など、RFC標準で指定されていないIRCにすべての機能を追加するプログラムとデーモンの特別なセットです)を使用します。これは、サービスの特権が通常のサーバーの特権よりも高くなるようにするためです。

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

ulines {
        services.roxnet.org;
        stats.roxnet.org;
};

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

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

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

drpass {
	restart "your-restart-password-here";
	die "your-die-password-here";
};

log {} —ログ設定

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

必要に応じて、ドキュメントでログブロックの情報を読むことができますが、通常はそのままにしておいてかまいません。 UnrealIRCdは、ログの保持において非常に徹底しています。

alias {} —コマンドエイリアス

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

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

files {} —構成ファイルを含める

調整する次のブロックは files {} ブロック。構成に含める特定の特殊ファイルを指定します。

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

次の2つのファイルを見つけてコメントを外します。

motd ircd.motd;

...

rules ircd.rules

tld {} —国際的な例外

次のブロック、 tld {} ブロックは、機能的には files ブロック。ただし、トップレベルドメイン(例: .au オーストラリアの場合、 .ru ロシアなど)。

このセクションで作成するファイルは、適切な場所にあるファイルと同じくらい必要なので、このセクションをコメントアウトすることをお勧めします。 files {} ブロック。 このセクションをCスタイルのコメントで囲みます。

/*
tld {
	...
};
*/

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

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

ban {} —ニックネーム、IP、および名前を禁止する

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

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

次のブロック、 ban {} ブロックを使用すると、特定のニックネームの使用を禁止したり、特定のIPアドレスをサーバーや他のオプションのホスト全体に接続したりすることを禁止できます。

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

ban nick/ip {
	mask ["nickname*goes*here"/12.223.98.1]; // Banned nick or IP
	reason "Put your reason for the ban here";
};

または、コメントアウトしてください。

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

特定のユーザーを禁止するために、ニックネームやIPの代わりに、マスクフィールドで実際のIRCホストマスク(user @host .name)を使用することもできます。必ず指定してください。 ban user それ以外の ban ip また ban nick.

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

ban realname {
	mask "Jack";
	reason "Go away!";
};

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

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

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

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

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

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

IRCが80年代、90年代、および2000年代初頭に非常に主流のプロトコルであったとき、仲介者の集中型サーバーなしでIRCを介して直接通信したいユーザーには、別の追加プロトコルが求められていました。 DCC(direct client-to-client)プロトコルが誕生し、チャットメッセージを相互に直接送信したり、ファイル共有したりするなど、通常のIRCでは不可能なことをユーザーが実行できるようになりました。

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

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

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

これにより、文字列「sub7」(以前のIRC時代の悪名高い Sub7トロイの木馬に基づく)を含むサーバー経由で送信されたDCC要求はすべて許可されなくなります。

A 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 {} ブロック。

The set {} ブロックには、サーバーが動作するために必要な大量の構成オプションが含まれています。 以下は、表示される構成例のコピーであり、各オプションの機能を説明するインラインコメントが追加されています。 コメントが役立つと思われない限り、コメントを構成ファイルにコピーする必要はありません。

これらのオプションのすべてではないにしてもほとんどが必要なので、それらを完全に削除するのではなく、単に好みに合わせて編集してください。 複数のサーバーをリンクする場合は、すべてのサーバーでこれらの一貫性と同一性を維持することが最善であることに注意してください。 サーバーをリンクする予定がない場合でも、これらのオプションを構成する必要があります。

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

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

set {
	network-name "ROXnet"; // 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 "irc.roxnet.org"; // Replace this with your server's domain--the
					 // daemon reports this to the client as being
					 // the network's proper hostname.
	services-server "services.roxnet.org"; // 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 "stats.roxnet.org"; // Same as the above, except with stats
					 // stats servers.
 	help-channel "#ROXnet"; // 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 "rox"; // 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 {
		"brespumuste6ewR";
		"fUkAChekEswu6ed";
		"4aFachehetawedR";
	};
	
	// 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		"locops.roxnet.org";
		global		"ircops.roxnet.org";
		coadmin		"admin.roxnet.org";
		admin		"admin.roxnet.org";
		servicesadmin	"csops.roxnet.org";
		netadmin	"netadmin.roxnet.org";
		host-on-oper-up "no";
	};
	
	// 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 emailを設定する必要があります。設定しないと、サーバーが起動しません。

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

set {
	kline-address "contact@example.com"; // 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を起動する前に、次の2つのファイルを作成する必要があります。 ircd.rulesircd.motd. シェルプロンプトで、次のように入力してサーバールールのファイルを作成します。

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クライアントを介してサーバーに接続できるようになります。 他のユーザーが接続できるように、Dropletではなくローカルマシンでこれを行うことをお勧めします。

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

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

/server your Droplet IP address or domain here 6667

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

Windows用の人気のあるIRCクライアントには、 mIRC HexChat 、およびPidginがあります。 Linuxを使用している場合は、X-Chatを無料で利用できます。 OS Xの場合、 X-ChatAzureといくつかの有料アプリケーションがAppStoreで入手できます。

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

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

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

これらは、で設定した資格情報です oper {} ブロック。

次に、以前に指定したチャネルに強制的に参加する必要があります oper-auto-join、あなたがIRCオペレーターになったことを示します。

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

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

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

モバイルバージョンを終了