안녕하세요
    주말 내내 출근한 비운의 직딩 열불 XXX 입니다...
    오늘은 스타 프리서버 구축 방법에 대해 알아보겠습니다

    프리서버는 블리자드의 정식 서버가 아닌 사설 서버를 통해 멀티플레이를 가능케 합니다
    블리자드에서 해당 소스를 공개하지 않았지만 멀티 플레이 패킷이 각국의 여러 해커에 의해 분석되어 여러 종류의 서버 프로그램이 나왔다고 합니다.

    여러 프로그램 중 저는 pvpgn 을 리눅스에 적용해 보도록 하겠습니다
    아! 구축 전에 한가지 유념하셔야 할 부분이 있습니다
    바로 아래 스크린샷입니다.


    프리서버 개발 및 운영이 블리자드의 EULA 정책을 위배했다고 법정 판결이 났나 봅니다.
    고로.. 프리서버 운영에 많은 주의가 필요 할 것 같습니다.

    이 점 꼭 유념하시기를 바라며..
    프리서버 구축으로 고고씽~~

    ※ 구축 환경 : CentOS 5.5

    1. 먼저 서버 프로그램을 다운 받습니다

      - pvpgn 안정화 버전인 pvpgn-1.8.5.tar.gz 와 Support 팩 pvpgn-support-1.2.tar.gz 를 다운 받으시면 됩니다.
      - 다운로드 URL : http://pvpgn.berlios.de/index.php?page=files


      - 저는 제 PC에 받아둔게 있어서 ftp를 통해 파일을 옮겼습니다. 


    2. /usr/local/src 폴더의 화면입니다.


    3. 하나 하나 압축을 풀어나갑니다.



    4. 압축을 푼 뒤의 폴더 화면입니다.


    5. pvpgn-1.8.5 폴더로 이동한 화면입니다. 해당 소스 파일들이 위치하고 있군요.


    6. pvpgn-1.8.5/src 폴더로 이동합니다.


    7. 소스 컴파일 전에 환경 설정을 해 줍니다. 저는 Prefix 값을 줘서 /usr/local/broodwar 에 설치토록 할 예정입니다. 


      - 흠.. error 가 났군요. 컴파일러가 서버에 설치가 안돼 있어 생긴 에러입니다. yum 을 통한 gcc를 설치하여 줍니다.


      - gcc 설치 진행 중
      - Is this ok [Y/N] : y 입력 후 엔터!


      - gcc 설치 진행 중


      - 다시 환경 설정으로 들어갑니다.
      - ./configure --prefix=/usr/local/broodwar


    8. 환경 설정이 잘 마무리가 되었다면 컴파일 및 설치를 진행합니다
      - make; make install


    9. 컴파일 및 설치가 마무리 되었습니다. 이 정도면 50% 이상 따라오신 겁니다~ㅋ
      - 잘 설치가 되었는지 /usr/local/broodwar 폴더로 이동한 화면입니다.


    10. 환경 설정을 위해 broodwar 폴더 밑의 etc 폴더로 이동해 줍니다.
      - 여러 환경 파일 중에서 bnetd.conf <-- 요놈이 아주 핵심적인 존재입니다.


    11. bnetd.conf 파일을 까보시죠~


    12. vi 편집기 상에서 :set number 를 입력하면 아래와 같이 라인 넘버를 확인하실 수 있습니다.


      - filedir : mpq 파일이나 tos 관련 파일들이 위치
      - reportdir : bnetd 관련 로그, 리포트 파일들이 위치
      - chanlogdir : Channel 로그 파일들이 위치
      - motdfile : Message of the day 파일
      - channelfile : 채널 설정 파일
      - newsfile : 베틀넷에 입장했을 때 화면에 출력되는 파일
      - adfile : 베틀넷 상단의 광고 설정 파일
      - ipbanfile : 사용자 차단 설정 파일
      - helpfile : 도움말 파일
      - mpqfile : 클라이언트의 버전 체크를 하여 자동으로 버전 update 해주는 설정 파일
                     -> skip_versioncheck 가 enabled 된 경우에만 동작
      - logfile : 로그 설정 파일
      - realmfile : Realms are areas that hold closed characters and games
      - maildir : 메일 설정 파일
      - versioncheck_file : 프로그램의 버전 체크 설정 파일
      - mapsfile : 맵 설정 파일
      - xplevefile : 사용자나 팀에 대한 레벨 임계치 설정 파일 (War3)
      - xpcalcfile : XP 포인트를 계산해주는 파일 (War3)
      - ladderdir : Ladder 게임 설정 파일
      - command_groups_file : 명령어 그룹 파일 (베틀넷 상에서 사용하는 명령어 모음)
      - tournament_file : 토너먼트 설정 파일
      - statusdir : bnetd 상태 디렉토리
      - aliasfile : alias(별명) 설정 파일 -> 긴 명령어를 짧게 수정해서 사용 가능
      - anongame_infos_file : Ladder 랭킹 웹 페이지를 구성해서 랭킹 상황을 페이지로 확인 할 수 있다.
      - DBlayoutfile : bnetd 를 DB 를 사용해서 구성 시 설정 파일 (기본적으로는 DB를 쓰지 않고 파일시스템을 사용한다)
      - supportfile : Support 팩 지정 파일
      - transfile : WAN을 이용한 프리서버를 운용할 때 사용되는 파일. 포트 포워딩 혹은 라우팅 설정해주는 설정 파일

    13. 로그 레벨 설정 부분입니다. 시스템 용량이 그리 넉넉치 않다면 loglevel을 줄이는 것이 좋겠지요~


    14. 사용자의 Latency 주기 설정 부분입니다. 디폴트로 10분으로 적용이 되어 있네요.
      - Latency 를 자주 확인하게 되면 그만큼 시스템에 부하를 주게 됩니다.


    15. 이미 시작 된 게임은 게임 목록 상에서 사라지게 하는 옵션입니다.


    16. 래더 게임은 기본으로 off 설정이 되어 있습니다. none 대신 사용할 수 있는 옵션은 주석에 표시가 되어 있네요~
      - topvbot, melee, ffa, oneonone


    17. 채팅 하면 도배.. 가 떠오르기 마련이죠 ㅋ무분별한 도배를 방지하기 위한 옵션들입니다.
      - 맨 아래 부분의 quota_dobae 에서.. 빵 터졌습니다...ㅎㅎ


    18. 비밀번호를 반복해서 틀렸을 경우 해당 IP가 차단되게 하게끔 하는 설정입니다. 해킹 방지 개념으로 보시며 될 것 같습니다.


    19. 베틀넷 상의 최대 친구 수를 지정하는 설정입니다.
      - 왠만한 규모의 프리서버가 아니라면 20 정도면 매우 널널하겠지요~


    20. 가장 중요한 부분입니다. 
      - 실질적으로 위에 설명한 bnetd.conf 파일은 기본상태로 두셔도 되지만 이 부분만은 필히!! 수정을 하셔야 됩니다.
      - bnetd 데몬(서버프로그램) 을 설치한 서버의 IP를 넣어주시면 됩니다.
      - 리눅스에서는 ifconfig 명령어로 IP 확인이 가능합니다.


      - bnetd.conf 파일의 수정이 완료 되었다면 저장 후 쉘로 빠져나오시기 바랍니다.

    21. Support 팩을 실제 적용이 될 폴더로 이동을 시킵니다.
      - 3단계에서 압축을 풀었던 pvpgn-support-1.2 폴더에 있는 모든 파일들을 옮겨야 합니다.


    22. cp 명령어로 유효 디렉토리로 이동시켜 줍니다~
      - cd /usr/local/src/pvpgn-support-1.2 이동 후
      - cp * /usr/local/broodwar/var/files/  복사!
      - 아래는 /usr/local/broodwar/var/files 디렉토리 밑으로 Support 팩 파일들이 복사가 된 화면입니다.


    23. 자 이제 거의 모든 설정이 완료 되었습니다.
      - /usr/local/broodwar/sbin 폴더로 이동하여 bnetd 데몬을 구동시켜 줍니다~
      - 구동 방법 : ./bnetd  입력 후 엔터


    24. 데몬이 잘 구동이 되었다면 데몬에서 사용하고 있는 서비스 포트가 잘 열렸는지 확인을 해 봅니다.
      - 확인 방법 : netstat -nlp | grep 6200
                         netstat -nlp | grep 6122
      - 아래 화면은 6200 번과 6122 포트가 정상적으로 리스닝 되고 있는 화면입니다.
      - 만약 아무런 화면이 출력이 되지 않았다면 bnetd 로그를 보면서 트러블 슈팅을 해야 합니다.


    25. 리눅스 시스템 상의 방화벽에서 포트 오픈을 해줍니다.
      - 방화벽 UI 화면 출력 : system-config-securitylevel


    26. 언어가 깨져서 나오는 군요;; 저는 테스트 서버라서 방화벽과 SELinux를 모두 Disabled 로 설정 하였습니다.
      - 해당 서버가 공인IP를 가지고 있고 외부로 서비스를 하실 거라면 꼭 필요 포트만 허용하셔야겠죠?
      - bnetd 사용 포트 : TCP (6200, 6112), UDP (6112)


    27. 자~~ 이제 모든 서버 설정이 완료 되었습니다.
      - BNGateways Editor 를 통해서 레지스트리 파일을 만들어 배포할 일만 남았습니다.

    BNGatewayEditor.zip


      - 다운 후 압축을 푸시면 아래 아이콘 모양의 파일이 생성됩니다. 바로 실행해보죠~


    28. 실행 화면입니다. 기본적으로 블리자드의 공식서버들이 있네요~
      - 공식서버 아래에 표기가 될 프리서버 Gateway를 만드는 과정입니다.


    29. Add Gateway 버튼을 누르게 되면 작은 설정창이 뜹니다.
      - Name : 표기가 될 서버 이름을 입력
      - Zone : 서버 존 입력. 다른 공식 서버존과 중복되지 않게 설정
      - IP : 자신이 구축한 프리서버 IP


    30. 자~ 이제 Gateway가 목록에 표시됐네요. 이제는 레지스트리 파일로 추출할 일만 남았습니다
      - Export Registry File 버튼을 클릭!


    31. 레지스트리 파일이 잘 추출 됐네요.
      - 이제 프리서버를 이용할 분들에게 해당 레지스트리 파일들을 배포하시기만 하면 됩니다.
      - 이용자들은 레지스트리 파일 추가만으로 베틀넷 서버 목록에 프리서버 이름이 표기가 되겠지요~~ 



    32. 레지스트리 아이콘을 더블클릭하면 아래와 같은 창이 뜹니다. 예~ 를 눌러줍니다.


    자~~~ 여기까지 따라오시느라 정말 수고 많으셨습니다.
    마지막으로 한가지만 더 확인해보죠 ^^;

    33. 브루드워 버전 체크
      - 브루드워의 버전이 프리서버와 맞지 않으면 게임 실행이 되지 않습니다 ^^
      - /usr/local/broodwar/etc 폴더 하단의 versioncheck.conf 파일을 열어보죠~


    34. 보시면 아시겠지만 1.16.1 버전으로 설정이 되어 있습니다.
      - 고로.. 스타를 하실땐 꼭 1.16.1 버전으로 실행을 해야 정상적인 이용이 가능합니다 ^^


    프리서버를 구축하고 2명에게 배포 후 실제 게임을 했습니다~
    아래는 users 폴더에 생긴 사용자 ID들이네요 (computer 뭥미..허모씨..)


    reports 폴더에는 게임당 로그 파일 한개씩 생성이 됩니다.


    게임 결과는??
    stormech 졌네요......ㅠ.ㅠ
    컴퓨터 너무 잘합니다~ㅋㅋ


    이상 허접한 리눅스 프리서버 구축 포스팅을 마칩니다.
    수고 많으셨습니다. ^^


    Posted by sybd