미꾸라지 Server¶
Warning
이 문서는 미꾸라지 v3 (EOL (End Of Life) 된 구 버전) 프로그램에 대한 문서이며 미꾸라지 v3.6.1 버전까지만 유요한 문서입니다.
최신 미꾸라지 버전은 v4 이며 http://mudfish.net/ 에서 다운로드 받으실 수 있습니다.
Note
문서에 오류가 있거나 건의 사항이 있으시면 메세지를 미꾸라지 포럼 (http://forums.loxch.com) 에 남겨주세요.
이 문서는 미꾸라지 Server (혹은 미꾸라지 중계 서버) 를 운영하고자 하는 분들을 위한 것으로 환경 설정 및 실행 절차에 대해 기술하고 있습니다.
현재 미꾸라지 Server 는 다음과 운영체제 환경에서 돌아갈 수 있도록 설계되어 있습니다.
Amazon Linux - EC2 (64 bit)
Macro instance 상에서도 무리없이 돌아가야 합니다. :-)
CentOS 5.x 와 6.x (64 bit)
주의사항¶
Warning
미꾸라지 Server 패키지의 경우, 프로그램 설치시 아래와 같은 내용이 자동으로 중앙 서버에 보고되게 되어 있습니다. 아래의 내용을 주의깊게 읽으시고 동의하지 않는다면 설치를 자제해 주시기 바랍니다.
- /var/log/messages 파일에서 미꾸라지 관련 서버 프로그램의 Warning, Error 등등 이상 오류가 발생될 시 해당 내용이 미꾸라지 중앙 서버로 자동 전송 및 수집 됩니다. 미꾸라지 Server 프로세스와 관련된 내용만 해당됩니다.
- 미꾸라지 Server 프로그램을 통해 발생되는 Traffic 자료가 중앙 서버로 전송 및 수집됩니다. 사용자별 혹 서버별 traffic 산출에 사용됩니다.
- 주기적인 heartbeat 신호를 중앙 서버로 전달되게 됩니다. 이는 중계 서버의 alive 여부를 따져 사용자로 하여금 어떤 서버가 살아있고 죽었는지를 알수 있도록 하기 위해서입니다.
- 중계 서버와 미꾸라지에서 제공되는 게임 서버 (Backend 서버) 간의 RTT (Round Trip Time) 이 계산되어 중앙 서버로 전송 및 수집되게 됩니다. 이 정보는 미꾸라지 사용자가 마법사 메뉴를 통해 혹은 라우팅 테이블 설정을 위한 메뉴를 열었을 때 사용자 <-> 중계 서버 <-> 게임 서버간의 RTT 정보를 보여주기 위해서입니다.
다운로드¶
미꾸라지 Server 프로그램은 미꾸라지 홈페이지 (http://ko.loxch.com) 을 통해 배포하고 있습니다. 최신 버전의 패키지를 다운로드 받으실려면 홈페이지를 방문해 주세요.
설치하기¶
Warning
미꾸라지 Server 패키지를 가상화 머신 (VPS) 에 설치하신다면 OpenVZ 는 현재 지원하지 않음을 알아 주세요. 다음과 같은 환경에서 무리 없이 실행됩니다.
- 실제 physical 한 서버
- KVM
- Xen
패키지를 설치하기 위해서는 root 권한이 필요하며 아래와 같은 패키지가 dependency 로 설정되어 있습니다.
gcc
Cache-Terminator 가 gcc 에 대한 의존성을 가지고 있습니다. 이유는 VCL (Varnish Configuration Language) 가 gcc 기반으로 작성되어 있기 때문입니다.
GeoIP
Cache-Terminator 가 GeoIP 에 대한 의존성을 가지고 있으며, 설정을 통해 사용자의 IP 가 어떤 국가에서 왔는지 확인을 하기 위해 사용될 수 있습니다.
Note
만약 CentOS 5.x 상에서, yum install GeoIP 시도시 패키지를 찾을 수 없다고 나온다면 yum repository 중 “extras” repository 가 활성화되어 있는지 확인 바랍니다.
만약 CentOS 6.x 상에서, yum install GeoIP 시 패키지를 찾을 수 없다면 EPEL(Extra Packages for Enterprise Linux) yum repository 를 설치하셔야 합니다. 아래와 같은 명령을 통해 설치하셔서 다시 한번 더 해보시기 바랍니다.
# cd /tmp/ # wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # rpm -ivh epel-release-6-8.noarch.rpm
위 두 패키지를 yum 명령어를 통해 우선 설치합니다.
# yum install gcc GeoIP
Loaded plugins: priorities, security, update-motd, upgrade-helper
amzn-main | 2.1 kB 00:00
amzn-updates | 2.3 kB 00:00
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package GeoIP.x86_64 0:1.4.8-1.5.amzn1 will be installed
---> Package gcc.noarch 0:4.6.2-1.8.amzn1 will be installed
--> Processing Dependency: gcc46 = 4.6.2 for package: gcc-4.6.2-1.8.amzn1.noarch
--> Running transaction check
---> Package gcc46.x86_64 0:4.6.2-2.65.amzn1 will be installed
--> Processing Dependency: cpp46 = 4.6.2-2.65.amzn1 for package: gcc46-4.6.2-2.65.amzn1.x86_64
--> Processing Dependency: libgcc46 = 4.6.2 for package: gcc46-4.6.2-2.65.amzn1.x86_64
--> Processing Dependency: binutils >= 2.20.51.0.2-12 for package: gcc46-4.6.2-2.65.amzn1.x86_64
--> Processing Dependency: libgomp >= 4.6.2-2.65.amzn1 for package: gcc46-4.6.2-2.65.amzn1.x86_64
--> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc46-4.6.2-2.65.amzn1.x86_64
--> Processing Dependency: libmpfr.so.1()(64bit) for package: gcc46-4.6.2-2.65.amzn1.x86_64
--> Processing Dependency: libmpc.so.2()(64bit) for package: gcc46-4.6.2-2.65.amzn1.x86_64
--> Processing Dependency: libgomp.so.1()(64bit) for package: gcc46-4.6.2-2.65.amzn1.x86_64
--> Running transaction check
---> Package binutils.x86_64 0:2.20.51.0.7-8.29.amzn1 will be installed
---> Package cpp46.x86_64 0:4.6.2-2.65.amzn1 will be installed
---> Package glibc-devel.x86_64 0:2.12-1.80.42.amzn1 will be installed
--> Processing Dependency: glibc-headers = 2.12-1.80.42.amzn1 for package: glibc-devel-2.12-1.80.42.amzn1.x86_64
--> Processing Dependency: glibc-headers for package: glibc-devel-2.12-1.80.42.amzn1.x86_64
---> Package libgcc46.x86_64 0:4.6.2-2.65.amzn1 will be installed
---> Package libgomp.x86_64 0:4.7.2-2.69.amzn1 will be installed
---> Package libmpc.x86_64 0:0.8.2-1.4.amzn1 will be installed
---> Package mpfr.x86_64 0:2.4.2-1.7.amzn1 will be installed
--> Running transaction check
---> Package glibc-headers.x86_64 0:2.12-1.80.42.amzn1 will be installed
--> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers-2.12-1.80.42.amzn1.x86_64
--> Processing Dependency: kernel-headers for package: glibc-headers-2.12-1.80.42.amzn1.x86_64
--> Running transaction check
---> Package kernel-headers.x86_64 0:3.2.39-6.88.amzn1 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
GeoIP x86_64 1.4.8-1.5.amzn1 amzn-main 783 k
gcc noarch 4.6.2-1.8.amzn1 amzn-main 2.7 k
Installing for dependencies:
binutils x86_64 2.20.51.0.7-8.29.amzn1 amzn-main 3.6 M
cpp46 x86_64 4.6.2-2.65.amzn1 amzn-main 4.8 M
gcc46 x86_64 4.6.2-2.65.amzn1 amzn-main 14 M
glibc-devel x86_64 2.12-1.80.42.amzn1 amzn-main 1.0 M
glibc-headers x86_64 2.12-1.80.42.amzn1 amzn-main 648 k
kernel-headers x86_64 3.2.39-6.88.amzn1 amzn-updates 847 k
libgcc46 x86_64 4.6.2-2.65.amzn1 amzn-main 98 k
libgomp x86_64 4.7.2-2.69.amzn1 amzn-updates 113 k
libmpc x86_64 0.8.2-1.4.amzn1 amzn-main 49 k
mpfr x86_64 2.4.2-1.7.amzn1 amzn-main 182 k
Transaction Summary
================================================================================
Install 12 Package(s)
Total download size: 26 M
Installed size: 50 M
Is this ok [y/N]: y
Downloading Packages:
(1/12): GeoIP-1.4.8-1.5.amzn1.x86_64.rpm | 783 kB 00:00
(2/12): binutils-2.20.51.0.7-8.29.amzn1.x86_64.rpm | 3.6 MB 00:00
(3/12): cpp46-4.6.2-2.65.amzn1.x86_64.rpm | 4.8 MB 00:00
(4/12): gcc-4.6.2-1.8.amzn1.noarch.rpm | 2.7 kB 00:00
(5/12): gcc46-4.6.2-2.65.amzn1.x86_64.rpm | 14 MB 00:00
(6/12): glibc-devel-2.12-1.80.42.amzn1.x86_64.rpm | 1.0 MB 00:00
(7/12): glibc-headers-2.12-1.80.42.amzn1.x86_64.rpm | 648 kB 00:00
(8/12): kernel-headers-3.2.39-6.88.amzn1.x86_64.rpm | 847 kB 00:00
(9/12): libgcc46-4.6.2-2.65.amzn1.x86_64.rpm | 98 kB 00:00
(10/12): libgomp-4.7.2-2.69.amzn1.x86_64.rpm | 113 kB 00:00
(11/12): libmpc-0.8.2-1.4.amzn1.x86_64.rpm | 49 kB 00:00
(12/12): mpfr-2.4.2-1.7.amzn1.x86_64.rpm | 182 kB 00:00
--------------------------------------------------------------------------------
Total 15 MB/s | 26 MB 00:01
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : mpfr-2.4.2-1.7.amzn1.x86_64 1/12
Installing : libmpc-0.8.2-1.4.amzn1.x86_64 2/12
Installing : cpp46-4.6.2-2.65.amzn1.x86_64 3/12
Installing : kernel-headers-3.2.39-6.88.amzn1.x86_64 4/12
Installing : glibc-headers-2.12-1.80.42.amzn1.x86_64 5/12
Installing : glibc-devel-2.12-1.80.42.amzn1.x86_64 6/12
Installing : libgcc46-4.6.2-2.65.amzn1.x86_64 7/12
Installing : libgomp-4.7.2-2.69.amzn1.x86_64 8/12
Installing : binutils-2.20.51.0.7-8.29.amzn1.x86_64 9/12
Installing : gcc46-4.6.2-2.65.amzn1.x86_64 10/12
Installing : gcc-4.6.2-1.8.amzn1.noarch 11/12
Installing : GeoIP-1.4.8-1.5.amzn1.x86_64 12/12
Verifying : binutils-2.20.51.0.7-8.29.amzn1.x86_64 1/12
Verifying : glibc-headers-2.12-1.80.42.amzn1.x86_64 2/12
Verifying : GeoIP-1.4.8-1.5.amzn1.x86_64 3/12
Verifying : libmpc-0.8.2-1.4.amzn1.x86_64 4/12
Verifying : gcc46-4.6.2-2.65.amzn1.x86_64 5/12
Verifying : gcc-4.6.2-1.8.amzn1.noarch 6/12
Verifying : libgomp-4.7.2-2.69.amzn1.x86_64 7/12
Verifying : libgcc46-4.6.2-2.65.amzn1.x86_64 8/12
Verifying : mpfr-2.4.2-1.7.amzn1.x86_64 9/12
Verifying : cpp46-4.6.2-2.65.amzn1.x86_64 10/12
Verifying : glibc-devel-2.12-1.80.42.amzn1.x86_64 11/12
Verifying : kernel-headers-3.2.39-6.88.amzn1.x86_64 12/12
Installed:
GeoIP.x86_64 0:1.4.8-1.5.amzn1 gcc.noarch 0:4.6.2-1.8.amzn1
Dependency Installed:
binutils.x86_64 0:2.20.51.0.7-8.29.amzn1
cpp46.x86_64 0:4.6.2-2.65.amzn1
gcc46.x86_64 0:4.6.2-2.65.amzn1
glibc-devel.x86_64 0:2.12-1.80.42.amzn1
glibc-headers.x86_64 0:2.12-1.80.42.amzn1
kernel-headers.x86_64 0:3.2.39-6.88.amzn1
libgcc46.x86_64 0:4.6.2-2.65.amzn1
libgomp.x86_64 0:4.7.2-2.69.amzn1
libmpc.x86_64 0:0.8.2-1.4.amzn1
mpfr.x86_64 0:2.4.2-1.7.amzn1
Complete!
#
설치가 완료되었다면 이제 mudfish-server RPM 패키지를 설치합니다.
# rpm -ivh mudfish-server-1.0.0-0.x86_64.rpm
Preparing... ########################################### [100%]
1:mudfish-server ########################################### [100%]
패키지의 설치는 완료되었습니다. 이제 미꾸라지 사용자가 이 중계 서버에 접속할 수 있도록 방화벽 설정을 하셔야 합니다.
방화벽 설정¶
미꾸라지 Server 가 정상작동되기 위해서는 받드시 아래의 방화벽 정책이 필요합니다.
TCP/UDP 10007 와 10008 포트
10007 포트와 10008 포트는 서버 데몬이 외부로 부터 트래픽을 받기 위해 listening 하고 있는 포트들로써 반드시 TCP 와 UDP 모두 open 되어 있어야 합니다.
ICMP
미꾸라지 중계 서버로 등록이 되는 순간 부터 미꾸라지 사용자들은 해당 중계 서버로 RTT (Round Trip Time) 값을 체크하기 위해 ICMP echo 메세지를 보내게 됩니다. (사용자의 설정에 따라 UDP 혹은 TCP 프로토콜이 사용될 수 있습니다만, default 는 ICMP 입니다.) 그렇기 때문에 만약 ICMP 프로토콜이 open 되어 있지 않다면 사용자들은 RTT 계산을 할 수 없게 됩니다.
이제 방화벽이 설정되었다면 시스템을 설정할 차례입니다.
시스템 설정¶
시스템 설정은 두 부분으로 나누어집니다. 첫번째는 NAT 설정이며, 두번째는 IP forwarding 설정입니다.
아래의 명령어를 통해서 시스템을 설정할 수 있습니다. 명령을 실행하면서 오류가 발생한다면 포럼을 통해 문의 바랍니다.
# /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE -s 10.252.0.0/14
# /sbin/sysctl net.ipv4.ip_forward=1
만약 미꾸라지 Server v1.0.4 혹은 이상의 버전을 사용하고 계신다면 아래와 같이 추가적으로 sysctl 명령을 실행시켜 주셔야 합니다.
# /sbin/sysctl net.ipv4.icmp_echo_ignore_all=1
Note
만약 어떠한 이유로 시스템이 재부팅이 되게 되면 위에서 설정한 내용들이 초기화 된다는 사실 을 알아 두셔야 합니다. 만약 재부팅이 되어도 자동으로 위 내용이 세팅되길 원하신다면 위의 세팅을 모두 완료 후 아래의 명령을 이용해 정보를 시스템에 저장해 두세요.
# /etc/init.d/iptables save
# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
# echo "net.ipv4.icmp_echo_ignore_all = 1" >> /etc/sysctl.conf
만약 미꾸라지 Server 가 시스템 재부팅시 자동 시작되길 원하신다면 아래의 명령으로 시스템에 등록해 두세요.
# /sbin/chkconfig --level 2345 mudfish-server on
이제 미꾸라지 Server 설정 파일들을 용도에 맞게 수정할 차례입니다.
설정파일¶
기본적으로 설정파일을 전혀 수정하지 않고 미꾸라지 Server 를 실행하신다면 default 로 다음과 같은 이름 및 정책으로 중앙 서버에 등록되게 됩니다.
name
파일이 없거나 내용이 비어 있다면 서버 이름은 중앙 서버에서 임의 지정한 이름으로 설정됩니다. 보통 Public IP 와 국가 코드가 등록됩니다.owner_name
혹은owner_email
에 대한 정보가 없다면 Unknown 으로 미꾸라지 웹 페이지에 나타날 것입니다.users_allow
혹은users_deny
에 대한 임의 설정이 없다면 기본적으로 모든 사용자의 접속을 허용하도록 ACL 정책이 설정됩니다.
Server 프로그램의 설정 파일은 항상 /etc/mudfish-server/
디렉토리 하위에
놓이게 되어 있습니다. 각 설정 파일에 대해 설명하겠습니다.
/etc/mudfish-server/commercial_node
만약 이 파일의 값이 True, 혹은 Yes 일 경우, 이 중계 서버는 유료 서버로 중앙 서버에 등록됩니다. 만약 무료 서버로 등록하실 생각이시면 이 파일을 생성하지 않거나, False 혹은 No 로 설정하시면 됩니다.
$ cat /etc/mudfish-server/commercial_node Yes
/etc/mudfish-server/commercial_node_currency
commercial_node_price_domestic 파일과 commercial_node_price_international 파일에 기술될 G 당 traffic 비용에 대한 통화를 기록합니다. 등록 가능한 통화는 아래의 목록과 같습니다.
- KRW
- USD
유료 서버로 등록된 경우에 대해서만 유효합니다.
$ cat /etc/mudfish-server/commercial_node_currency USD
/etc/mudfish-server/commercial_node_price_domestic
이 중계 서버를 통해 국내로 전송되는 트래픽에 대해 Giga 당 traffic 비용을 나타냅니다. 소수점 밑으로의 가격이 허용되기 때문에 0.0123 와 같이 적으셔도 됩니다.
유료 서버로 등록된 경우에 대해서만 유효합니다.
$ cat /etc/mudfish-server/commercial_node_price_domestic 0.0012
/etc/mudfish-server/commercial_node_price_international
이 중계 서버를 통해 국외로 전송되는 트래픽에 대해 Giga 당 traffic 비용을 나타냅니다. 소수점 밑으로의 가격이 허용되기 때문에 0.0123 와 같이 적으셔도 됩니다.
유료 서버로 등록된 경우에 대해서만 유효합니다.
$ cat /etc/mudfish-server/commercial_node_price_international 0.0015
/etc/mudfish-server/country
자동 생성되는 파일입니다. 현재 중계 서버의 Public IP 에 대한 국가 코드가 저장됩니다.
이 국가 코드는 GeoIP 정보를 기반으로 산출됩니다.
/etc/mudfish-server/name
현재 이 중계 서버가 미꾸라지 중앙 서버에 등록될 때 사용될 서버 이름을 나타냅니다. 오직 영문자 (대소문자) 및 숫자 그리고 몇개의 기호만 허용되며 나머지 문자들은 서버측에서 _ 문자로 강제 치환되게 됩니다.
Note
GeoIP database 기반의 위치 코드 (영문자 2 자) 항상 이름 앞단에 붙게되는 점 이해 바랍니다. 미꾸라지 사용자가 해당 중계 서버의 위치를 구분하지 못하는 문제를 개선하기 위한 조치입니다.
$ cat /etc/mudfish-server/name US West (Weongyo's server)
만약 이름을 변경하길 원하신다면 미꾸라지 Server 를 이름 변경 후 재시작 하시면 됩니다.
/etc/mudfish-server/owner_name
Note
미꾸라지 Server v1.0.2 이상부터 이용가능합니다.
현재 이 중계 서버를 운영하는 운영자의 이름 혹은 단체의 이름을 적는 파일입니다. 만약 설정하지 않는 다면 Unknown 으로 사용자에게 보여집니다.
/etc/mudfish-server/owner_email
Note
미꾸라지 Server v1.0.2 이상부터 이용가능합니다.
현재 이 중계 서버를 운영하는 운영자의 EMAIL 연락처 혹은 단체의 연락처를 적는 파일입니다. 사용자 혹은 미꾸라지 운영자가 개별 중계 서버 운영자에게 연락하기 위한 수단으로 사용될 수 있습니다.
/etc/mudfish-server/public_ip
자동 생성 파일입니다. 미꾸라지 중앙 서버에서 보았을 때 현재 이 중계 서버의 Public IP 가 저장됩니다.
/etc/mudfish-server/users_allow
만약 중계 서버를 허용한 사용자만 사용할 수 있도록 정책을 수립하기를 원하신다면 이 파일에 허용할 사용자의 미꾸라지 ID 를 적어주시면 됩니다. 그 외의 모든 사용자는 접근할 수 없게 됩니다. 한줄에 한 ID 를 적으셔야 합니다.
users_allow 와 users_deny 파일 모두에 미꾸라지 ID 가 동시에 올 수 없습니다.
$ cat /etc/mudfish-server/users_allow weongyo userid1 mijung
/etc/mudfish-server/users_deny
만약 중계 서버를 이 파일에 나열된 사용자를 제외한 모든 사용자에게 허용하고자 한다면 이 파일에 거부할 사용자의 미꾸라지 ID 를 적으시면 됩니다.
users_allow 와 users_deny 파일 모두에 ID 가 동시에 올 수 없습니다.
/etc/mudfish-server/type
기본으로 S 문자가 들어가 있으며, 수정하실 일이 없을 겁니다. S 는 Static 의 약자로 고정 중계 서버를 표시할 때 사용됩니다. M 이 사용될 때가 있는데, 중앙 서버를 나타날 때 사용됩니다.
/etc/mudfish-server/v2_tapip
자동 생성되는 파일입니다. 현재 이 중계 서버가 부여받은 Private IP 주소 대역에 관한 정보를 가지고 있습니다.
/etc/mudfish-server/varnishd_listen_address
자동 생성되는 파일입니다. 내부적으로 SOCKS v4 와 v5, HTTP proxy 지원을 위해 Cache-Terminator 프로그램이 사용되는데, 이에 대한 listening address 를 세팅하는 파일입니다.
/etc/mudfish-server/version
현재 사용할 미꾸라지 Server 의 버전을 가르킵니다. 미꾸라지 Server 패키지의 경우
/opt/mudfish-server/<version>/
디렉토리에 version 별로 별도 디렉토리에 설치되게 되는데, 이 파일의 내용을 보고 어떤 버전을 사용할지 결정하게 됩니다.
실행하기¶
/etc/mudfish-server/
디렉토리 아래의 설정 파일들을 모두 제대로 설정을
하였다면 아래와 같은 방법으로 미꾸라지 데몬 프로그램들을 실행할 수 있습니다.
# /etc/init.d/mudfish-server start
실행 과정에서 문제가 발생할 경우 보통 /var/log/messages
파일을 확인하시면
오류 메세지를 확인하실 수 있습니다.
이제 실행이 제대로 되었다면, 현재 서버가 제대로 미꾸라지 중앙 서버와 연동하여 등록되었는지 확인하셔야 합니다. 가장 손쉬운 방법은 아래의 링크에 들어가서 등록한 이름의 중계 서버가 존재하는지 체크하는 방법입니다.
미꾸라지: 중계 서버 실시간 상태
중지하기¶
서버 데몬 전체를 중지하기 위해서는 아래의 명령을 실행하시면 됩니다.
# /etc/init.d/mudfish-server stop
반드시 종료 후 ps 명령어를 이용하여 프로세스 이름이 mud 로 시작되는 것이 남아 있는지 확인하시고, varnishd 프로세스 또한 실행되고 있는지 확인하시기 바랍니다.
릴리즈 노트¶
v1.5.3 (2014/01/03)¶
- Cache-Terminator
- CONNECT method 을 지원하도록 하였습니다.
- mudcrond
- 시스템의 Uptime 을 체크하여 중앙 서버에 전송하도록 프로그램이 수정되었습니다.
- mudfish
- Mudfish Cloud VPN 클라이언트 v3.5.4 버전이 적용되었습니다.
- mudfish 와 mudflow 프로세스가 생성하는 로그 파일이 제대로 rotate 되도록 하였습니다.
- mudlog
- 미꾸라지 프로그램의 내부 로그 정보를 출력하는 logger 프로그램을 새롭게 구현하였습니다.
- mudmeshd
- 오류 메세지의 level 재지정이 있었습니다.
- mudstat
- 미꾸라지 프로그램들의 내부 통계 정보를 출력하는 프로그램이 새롭게 구현되었습니다.
- mudumond
- 프로그램이 로그 파일을 디스크에 남길 경우, 명시적으로 file locking 을 한 후 수행하도록 하였습니다.
v1.5.1 (2013/09/27)¶
- Cache-Terminator
- 요청한 storage 공간이 부족할 경우, assert fail 로 프로그램이 죽는 문제를 해결하였습니다.
- mudd
- Shared 메모리에 쓰게 되는 로그 메세지가 좀 더 정확하도록 하는 작업이 있었습니다.
- mudfish
- Mudfish Cloud VPN 클라이언트 v3.5.1 버전이 적용되었습니다.
- mudlmond
- 기존에 /var/log/messages 파일만 감시하던 것이 mudfish_stdout.txt 및 dmesg 파일 또한 감시하도록 하였습니다.
- mudumond
- 로그 정보를 파일에 저장할 때 명시적으로 file lock 을 홀딩한 후 실행하도록 하였습니다. 이는 다른 프로세스와의 race 를 막기 위한 것입니다.
v1.5.0 (2013/09/06)¶
- mudcrond
- 시스템의 Uptime 을 계산하여 중앙 서버에 보고시 반영하도록 하였습니다.
- mudd
- 전반적인 ADN 모드 형식이 변경되어 더이상 mudd 데몬은 ADN 기능 support 를 하지 않도록 하였습니다.
- mudfish
- Mudfish Cloud VPN 클라이언트 v3.5.0 버전이 적용되었습니다.
- mudwatchdog
- mudfish 프로세스를 실행할 때 사용되는 option 이 ADN 환경에 맞게 변경되었습니다.
v1.0.10 (2013/07/29)¶
- mudfish
- Mudfish Cloud VPN 클라이언트 v3.3.2 버전이 적용되었습니다.
v1.0.9 (2013/07/17)¶
- mudd
- 몇몇 오류 메세지에 대한 level 조정이 있었습니다.
- mudmeshd
- 자세한 오류 메세지를 출력하도록 하였습니다.
- RTT 체크 주기를 기존 30 초에서 60 초 주기로 변경하였습니다.
v1.0.8 (2013/07/08)¶
- mudcrond
- mudlmond 와 mudmeshd 의 PID 파일을 체크하지 않는 문제를 해결하였습니다.
- /proc 파일시스템에서 값을 읽을 때 i386 머신의 경우, 4G 에서 값이 overflow 되며 잘못된 값이 중앙 서버에 보고되는 문제를 해결하였습니다.
- i386 에서 빌드 이슈를 해결하였습니다.
- mudd
- 몇몇 오류 메세지에 대한 level 조정이 있었습니다.
- mudumond
- 중앙 서버와의 통신시 오류가 발생될 경우 처리를 정확하게 하도록 하였습니다.
- i386 머신에서의 빌드 이슈를 해결하였습니다.
- 기타
- mudfish 와 mudflow 가 이번 배포판부터 함께 배포가 됩니다. ADN (Application Delivery Network) 모드 지원을 위한 조치입니다.
v1.0.7 (2013/06/17)¶
mudinit
- 중앙 서버로 부터 받은 데이타가 포맷에 맞지 않을 경우, 명시적으로 exit code 가 1 이 되도록 하였습니다.
mudcrond
- 만약 tap 드라이버에 QoS 설정이 적용되어 있을 경우, 이로 인해 발생되는 packet drop 과 overrun 을 중앙 서버에 보고하도록 하였습니다.
mudmeshd
새로운 데몬이 추가되었습니다. 이 데몬의 경우, 미꾸라지 중계 서버간의 RTT 를 mesh 방식으로 측정하여 중앙 서버에 보고하게 됩니다.
이를 통해서 중계 서버 운영자는 어떠한 회선과의 연결이 나쁜지를 확인할 수 있도록 도와줍니다.
기타
- CentOS6 가 지원됩니다.
v1.0.6 (2013/06/12)¶
- Cache-Terminator
- 몇몇 printf 구문에서 type 세팅이 잘못 기입된 내용들을 수정하였습니다.
- writev(2) 가 0 값을 return 했을 경우, 이 처리를 위한 assert 구문을 추가로 삽입하였습니다.
- mudcrond
- -c, -p, -s 옵션들이 새롭게 들어갔습니다. 이 옵션들은 mudcrond 의 기능을 disable 시키기 위해 사용될 수 있습니다.
- 시스템 마다 /proc/dev/net 의 file format 이 다를 경우, 이에 대한 처리를 제대로 할 수 있도록 하였습니다.
- mudlmond
- [WARN] 레벨의 오류의 경우, 중앙 서버로 로그 정보를 제공하지 않도록 하였습니다.
- mudrttd
- RTT 테스트시 어떠한 이유로 timeout 이 발생되었을 때 나오는 오류 메세지의 로그 레벨을 ERROR 에서 WARN 으로 낮추었습니다.
- mudumond
- 내부적으로 사용되는 구조체를 좀 더 효율적으로 변경하였습니다.
- 사용자가 접속한 IP 와 destination IP 를 중앙 서버가 알 수 있도록 하였습니다.
- 마지막 처리 시점을 잘못 계산하는 문제를 해결하였습니다.
v1.0.5 (2013/06/04)¶
- Cache-Terminator
- SOCK v5 요청이 UDP_ASSOCIATE 혹은 BIND 명령일 경우, 이 처리를 거부하도록 하였습니다.
- gethostbyname(3) 함수의 경우, thread-safe 하지 않는 부분을 수정하였습니다.
- mudcrond
- 주기적으로 중계 서버의 상태 정보를 미꾸라지 중앙 서버로 전달되도록 하였습니다. 전달되는 정보로는 CPU (user, system, idle, steal), NIC 인터페이스 통계 등입니다.
- mudd
- 오류 상황 발생시, error message 가 좀 더 세세하도록 하였습니다.
- mudechod
- TCP 프로토콜을 non-blocking 으로 처리하도록 하였습니다.
- mudumond
- 마지막으로 읽은 로그 파일의 위치를 저장하도록 하여 다음 실행시 해당 사항을 반영하도록 하였습니다.
v1.0.4 (2013/05/17)¶
- Cache-Terminator 에서 다운로드하고 있는 파일 사이즈가 예상 크기보다 클 경우, 프로그램이 assert fail 로 죽는 문제를 해결하였습니다.
- ICMP turnneling 을 지원합니다.
- ICMP turnneling 이 지원됨에 따라 그에 해당하는 sysctl 설정 파일을 체크하도록 하였습니다.
v1.0.3 (2013/04/10)¶
- Timeout 된 세션 처리시 traffic 사용량에 대한 로깅 방식을 좀 더 효율적으로 변경하였습니다.
- 데몬 프로그램 중 crash 나는 문제를 해결하였습니다.
- 사용자 별 traffic 사용량에 대한 로그 정보가 shared memory 를 통해 전달되도록 하였습니다. 더 이상 traffic 처리 데몬은 실행중 디스크 access 를 하지 않도록 하였습니다.
- tap0:0 인터페이스의 netmask 정보가 기존 255.252.0.0 에서 255.255.240.0 으로 변경되었습니다.
v1.0.2 (2013/03/31)¶
- owner_name 와 owner_email 설정 파일들이 추가되었습니다.
v1.0.1 (2013/03/26)¶
- tap(4) 인터페이스가 설정 된 후 Cache-Terminator 의 listening address 를 binding 하는 과정에서 IP 주소 정보가 잘못 세팅되는 문제를 해결하였습니다.
- 데몬이 열게 되는 파일 정보에 대해 syslog 를 통해 해당 정보가 출력되도록 하였습니다.
v1.0.0 (2013/03/25)¶
공개적으로 하는 첫번째 릴리즈입니다.