『리눅스 학당-리눅스 강좌 / 연재 (go LINUX)』 472번 제 목:[강좌2] IRC 서버 구축 두번째 올린이:bluefine(황보진호) 97/06/26 11:50 읽음:1542 관련자료 없음 ----------------------------------------------------------------------------- 첫 번째 강좌에 이어 ircd 의 환경 설정부분을 다루겠습니다. 첫 강좌와 마찬 가지로 잡담없이 진행합니다. ========================== 3. IRC 서버 환경 설정 ========================== 3-1. ircd.conf 만들기 include/config.h 에서 CPATH 로 지정한 곳에 down 받은 example.conf.han 을 ircd.conf 이름으로 복사를 합니다. 이 ircd.conf 파일은 모두 13가지(더 정확히 는 14가지)를 지정을 해주어야 합니다. 하지만 보통 5- 7가지 정도만 지정하면 됩니다. 각 지정 값들은 /etc/passwd 파일과 같이 ':' 문자로 구분을 합니다. example.conf.han 에는 설정할 내용을 한글로 설명이 되어 있습니다. 아래는 이 파일을 토대로 설명하겠습니다. 1) M: 서버 이름을 정합니다. 필드의 순서는 '호스트이름', 공란, '서버 이름', '포트번호'입니다. 포트번호는 일반적으로 6667로 하면 된다. M:203.232.99.228:*:FreeNetworK:6667 '*' 표가 있는 3번째 필드는 사용하지 않는 부분입니다. 그냥 아무것도 쓰지 않아도 됩니다. 2) A: 관리자 정보를 지정합니다. 세개의 필드로 되어 있으며, 어떠한 텍스트가 들어가도 된다. A:FreeNetworK:전남 나주 - Naju, Chonnam, KR:Jinho Hwangbo \ (길어서 두 줄로 나눕니다.) 어떻게 쓰셔도 상관이 없습니다. 위의 내용은 client (linux 용IRC client나 mIRC 등을 말합니다.) 에서 /admin 명령으로 볼 수 있는 내용을 지정하는 것 입니다. 아래는 IRC client 에서 /admin 할 때 나오는 내용입니다. -------------------------------------------------------------------------- *** Administrative info about 203.232.99.228 *** FreeNetworK *** 전남 나주 - Naju, Chonnam, KR *** Jinho Hwangbo -------------------------------------------------------------------------- 3) Y: 커넥션 클래스를 지정합니다. 서버의 클래스는 여기서 정해줍니다. 필드의 순서는 클래스 번호, ping frequency (초단위), connection frequency(초단위), 최대 서버 링크 갯수, 최대 클라이언트 링크 갯수입니다. 저는 특별히 고치지 않았습니다. 링크 갯수 를 조정할 분은 하시기 바랍니다. # 클라이언트용. Y:0:900:0:10:10000 # 이 아랫 라인은 허브용.. 링크의 갯수가 50개. Y:1:1700:90:50:10000 # 이 아랫 라인은 리프용.. 링크의 갯수를 30개로. Y:2:1000:90:30:10000 4) I: 접속이 가능한 클라이언트를 정의합니다. 도메인 이름이나, IP 주소, 또는 와일드카드를 사용할 수 있고, 두번째 필드 는 암호, 생략가능한 다섯번째 필드는 클래스를 정의합니다. (첫번째는 보통 숫자, 세번째는 보통 글자 주소를 씁니다.) I:*::*:0 위의 것은 모든 곳에서 이 IRC 서버에 접속할 수 있도록 한 것입니다. 특별히 제한할 IP, 도메인이 없는 경우 그대로 쓰시면 됩니다. 아래는 168.126.63.*, *.kornet.nm.kr 에서 들어오는 것을 막는 것입니다. I:168.126.63.*::*.kornet.nm.kr::1 5) O: 아이알씨 오퍼레이터를 지정합니다. 필드는 순서대로 오퍼레이터의 호스트 이름, 암호, 오퍼레이터의 별명(보통 IRC 에서는 '닉'이라고 영어로 짧게 말합니다.)입니다. O:203.232.108.1:2VAGf9rQ91LcU:truefeel 위의 경우 203.232.108.1 에서 들어오는 truefeel 이 암호화된 위의 암호를 쓰는 사람이 오퍼레이터라는 것을 지정합니다. 위의 것은 /etc/passwd 나 /etc/shadow 와 같이 암호화 된 것입니다. 암호화를 지정할 것인지 안할 것인지 는 include/config.h 에서 CRYPT_OPER_PASSWORD 로 합니다. #define CRYPT_OPER_PASSWORD (초기값)으로 암호화되어 쓰도록 지정한 것이며, 암호화를 쓰지 않을 것이면 #undef 으로 지정을 하면 됩니다. 오퍼레이터의 passwd를 암호화하여 ircd.conf 에 저장하는 방법은 irc2.8.21.HAN2.tar.gz 을 풀었을 때 ircd/crypt/crypter 을 이용합니다. 단지 암호가 abcd 일 때 위에서, O:203.232.108.1:abcd:truefeel 라고 쓰고 crypter 프로그램을 이용하면 자동으로 바꿔줍니다. 하지만 저의 경우 이렇게 안되더군요. ircd/crypt/Makefile 파일을 수정해 봤지만 안되었습니다. 그래서 ircd/crypt/mkpasswd.c 파일을 컴파일해서 만들어진 암호화된 passwd 를 직접 ircd.conf 파일에 써 주었습니다. -------------------------------------------------------------------------- freenet:~/new/irc2.8.21.HAN2/ircd/crypt # ls . Makefile crypter mkpasswd mkpasswd.o .. README exec mkpasswd.c sums freenet:~/new/irc2.8.21.HAN2/ircd/crypt # rm -f mkpasswd freenet:~/new/irc2.8.21.HAN2/ircd/crypt# gcc mkpasswd.c -o mkpasswd freenet:~/new/irc2.8.21.HAN2/ircd/crypt # ./mkpasswd plaintext: <- 여기에 오퍼레이터가 사용할 passwd 를 씁니다. vh3JG0hIzc3Wk <- 암호화된 passwd 출력 -------------------------------------------------------------------------- 6) L: 리프 노드를 지정합니다. 이 것은 IRC 서버들 끼리 연계를 하기 위해서 사용합니다. 저는 comment 처리 를 했습니다. 첫번째 '1. IRC 란...' 에서 연계도에서 오른쪽에 표시한 서버들 이 리프 서버들입니다. 나무에서 나무가지라고 생각하면 됩니다. 자기가 연결할 호스트가 리프 노드임을 명시해 줍니다. 첫번째 필드에 리프에 접속이 가능한 마스크, 두번째는 안쓰임, 세번째 필드는 리프 노드의 서버 이름, 생략가능한 네번째 필드는 그 리프가 가질 수 있는 트리의 깊이 (depth)를 나타 냅니다. # korea.slip.umd.edu 는 단순 리프로 지정이 됨. L:::korea.slip.umd.edu 7) H: 허브를 지정합니다. 이 것도 위의 6번과 마찬가지로 서버끼리 연계를 하기 위해서 사용을 합니다. 첫번째 '1. IRC 란...' 에서 연계도에서 왼쪽에 표시한 서버들이 허브 서버들 입니다. 이 것도 저는 comment 처리 했습니다. 자기가 연결할 호스트가 허브일 경우 꼭 기술해 줘야합니다. (자신이 허브일 경우.) H:*::korea.stanford.edu 여기서 부터는 일반적으로 거의 쓰지 않거나 수정할 필요가 없는 설정이어서 example.conf.han 내용을 그대로 아래에 옮깁니다. # # U: 옛날 irc 의 경우 어느 서버로 접속해라 정보인데 쓸디없음. # (안해도 됨.) # # U:hayes.ims.alaska.edu:password:hayes.ims.alaska.edu:6667 # # C: [NETWORKED]. 우리 서버 보고 어디로 접속해라고 갈쳐주는 것. # N: [NETWORKED]. 어느 서버에서 우리 서버로 접속해도 된다고 갈쳐주는 것. # # 참고로 요 두개는 쌍으로 보통 쓴다. # # 에또, 그럼 두개의 형식은.. # # C:연결할 서버 주소:암호:연결할 서버 이름:포트:연결클래스 # N:연결될 주소:암호:연결될 서버 이름:호스트마스크:클래스 # # 호스트 마스크는 자기 호스트 이름을 다르게 보이고 싶을때, 그 갯수를 쓴다. # 예를 들면 ara.kaist.ac.kr 일때 호스트 마스크가 1이면 *.kaist.ac.kr 이 # 되고, 2이면 *.ac.kr 로 표시가 된다. (내 서버가 그쪽에 그렇게 알려짐.) # # 보안을 위해서 암호 두개는 다르게 씁시다. 음냐. # # 다음 두 줄은 korea.slip.umd.EDU에 접속을 자동으로 이루자고 하는 # 내용이다. (뭐 별거 없음.) # 클래스를 2번으로 정했음. (리프노드) #C:korea.slip.umd.EDU:BigCheese:korea.slip.umd.EDU:6667:2 <- 저는 이부분을 #N:korea.slip.umd.EDU:CheeseBig:korea.slip.umd.EDU::2 <- comment 함. # 요 아랫 부분은 별로 중요하지 않으니까 관심있으면 해석해서 써먹으세요. # # K: kill a user automatically upon connecting. This is used to deny # troublesome users access to your server. The fields are, in order, # hostname (wildcards are allowed), time of day, and username. #K:*.alaska.edu::FSSPR #K:acad3.alaska.edu:0900-1200,1400-1700:* #R:kaja.gi.alaska.edu:/usr/local/lib/irc/does-eric-get-in:ejo #Q::server is run by weenies:poe.acc.virginia.edu P:*:::6666 3-2. ircd.motd 만들기 이 것도 ircd.conf 와 마찬가지로 include/config.h 에서 MPATH 로 지정한 곳 에 만들면 됩니다. 저의 ircd.motd 내용입니다. -------------------------------------------------------------------------- 안녕하세요. 여기는 Linuxer 들을 위한 IRC 서버입니다. * IP : 203.232.99.228 or 168.126.127.226 사정에 따라 바뀔 수 있습니다. * Port : 6667 * 기본적인 irc 명령어입니다. - /help 도움말 보기 - /nick <별명> 닉네임을 변경. - /list 방이름, 사람수, 제목을 보여줍니다. - /who -here IRC 서버에 접속한 모든 사용자 목록 /who * 현재 방에 있는 모든 사용자 목록 - /join <#방명> '#방명' 으로 들어갑니다. - /leave * 현재 방을 나갑니다. - /quit IRC 종료 * 문의는 bluefine@nownuri.net truefeel@arsenel.paichai.ac.kr -------------------------------------------------------------------------- 실제 irc client 로 서버에 접속했을 때 처음에 나오는 화면은 다음과 같습니다. -------------------------------------------------------------------------- *** Connecting to port 6667 of server 203.232.108.1 *** Welcome to the Internet Relay Network truefeel (from 203.232.99.228) *** If you have not already done so, please read the new user information with /HELP NEWUSER (길어서 두 줄로 씁니다.) *** Your host is 203.232.99.228, running version 2.8.21.HAN2 *** This server was created Tue Jun 24 1997 at 00: 53:54 KST *** umodes available oiws, channel modes available biklmnopstv *** There are 1 users and 0 invisible on 1 servers *** This server has 1 clients and 0 servers connected *** - 203.232.99.228 Message of the Day - *** - 25/6/1997 18:09 *** - *** - 안녕하세요. 여기는 Linuxer 들을 위한 IRC 서버입니다. *** - *** - * IP : 203.232.99.228 or 168.126.127.226 *** - 사정에 따라 바뀔 수 있습니다. *** - * Port : 6667 *** - *** - * 기본적인 irc 명령어입니다. *** - - /help 도움말 보기 *** - - /nick <별명> 닉네임을 변경. *** - - /list 방이름, 사람수, 제목을 보여줍니다. *** - - /who -here IRC 서버에 접속한 모든 사용자 목록 *** - /who * 현재 방에 있는 모든 사용자 목록 *** - - /join <#방명> '#방명' 으로 들어갑니다. *** - - /leave * 현재 방을 나갑니다. *** - - /quit IRC 종료 *** - *** - * 문의는 bluefine@nownuri.net *** - truefeel@arsenel.paichai.ac.kr [1] truefeel * type /help for help -------------------------------------------------------------------------- 3-3. ircd daemon 실행 단순히 ircd 라고만 하면 됩니다. 저는 리눅스 부팅시 실행되도록 하기 위해서 /etc/rc.d/rc.local (저는 슬랙유저입니다.) 에 등록을 했습니다. # IRC Server echo "IRC Server starting..." /usr/local/bin/ircd 제대로 IRC 서버가 동작하는지 보기 위해서는 freenet:~# irc truefeel localhost 을 하면 됩니다. truefeel 은 IRC 에서 사용 할 닉네임입니다. 즉, IRC 에서 사용하는 이름을 나타냅니다. 만약 irc client 가 설치가 되어 있지 않다면 다음 강좌를 읽어보시기 바랍니다. ========================== 4. IRC 클라이언트 설치 ========================== 단순히 나열식으로 쓰겠습니다. 어제(?) 제가 han.comp.os.linux 에 답변으로 포스팅한 내용을 약간 수정한 것입니다. ftp://ftp.kornet.nm.kr/pub/Hangul/network/HanIRC 에서 파일 두개를 받습니다. 1. ircii-2.8.HAN2-roman.tar.gz <- 클라이언트 2. ircii-2.8help.tar.gz <- 도움말 파일 (클라이언트에서 /help 했을 때 나오는 것들입니다.) 1) 적당한 곳에 압축을 풉니다. tar xvfz ircii-2.8.HAN2-roman.tar.gz INSTALL, README.korean 파일을 읽으면 도움이 될 겁니다. 2) include/config.h 을 수정합니다. #define DEFAULT_SERVER "36.16.0.36" 을 #define DEFAULT_SERVER "168.126.63.15" 으로 고칩니다. 위의 경우 irc client 를 실행하면 디폴트로 irc.kornet.nm.kr (168.126.63.15)로 접속하도록 설정한 것입니다. IRC 서버를 자체에 만들었 다면 그 IP 나 도메인을 쓰면 좋겟죠. (도메인도 지정 가능) 아래는 이미 되어 있으니 수정할 것이 특별히 없습니다. #define DEFAULT_EIGHT_BIT_CHARACTERS 1 3) configure 4) make; make install 설치는 /usr/local/bin 과 /usr/local/lib/irc/* 에 됩니다. 5) 도움말은 /usr/local/lib/irc 에서 풀면 됩니다. tar xvfz ircii-2.8help.tar.gz 도움말 경로는 irc client 내에서 /set HELP_PATH 으로 변경가능합니다. ========================== 5. 마치며... ========================== 끝까지(끝에만 읽으셨을지도 모르지만. 하하) 읽어주셔서 감사합니다. 꼭 성공하기를 바라며, IRC 의 매력를 느끼시길 바랍니다. 이번에 IRC 붐이 일어날 것 같은 느낌도 들군요. 김상기(gelo@nownuri.net) 님이 power.taegu.net 에 IRC 서버를 구축하실꺼라고 하셨는데 이 글이 좋은 길잡이가 되었으면 합니다. 아울러, 리눅스사용자모임의 서버에 IRC 서버가 설치(하드웨어가 여러 서비스 를 하고 약간의 힘이 남아 IRC 서버까지 할 정도가 된다면...) 되기를... 이미 irc.kornet.nm.kr 에 #linux 방이 있는데 그럴 필요가 있을까 하고 생각 되시면 직접 가서 구경해보면 알겁니다. 히히. 저는 임시로 203.232.99.228 에서 서비스를 하고 있습니다. 이 컴은 집에 있는 컴이라서 항상 켜놓지는 않습니다. 또한 IP 가 바뀔 수도 있습니다. 잘 못된 곳이나 궁금한 점(궁금한 것 질문하기 전에 INSTALL 파일을 읽어보고, man ircd 도 해보기 바람)이 있으면 아래 주소로 메일 주시기 바랍니다. bluefine@nownuri.net truefeel@arsenel.paichai.ac.kr 전남 나주에서. 황보 진호(TrueFeel) 1997.6.26일 비오는 아침에