UnrealIRCd를 설치하였다면 기본적인 IRC 기능을 사용하는데는 큰 무리가 없습니다. 그러나 채널 및 닉네임의 설정 유지와 관리등을 위해서는 부가적으로 IRC 서비스라 불리는 확장기능들이 필요합니다.[1] 이를 지원하는 여러 프로그램이 있으나 그 중에서 업데이트도 꾸준하고 기능도 막강한 Anope을 UnrealIRCd와 연동하여 설치해 보도록 하겠습니다.[2] 참고로 Anope은 Linux용도 있으며, 현존하는 대부분의 IRC Daemon을 지원합니다.

이 포스트를 작성하는 현재 Anope의 최신버전은 1.8.4이며 다운로드는 여기에서 받을 수 있습니다. (UnrealIRCd의 버전은 3.2.8.1을 기준으로 설명하겠습니다.) 다운로드 후에는 먼저 설치를 합니다. 설치과정은 매우 간단하므로 생략하겠습니다. 설치 후에는 설치된 디렉토리의 /data로 이동하여 example.conf를 동일 디렉토리에 services.conf로 복사합니다. Anope의 설정을 전에 UnrealIRCd의 설정부터 바꾸어 주어야 합니다.

먼저 UnrealIRCd의 unrealircd.conf부터 수정을 하도록 하겠습니다. 구문을 찾아가며 수정을 하면 됩니다. (본인의 설정과 조금 다를 수 있으니 잘 살펴보시기 바랍니다.)

listen         *:6697
{
options
{
};
};
listen *:8000; 통신포트를 하나 더 지정해줍니다. 포트번호는 본인이 원하는 포트로 타 프로그램과 중복되지 않도록 주의합니다.

주석처리가 되어 있던 아래의 구문을 주석 해제하고 수정합니다.

link  services.mydomain.com 자신의 도메인앞에 services.을 붙여 서브도메인형식으로 입력합니다.
{
username    *;
hostname     1.2.3.4; 127.0.0.1을 입력합니다.
bind-ip     *;
port         8000; 위에서 지정한 포트와 동일하게 입력합니다.
hub             *;
password-connect “PASSWORD”; 임의의 패스워드를 입력하고 기억합니다.
password-receive “PASSWORD”; 위와 같은 패스워드를 입력합니다.
class           servers;
options {
/* Note: You should not use autoconnect when linking services */
autoconnect; 삭제합니다.
ssl; 삭제합니다.
zip; 삭제합니다.
};
};

제일 중요한 설정입니다. 아래의 구문을 찾아 정확히 입력합니다. (uline이 잘못 설정된 경우 닉네임과 관련된 여러기능이 작동하지 않습니다.)

ulines {
services.roxnet.org; service.mydomain.com의 형식으로 입력합니다.
stats.roxnet.org; stats.mydomain.com의 형식으로 입력합니다.
};

아래의 구문을 찾아  다음과 같이 수정합니다.

set {
network-name “ROXnet”; 클라이언트 접속시 보여질 IRC의 명칭
default-server “IRC.roxnet.org”; IRC 접속 주소
services-server “services.roxnet.org”; 위에서 입력한 service.mydomain.com
stats-server “stats.roxnet.org”; 위에서 입력한 stats.mydomain.com
help-channel “#ROXnet”; 헬프채널의 이름 #help 등등
hiddenhost-prefix “rox”;
}

여기까지 수정을 끝마쳤으면 저장을 하고 종료합니다.

이제 Anope 디렉토리로 이동하여 처음에 복사한 services.conf 파일을 열어 수정을 합니다. 각 섹션별로 반드시 수정해야 되는 부분만 표시하였습니다. 형광색 부분을 빨간글씨로 표기된 대로 수정합니다.

###########################################################################
#
# IRCD configuration
#
###########################################################################

# IRCDModule <module_name>  [REQUIRED]
#     The ircd protocol module should be used when connecting anope to your
#     chosen IRCD.  This should be one of the following options, or a file
#     provided by your IRCD author.
#
#     Bahamut 1.4.27 [or later]         – “bahamut”
#     Charybdis 1.0 [or later]          – “charybdis”
#     DreamForge 4.6.7                  – “dreamforge”
#     Hybrid IRCd 7.0 [experimental]    – “hybrid”
#     InspIRCd 1.1 [beta 8 or later]    – “inspircd11”
#     InspIRCd 1.2 [RC3 or later]       – “inspircd12”
#     Plexus 3.0 [or later]             – “plexus3”
#     Plexus 2.0 [or later]             – “plexus2”
#     PTLink 6.15.0 [experimental]      – “ptlink”
#     RageIRCd 2.0.x                    – “rageircd”
#     Ratbox 2.0.6 [or later]           – “ratbox”
#     ShadowIRCD 4.0x [beta 7 or later] – “shadowircd”
#     Solid IRCD 3.4.x [3.4.6 or later] – “solidircd”
#     UltimateIRCd 3.0.0 [or later]     – “ultimate3”
#     UltimateIRCd 2.8.2 [or later]     – “ultimate2”
#     Unreal 3.2 [beta-19 or later]     – “unreal32”
#     Unreal 3.1.1 [or later]           – “unreal31”
#     ViagraIRCd 1.3.x [or later]       – “viagra”
#

#IRCDModule “unreal32” #를 제거하여 주석을 해제합니다.

###########################################################################
#
# Remote server configuration
#
###########################################################################

