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

Unix/Linux
查看linux 下已经安装的软件包信息
linux 系统中软件raid 配置方法
linux 下MySQL服务器的启动与停止
linux 系统下FTP服务器配置方法
Linux系统下如何挂载U盘,硬盘,光驱
linux 系统下DHCP服务器 配置方法
Linux系统下软件的安装与卸载
在Fedora 9中启用ext4文件系统的方法
linux下挂载(mount)光盘镜像文件、移动硬盘、U盘、Windows网络共享和NFS网络共享
Linux查看文件夹大小的命令
LINUX系统grub常见错误分析
llinux fdisk分区工具 使用方法
linux 系统telnet乱码
rhythmbox 乱码的解决方法
linux单网卡绑定多ip
tar.gz 和tar.bz2 详细解释
linux学习笔记
linux系统rpm安装包详解
linux 服务器常用维护命令
出现The file /boot/grub/stage1 not read cor 解决办法

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 216 ::
收藏到网摘: 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 設定啟動參數。至此﹐所有設定基本完成啦﹐各位如果有問題﹐歡迎在此討論。這篇文章﹐只是拋磚引玉.希望有大量的玉向我砸來....