리눅스 기반 NAT 사용시 MSN voice chat 사용하기

boyish의 이미지

원하는 것을 이루어주는 리눅스와 나의 영원한 친구 구글의 멋진 만남이라고 서두를 열고 싶습니다.

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

Forums: 

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.