# RemoteServer <hostname> <port> <password>  [REQUIRED]
#     Specifies the remote server hostname and port.  The hostname may
#     either be a standard Internet hostname or dotted-quad numeric
#     address; the port number must be an integer between 1 and 65535
#     inclusive.  The password is a string which should be enclosed in
#     double quotes if it contains any spaces (or just for clarity).
#
#     The remote server and port may be overridden at runtime with the
#     -remote command-line option.  The password may not be set at runtime.
#
#     If services can’t connect to the RemoteServer, they will try
#     RemoteServer2 (if defined). If they can’t connect to RemoteServer2,
#     they will use RemoteServer3 (if defined).

RemoteServer    localhost 6667 “mypass”
RemoteServer    127.0.0.1 8000 “PASSWORD”
localhost를 127.0.0.1로 변경 6667을 unrealIRCd에서 설정한 포트로 변경 (예제에서는 8000), PASSWORD는 위에서 입력한 패스워드를 동일하게 입력합니다.
#RemoteServer2  localhost 6667 “mypass”
#RemoteServer3  localhost 6667 “mypass”

###########################################################################
#
# Services identification and pseudoclient names
#
###########################################################################

# ServerName <name>  [REQUIRED]
#     Specifies the IRC server name which Services should use.  May be
#     overridden by the -name command-line option.

ServerName  “services.localhost.net위에서 입력한 services.mydomain.com  형식으로 입력합니다.

# ServerDesc <text>  [REQUIRED]
#     Specifies the text which should appear as the server’s information in
#     /whois and similar queries.  May be overridden by the -desc
#     command-line option.

ServerDesc  “Services for IRC Networks서비스에 대한  설명. 원하는대로 입력합니다.

# ServiceUser <usermask>  [REQUIRED]
#     Specifies the user@host mask which should be used by the Services
#     pseudoclients.  May be overridden by the -user and -host command-line
#     options.

ServiceUser “services@localhost.net서비스 공급자의 이메일을 입력합니다.

###########################################################################
#
# Basic functionality
#
###########################################################################

# UserKey1|2|3 <value> [RECOMMENDED]
#
#     These keys are required to initiate the random number generator. These
#     numbers MUST be random as you want your passcodes to be random. Don’t
#     give these keys to anyone! Keep them private!
#
#     *** NOTE ***
#     If you don’t enable these, or keep their default values, any talented
#     programmer would be able to easily “guess” random strings used to mask
#     information. Be safe, and come up with three different 7 digit numbers

#UserKey1 9866235 3줄 모두 주석해제 후  7자리의 임의의 숫자 입력합니다.
#UserKey2 8362013
#UserKey3 2362899

###########################################################################
#
# Mail-related options
#
###########################################################################

# NOTE: if UseMail is not set, all parameters after it in this section
# are optional.

# UseMail [OPTIONAL]
#
# This option enables the mail commands in Services. You may choose
# to disable it if you have no sendmail-compatible mailer installed.
# This setting is [REQUIRED] if NSEmailReg is enabled.

UseMail 메일서버가 설정되어 있지 않다면 첫머리에 #를 입력하여 주석처리합니다.

# SendMailPath <path> [REQUIRED]
#
# This is how we should call SendMail to send a mail. It must be
# called with all parameters needed to make it scan the mail input
# to find the mail recipient; consult your SendMail documentation.
#
# Postfix users must use the compatible sendmail utility provided
# with it; this one usually needs no parameters on the command line.
# Most sendmail applications (or replacements of it) require the -t
# option to be used.

SendMailPath “/usr/sbin/sendmail -t”

# SendFrom <e-mail> [REQUIRED]
#
# This is the e-mail from which all the e-mails are to be sent. It should
# really exist.

SendFrom services@localhost.net 위에서 입력한 서비스 공급자의 이메일 주소

###########################################################################
#
# OperServ configuration
#
###########################################################################

# ServicesRoot <nicks>  [REQUIRED]
#    Specifies the Services “super-users”.  The super-users, or “roots” as in
#    Unix terminology, are the only users who can add or delete Services
#    admins.
#
#    You can specify more than one nick by separating each one by a space.
#
#    This is commented out by default; make sure you insert the correct
#    nick before uncommenting it.

#ServicesRoot   “dengel anope#를 제거하여 주석을 해제하고 Root 권한을 가질 닉네임을 입력합니다.

수정을 완료하였으면 저장 후 Anope을 실행합니다. 실행이 되지 않는다면 data/logs 디렉토리에서 service.log 파일을 열어 에러 메세지를 확인 후 수정하세요. 이곳에 소개된 설정은 구동하기 위한 최소한의 설정법입니다. 이 외의 설정은 주석을 참고하여 본인의 용도에 맞게 설정을 해주면 됩니다. Anope이 제대로 구동이 된다면 클라이언트로 접속하여 아래와 같이 여러 서비스 봇을 사용할 수 있게 됩니다.

각 서비스 봇의 사용법은 여기에서 알 수 있습니다. 서비스 봇들을 사용하면 채널 설정 유지 및 닉네임 등록, 자동 옵/보이스 주기, 호스트등록 및 관리 등등 편리한 기능들을 사용할 수 있습니다.

  1. NickServ, ChanServ, OperServ 등의 서비스 봇들을 이용해 IRC 사용에 있어서 편리한 기능들을 제공합니다. [back]
  2. Anope은 독립해서 사용할 수 없고 반드시 UnrealIRCd등의 IRC Daemon이 설치되어 있어야 합니다. UnrealIRCd의 설치법은 여기에 있습니다. [back]