当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > [精华] 使用 IGD(Upnp)解決 MSN 語音聊天問題

Unix/Linux
如何在linux下面运行招商银行专业版
Windows和Linux系统共存 完美解决方案
Linux 和对称多处理应用程序介绍
Red Hat Linux 附加引导和内核引导选项
Linux 2.6.11内核文件IO系统调用详解
走向高手之路 Linux系统内核技术解读
菜鸟乐园 Linux系统内核代码特色一览
Linux内核和传统Unix内核的比较
内核中的物理内存分配函数kernel api
使用 Linux 系统调用的内核命令
详细解析 Linux内核的主要配置选项
内核操作 Linux2.6内核驱动移植参考
Linux内存中Swap和Buffer Cache机制
高手进阶 更换Fedora Core 6的内核
高手风范 Linux操作系统内核编码风格
Linux操作系统内核中工作队列的操作
揭开Linux系统内核调试器的神秘面纱
系统“大挪移” Linux服务器迁移大法
高手进阶 重新编译Linux操作系统的内核
Ubuntu系统关于驱动模块命令的一些使用

Unix/Linux 中的 [精华] 使用 IGD(Upnp)解決 MSN 語音聊天問題


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 267 ::
收藏到网摘: n/a

因為MSN Messenger 不直接支持NAT﹐所以在使用Iptables 構建的Firewall后面的MSN Messenger用戶無法和Firewall外面的用戶使用語音通訊。而Linux UPnP Internet Gateway Device Project剛好就可以解決該問題。
首先﹐來看看什么是UPnpUPnP是通用即插即用(Universal Plug and Play)的縮寫,是實現智慧設備端到端網路連接的結構。它也是一種架構在TCP/IP和HTTP技術之上的,分散式、開放的網路結構,以使得在聯網的設備間傳遞控制和資料。UPnP技術實現了控制點、設備和服務之間通訊的支援,並且設備和相關服務的也使用XML定義並且公佈出來。使用UPnP,設備可以動態加入網路,自動獲得一個IP地址,向其他設備公佈它的能力或者獲知其他設備的存在和服務,所有這些過程都是自動完成的,此後設備能夠彼此直接通訊。UPnp 相關網站1. UPnP Forum UPnp Forum2. UPnP SDK For Linux UPnP SDK For Linux3. Linux UPnP Internet Gateway Device Linux UPNP IGD好啦﹐現在我們再來看看怎樣在Linux 下面安裝Linux IGD(請確保你擁有root權限﹐并了解怎樣在Linux 編譯程序)1. 到http://sourceforge.net/projects/linux-igd/下載Linux GID 程序﹐當前版本是 0.922. 到http://sourceforge.net/projects/upnp/下載UPnP SDK For Linux. 當前版本為1.043. 解壓縮 bash-2.04# tar -xzf linuxigd-0.92.tgz bash-2.04# tar -xzf upnpsdk-1.0.4.tar.gz4.修改 upnpsdk 源程序中的src/ssdp/ssdplib.c,將第406行 從 SelfAddr.sin_addr.s_addr = inet_addr(SSDP_IP); 改為 SelfAddr.sin_addr.s_addr = htonl(INADDR_ANY);5.編譯 upnpsdk bash-2.04# cd /usr/src/upnpsdk-1.0.4 bash-2.04# make ....... bash-1.04# make install6.編譯 Linux IGD bash-1.04# cd /usr/src/linux-gid bash-1.04# make bash-1.04# make install7.增廣播地址路由 route add -net 239.0.0.0 netmask 255.0.0.0 [color=red]int_if[/color] 注意﹐將上面命令中的 int_if 換成你的Firewall上的內部網卡名稱。 e.g. 你使用eth0 聯接到你的局域網﹐則使用以下命令﹕ route add -net 239.0.0.0 netmask 255.0.0.0 eth08. 啟動Upnp 完成以上命令后﹐在命令行敲入命令﹕ upnpd 當然﹐你得用你的Internet 接口網卡取代上面的﹐并用內部局域網網卡名稱取代. e.g. 在我的Firewall上﹐我使用eth0 聯接到互聯網﹐使用eth1聯接到局域網﹐則我使用以下命令﹕ upnpd eth0 eth1 9.這里﹐再嘗試一下在你的客戶端電腦上使用MSN和你的朋友進行語音聊天.... 好啦﹐基本的安裝完成了。當然﹐你要是想每次開機自動執行﹐你還得寫一個腳本。這里提供一個供參考 (該腳本轉自Linux GID 網站的論壇)#!/bin/sh # chkconfig: 2345 20 80 # description: upnpd is a Universal Plug and Play Internet Gateway Device for Linux. # # Source function library. . /etc/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ $ = "no" ] && exit 0 RETVAL=0 prog="upnpd" start() { tickers='' # Start daemons. echo -n $"Starting $prog: " daemon upnpd eth0 eth1 RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/upnpd route add -net 239.0.0.0 netmask 255.0.0.0 eth1 return $RETVAL } stop() { # Stop daemons. echo -n $"Shutting down $prog: " killproc upnpd RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/upnpd route del -net 239.0.0.0 netmask 255.0.0.0 eth1 return $RETVAL } # See how we were called. case "" in start) start ;; stop) stop ;; status) status upnpd RETVAL=$? ;; restart|reload) stop start RETVAL=$? ;; condrestart) if [ -f /var/lock/subsys/upnpd ]; then stop start RETVAL=$? fi ;; *) echo $"Usage: " exit 1 esac exit $RETVAL 將以上內容復制到 /etc/rc.d/init.d/upnpd,并用chkconig 設定啟動參數。至此﹐所有設定基本完成啦﹐各位如果有問題﹐歡迎在此討論。這篇文章﹐只是拋磚引玉.希望有大量的玉向我砸來....