일반 iptime등의 공유기는 안 되고, dd-wrt, openwrt, tomato등의 리눅스 기반의 펌웨어를 구동할 수 있는 기종 (브로드컴제 칩셋인 dlink나 linksys등은 대부분 해당됩니다)이거나, mips/arm을 사용하는 (98%이상 해당됨) NAS라면 전부 구동이 가능합니다
이 방법의 가장 중요한점은 보통 한대씩은 가지고 있고, 24시간 가동중인 공유기나 NAS를 이용해서 서버를 돌릴 수 있고, 외부로도 쉽게 서비스 가능한점입니다
먼져 기종에 따라 방법이 달라집니다
USB포트가 달려있는 공유기나, NAS라면 자체 공간에 파티션을 만들던지해서 작업하시길 추천하고, 아닌경우는 공유기의 펌웨어 설치후 남은 공간인 JFFS를 이용해야합니다
가장 기본적인 내용은 http://forums.mydigitallife.info/threads/50234-Emulated-KMS-Servers-on-non-Windows-platforms/page26를 참조해주시면 됩니다 (상단의 포스트 참조)
시키는대로 jffs(흑은 jffs2)를 활성화한후 ssh나 telnet으로 해당 기기에 접속합니다
다음 ini파일 (이름은 뭐든 상관없어서 전 kms.ini로 했습니다)을 작성합니다
내용물은 해당 쓰레드에 나오는대로
55c92734-d682-4d71-983e-d6ec3f16059f = 05426-00168-152-564055-03-1049-9200.0000-0912013
59a52881-a989-479d-af46-f275c6370663 = 55041-00096-200-026043-03-1049-7601.0000-0162013
0ff1ce15-a989-479d-af46-f275c6370663 = 55041-00096-200-625305-03-1049-7601.0000-0572013
로 하셔야 합니다 (유닉스 포맷을 지원하는 에디터로 작성하시던지, vi를 이용해주세요) (vi kms.ini 이런식으로 입력하신후 i키를 눌러서 입력모드로 바꾸시고, 위의 내용을 복사해서 붙인후에 esc키를 눌러서 커맨드 모드로 와서 :wq를 입력하고 엔터를 쳐서 저장후 빠져나오시면 됩니다)
다음 http://rghost.net/50278978를 받으시던지(패스워드 2013) 첨부된 파일을 받으셔서 자신의 기종에 맞는 바이너리를 골라주세요 (보통 arm static아니면 mips static이면 되고, dd-wrt, openwrt, tomato인 경우는 dd-wrt라 붙은넘을 써주세요)
( vlmcsd-Hotbird64-2013-11-19.7z)
이제 기동용 스크립트만 준비하시면 되는데, 첨부된걸 받아서 경로만 바꾸시던지, 아니면
#!/bin/sh
EXECUTABLE="/mnt/test/kms/kmsd"
INIFILE="/mnt/test/kms/kms.ini"
PIDFILE="/tmp/kmsd.pid"
PORT="1688"
if [ ! -f $EXECUTABLE ] || [ ! -f $INIFILE ]; then
echo "Check variables in init daemon or missing files"
exit 1
fi
case "$1" in
start)
#Start daemon
if [ ! -f $PIDFILE ]; then
$EXECUTABLE -i $INIFILE -p $PIDFILE -P $PORT &
echo "KMS Has been started"
exit 0
else
PID=`cat $PIDFILE`
kill -s 0 $PID
RESULT=$?
if [ -f $PIDFILE ] && [ $RESULT -eq 0 ]; then
echo "KMS Server is already running"
exit 2
else
echo "Please check Pid file or user forcestart to overwrite pid"
fi
fi
;;
stop)
#Stop Daemon
if [ -f $PIDFILE ]; then
PID=`cat $PIDFILE`
kill $PID
rm $PIDFILE
echo "KMS Has been stopped"
exit 0
else
echo "KMS is not running"
exit 1
fi
;;
restart)
$0 stop
$0 start
;;
forcestart)
rm $PIDFILE
$EXECUTABLE -i $INIFILE -p $PIDFILE &
exit 0
;;
*)
echo "Usage: $0 start|stop|restart|forcestart"
exit 0
;;
esac
이런식으로 vi내지 유닉스 포맷 지원하는 에디터로 작성해주세요 (쓰레드의 스크립트에 새버전에 추가된 포트지정인 -P를 추가했습니다)
빨간색으로 처리된 부분은 자신의 경로 (jffs2를 쓰신다라면 /jffs2에 디렉토리 하나 작성해서 쓰시면 됩니다)에 맞추어주세요 (/mnt/test/kms/kmsd가 위에서 압축풀어주신 바이너리입니다)
이걸로 준비는 끝났습니다
ftp던 뭐든 써서 작성하신 스크립트랑 ini (vi로 작성하신거면 그냥 cp로 복사해주세요)와 위에서 압축푸신 바이너리를 집어넣어주세요
다음 jffs에 넣은경우는 스크립트(administration - scripts)의 부트항목에 넣으시고, usb에 저장하신경우는 usb마운트 직후 (USB and NAS - USB Suport)에 실행되게 등록해주세요
등록하는 내용은 sh /mnt/test/kms/kmsd.sh start 이런식으로 해주세요
이제 마무리로 방화벽을 iptable로 고치시던지 귀찮으시다면 포트포워딩으로 1688을 열어주세요 (NAS인 경우는 포트포워딩이나 DMZ지정을 이용해주세요)
이걸로 준비는 끝났습니다
로컬인 경우는 공유기 주소인 192.168.1.1 (환경에 따라 다를 수 있습니다)를 kms서버주소로 쓰시면 되고, 외부에서는 wan에 할당된 ip를 쓰시면 됩니다 (만일 회선에 따라 1688포트를 못 쓰는 경우는 ini의 포트와 포워딩 포트를 바꾸어주세요)