『리눅스 학당-리눅스 강좌 / 연재 (go LINUX)』 474번 제 목:[강좌3] IRC 서버 구축 세번째(서버 연동) 올린이:bluefine(황보진호) 97/07/01 11:42 읽음:1472 관련자료 없음 ----------------------------------------------------------------------------- 오늘 새벽에 상기님과 정균님, 그리고 저와 IRC 서버를 연동하는데 성공을 했 습니다. 오늘 연동을 했는데 이런 강좌를 쓴다니 엄청 이른감이 있으나 연동을 하려는 다른 분들을 위해서 쓰는 겁니다. 이 강좌는 IRC 서버구축 세번째 이야기이며, 허락없이 수정 및 배포하셔도 좋습니다. 그리고 연동하는데 많은 도움을 주신 박종환(나우 ID : cmania) 님과 박장헌(나우 ID : handsoff) 님께 감사 드립니다. 전남 나주에서. 황보 진호(TrueFeel) bluefine@nownuri.net truefeel@arsenel.paichai.ac.kr 97.7.1(화) ========================== 1. 어떻게 연동되었나... ========================== 현재 연동된 상황은 2개의 허브노드와 3개의 리프노드가 연동되었습니다. < 허브(Hub) > < 리프(Leaf) > + power.taegu.net -----+-- ns.wjcom.co.kr | +-- 203.232.99.227 | + ksb.kumoh.ac.kr -----+-- 210.123.15.82 ========================== 2. ircd.conf 설정 ========================== 이 부분은 'IRC 서버 구축 2' 강좌를 먼저 보시기 바랍니다. 먼저 보지 않으면 아래 내용은 전혀 이해를 못합니다. 연동을 하기 위해 설정을 해야 하는 것은 C, N, H, L 필드 부분입니다. 1) 허브에서 설정해야 할 값 C, N(C,N 은 연결할 서버 지정) 과 L(연결할 Leaf 서버 지정)을 설정 2) 리프에서 설정해야 할 값 C, N 과 H(연결할 Hub 서버 지정) 을 설정 3) 허브끼리 연동할 경우 설정해야 할 값 위에서 power.taegu.net 이나 ksb.kumoh.ac.kr 은 서로 허브로서 연동이 되었고, 리프와도 연동이 되었으므로 C, N 과 H, L 모두 설정해야 합니다. 2-1. C, N 필드 설정 C:연결할 서버 주소:암호:연결할 서버 이름:포트:클래스 N:연결될 주소:암호:연결될 서버 이름:호스트마스크:클래스 C 필드에는 연결을 하려는 서버를 지정하는 것이고, N 에는 연결을 허용하는 서버를 지정합니다. C, N 는 쌍으로 사용합니다. 암호는 C와 N 이 서로 다르게 지정하는 것이 보안상 좋으며, 암호부분이 허브와 리프가 C 필드는 C 필드끼리, N 필드는 N 필드끼리 서로 같아야 연동이 됩니다. 실제 예를 들어 봅시다. 1) 203.232.99.227(리프)에서 설정 값 -------------------------------------------------------------------------- C:203.251.92.230:암호부분:power.taegu.net:6667:2 N:203.251.92.230:암호부분:power.taegu.net::2 -------------------------------------------------------------------------- 두번째 : 203.251.92.230(power.taegu.net 의 IP임) 은 접속할 IP 를 지정. 도메인을 넣어도 됩니디. 세번째 : 암호를 넣는 부분입니다. 이 값은 연결할 서버(여기서는 허브)의 C 필드의 암호와 같아야 합니다. 네번째 : 연결할 서버의 도메인을 지정(여기서는 power.taegu.net) 합니다. 만약 도메인이 없는 서버(여기서는 허브)일 경우에는 IP 를 쓰시면 됩니다. 다섯번째 : 6667 은 power.taegu.net 의 IRC 포트입니다. 여섯번째 : 클래스를 지정하는 겁니다. 클래스는 Y 필드에서 정의. 참고: 클래스는 Y 필드에서 정의를 합니다. (아래는 ftp.kornet.nm.kr/pub/Hangul/network/HanIRC/server 에서 받은 example.ircd.han 의 기본 설정 값) -------------------------------------------------------------------------- Y: 커넥션 클래스 정의. 서버의 클래스는 여기서 정해준다. 필드의 순서는 클래스 번호, ping frequency (초단위), connection frequency(초단위), 최대 서버 링크 갯수, 최대 클라이언트 링크 갯수이다. 예에서는 클래스 1 번은 1700초에 핑 한번씩, 90초마다 커넥션 시도, 링크 최대갯수 50개, 클라이언트 최대 10000개.. 커넥션 시도가 0일 경우는 클라이언트임을 뜻한다. 링크의 갯수는 클라이언트의 갯수 + 연결된 서버의 갯수. # 클라이언트용. Y:0:900:0:10:10000 # 이 아랫 라인은 허브용.. 링크의 갯수가 50개. Y:1:1700:90:50:10000 # 이 아랫 라인은 리프용.. 링크의 갯수를 30개로. Y:2:1000:90:30:10000 -------------------------------------------------------------------------- 클래스 는 Y 필드를 이용해서 만들 수도 있습니다. 만약 정의되지 않은 클래스 번호를 C, N 의 마지막 부분에 쓸 경우에는 클래스 0 번을 이용하게 됩니다. C:202.31.142.28:laudate:ksb.kumoh.ac.kr:6667:2 2) power.taegu.net(허브)에서 설정 값 -------------------------------------------------------------------------- C:202.31.142.28:암호:ksb.kumoh.ac.kr:6667:2 N:202.31.142.28:암호:ksb.kumoh.ac.kr::2 C:203.232.99.227:암호:203.232.99.227:6667:2 N:203.232.99.227:암호:203.232.99.227::2 C:ns.wjcom.co.kr:암호:ns.wjcom.co.kr:6667:2 N:ns.wjcom.co.kr:암호:ns.wjcom.co.kr::2 -------------------------------------------------------------------------- 위와 설명은 같으나 처음 나오는 C,N 은 ksb.kumoh.ac.kr(허브)과 연결하기 위해 설정한 값이며, 2번째와 3번째 C,N 은 203.232.99.227, ns.wjcom.co.kr (리프)과 연결하기 위해서 지정한 것입니다. 그리고 203.232.99.227 은 도메인 이 없으니 네번째 필드에도 IP 를 써넣습니다. 이 것도 클래스는 2번을 사용 (Y:2:1000:90:30:10000) 했습니다. 2-2. H, L 필드 설정 H 는 허브 노드를 지정하는 것이며, L 은 리프 노드를 지정하는 것입니다. 즉, 리프에서는 연결할 허브를 지정해야 하므로 H 를 지정해 주어야 하며, 허브에서는 연결할 리프를 지정해야 하므로 L 를 반드시 지정해 주어야 합니다. H:허브에 접속 가능한 서버 마스크:*:서버 이름 세번째 부분 : 이용(?)하지 않는 부분이니 * 나 공백을 넣어주시면 됩니다. L:리프에 접속 가능한 서버 마스크:*:서버 이름:리프가 가질 수 있는 트리깊이 1) 203.232.99.227(리프)에서 설정 값 H:*::power.taegu.net 리프에서는 L 을 지정하지 않습니다. 위의 경우는 두번째 부분은 모든 컴에서 접속 가능함을 나타내며, 세번째는 사용하지 않으므로 비워두었습니다. 네번째 는 연결할 허브인 power.taegu.net 을 지정한 것입니다. 2) power.taegu.net(허브)에서 설정 값 H:*::ksb.kumoh.ac.kr L:::203.232.99.227:3 L:::ns.wjcom.co.kr:3 power.taegu.net 은 다른 허브인 ksb.kumoh.ac.kr 과 연동되었으며, 리프 노드 인 203.232.99.227 과 ns.wjcom.co.kr 과 연동이 되었습니다. 그래서 H 와 L 을 모두 지정을 했습니다. 설명은 위와 같습니다. ========================== 3. 연동 확인 ========================== 아래는 연동이 제대로 되었는지 확인하는 여러가지 방법입니다. 3-1.접속화면 확인 및 서버의 NOTICE 메시지 확인 클라이언트로 허브나 리프에 접속을 합니다. freenet:~$ irc 진호 power.taegu.net 이 때에 클라이언트 화면에는 아래와 같은 메시지가 나와야 합니다. *** There are 4 users and 0 invisible on 4 servers ========= *** This server has 3 clients and 3 servers connected =================== 클라이언트에서 IRC 명령 중 /umode +s 를 하여 서버의 NOTICE 를 메시지를 확인해서 이상이 없는지를 봅니다. 그러면 IRC 클라이언트의 상태선에는 아래와 같이 나옵니다. -------------------------------------------------------------------------- [1] 진호 (+s) on #linux (+n) * type /help for help <- Nick(진호)옆에 (+s) -------------------------------------------------------------------------- 3-2. /links 로 연동이 되는지 확인 또한 /links 로 연동하려는 서버가 모두 나왔는지 확인을 합니다. 참고로 /stats c 나 /stats h 로 C, N 과 H, L 설정이 제대로 나오는지도 확인하시기 바랍니다. 아래는 power.taegu.net 에 접속해서 나온 /links 결과 -------------------------------------------------------------------------- *** ns.wjcom.co.kr power.taegu.net 1 P9 WJ Server *** 203.232.99.227 power.taegu.net 1 P9 FreeNetworK *** ksb.kumoh.ac.kr power.taegu.net 1 P9 KSB Server *** power.taegu.net power.taegu.net 0 P9 Power Server -------------------------------------------------------------------------- 3-3. 방 공유가 제대로 되는지 확인 하나는 power.taegu.net 에 들어가서 방을 만들고, 다른 하나는 203.232.99.227 에 들어갸서 방을 만듭니다. 그런 후 /list 로 서로의 방이 제대로 나오는지 확인을 해보면 됩니다. 또는 같은 방에 들어가서 제대로 메시지가 전달이 되는지 확인하면 됩니다. 1) 먼저 power.taegu.net 에 '진호' nick 으로 접속을 합니다. freenet:~$ irc 진호 power.taegu.net 클라이언트에서, -------------------------------------------------------------------------- /join #linux -------------------------------------------------------------------------- 2) freenet:~$ irc 진호2 203.232.99.227 (연동이 되었으니, 같은 Nick 은 쓸 수 없겠죠.) 클라이언트에서, -------------------------------------------------------------------------- /join #linux 안녕하세요. -------------------------------------------------------------------------- 이 때 power.taegu.net 의 #linux 에 접속한 유저에게 아래의 메시지가 나와야 합니다. -------------------------------------------------------------------------- *** 진호2 (truefeel@203.232.99.227) has joined channel #linux <진호2> 안녕하세요. -------------------------------------------------------------------------- ========================== 4. 설치할 때 주의 사항 ========================== 우선 전에 얘기한 IRC 서버인 irc2.8.21.HAN2.tgz 은 보안상의 문제가 있으니, underbbs.com/pub/irc 에서 -rw-rw-r-- 1 0 30 346408 Jun 9 07:05 ircu2.9.32.H1.tgz 을 받으시기 바랍니다. 그리고 IRC 서버 2.8과 2.9는 호환이 제대로 안되니(/links 로 보면 연결은 된 것으로 보이지만 방 공유가 전혀 안됩니다.) 반드시 연동할 모든 IRC 서버는 2.9 를 사용하시기 바랍니다. tar xvfz ircu2.9.32.H1.tgz 로 압축을 푼 후 include/config.h 파일 부분을 수정할 부분이 있습니다. 허브로 사용할 서버에서는 반드시, #undef HUB 을 #define HUB 로 고치시기 바랍니다. 아래의 #define 부분은 눈여겨 보시기 바랍니다. #define OPER_KILL #define OPER_REHASH #define OPER_RESTART #define OPER_DIE #define OPER_REMOTE config.h 의 path 설정은 'IRC 서버 구축 1' 강좌를 보시기 바랍니다. IRC 서버 2.8 버전이 이미 실행이 되고 있으면, 과감하게 kill 하시고 2.9 버전의 ircd daemon 을 실행하시기 바랍니다. 아래는 include/config.h 에서 #define PPATH "/var/run/ircd.pid" 로 설정한 경우입니다. freenet:~# kill -9 `cat /var/log/ircd.pid` freenet:~# ircd 그리고 단순히 ircd.conf 을 수정한 것이면 아래와 같이 하면 됩니다. freenet:~# kill -HUP `cat /var/log/ircd.pid` ========================== 5. 마치며... ========================== irc 세번째 강좌를 쓸려고 생각도 안했는데, IRC 서버 연동때문에 글을 쓰게 되었어요. 끝까지 읽어주신 분들께 감사하고, 그리고 종환(cmania@nownuri.net) 님과 장헌님(handsoff@nownuri.net)께도 다시 한 번 감사 드립니다. 잘 못된 곳이나 궁금한 점이 있으면 아래 주소로 메일 주시기 바랍니다. bluefine@nownuri.net truefeel@arsenel.paichai.ac.kr 전남 나주에서. 황보 진호(TrueFeel) 1997.7.1일 또 비오는 아침에