리눅스 기반 NAT 사용시 MSN voice chat 사용하기
원하는 것을 이루어주는 리눅스와 나의 영원한 친구 구글의 멋진 만남이라고 서두를 열고 싶습니다.
MSN voice chat은 단순한 DNAT 만으로는 불가능하며 마이크로소프트의 ICS(Internet Connection Service)를 애뮬레이트 해주는 데몬인 upnpd 데몬이 필요합니다. Upnpd 데몬은 NAT 방화벽 내부에서 동작하는 MSN messenger와 같은 UPnP 클라이언트와 UPnP IGD(Internet Gateway Device)를 위해 설계되었습니다.
http://linux-igd.sourceforge.net/ 에서는 Linux UPnP Internet Gateway Device 라는 프로젝트가 진행중이며, 이곳에서 해결의 실마리를 찾을 수 있습니다.
Linux-igd 소스를 컴파일 하기 위해서는 UPnP SDK for Linux라는 라이브러리가 필요하며 해당 라이브러리는 http://sourceforge.net/projects/upnp/ 에서 제공합니다.
UPnP SDK for Linux라는 라이브러리를 설치하기 위해http://sourceforge.net/projects/upnp/ 에서 upnpsdk 파일을 다운로드합니다.
1. libupnp.so 라이브러리 생성하기
Upnpsdk 소스를 컴파일 하기 위해서는 glibc-devel 및 e2fsprogs-devel 패키지가 시스템에 설치되어 있어야 합니다.
Upnpsdk 소스를 푸신 후 소스의 수정이 필요하며 upnpsdk 디렉토리의 src/ssdp/ssdplib.c 파일의 406 라인에 존재하는
SelfAddr.sin_addr.s_addr = inet_addr(SSDP_IP);
을
SelfAddr.sin_addr.s_addr = htonl(INADDR_ANY); 로 변경하신 후
make; make install 명령어를 실행하시기 바랍니다.
정상적으로 설치가 될 경우 /usr/lib/libupnp.so 라는 라이브러리가 설치됩니다.
2. upnpd 데몬 생성하기
linux-igd 소스는 http://sourceforge.net/project/showfiles.php?group_id=52728 에서 다운로드 하실 수 있습니다.
다운로드한 파일을 압축을 푸신 후 make; make install 명령어를 실행할 경우 upnpd 데몬이 생성됩니다.
생성한 데몬은 /usr/sbin 과 같은 디렉토리에 적절히 복사하시기 바랍니다.
이제 upnpd 데몬을 사용하기 위한 라우팅 테이블을 생성합니다. 생성 방법은 아래와 같습니다.
# route add -net 239.0.0.0 netmask 255.0.0.0 <내부 네트워크 장치명>
만약 사설 네트워크와 연결된 장치명이 eth1 이라면
# route add -net 239.0.0.0 netmask 255.0.0.0 eth1
명령어를 사용하시기 바랍니다.
이제 생성한 upnpd 데몬을 구동합니다. upnpd 데몬 구동 방법은 다음과 같습니다.
# upnpd <외부 네트워크 장치명> <내부 네트워크 장치명>
만약 사설 네트워크와 연결된 장치명이 eth1 이며 외부 네트워크를 ppp0를 이용하는 ADSL을 사용할 경우 명령어는 다음과 같습니다.
# upnpd ppp0 eth1
upnpd 데몬을 종료하는 방법은
# killall upnpd
명령어를 사용하시기 바랍니다. upnpd의 경우 iptables 명령어 경로를 /usr/sbin/iptables 로 인식하므로 실제 /usr/iptables 명령어를 심볼릭 링크로 처리해 주시기 바랍니다.
# ln –s /usr/iptables /usr/sbin/iptables
즐거운 voice chat 되시기 바랍니다. – from boyish
댓글 달기