linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > linux网络与应用 > Linux服务器 >
栏目导栏
资料搜索
热门文章
·Linux网关设置
·WebLogic管理精华
·Webmin的下载与安装
·RedHat Linux 9.0 Samba配置详
·网吧LINUX游戏服务器加迅闪更新
·Linux下配置完整安全的DHCP服务
·Tomcat性能调整
·Linux下FTP服务器配置
·怎样设置域名的DNS服务器
·linux9.0+apache+php+mysql安装
·Eclipse+Tomcat+MyEclipse配置
·Linux服务器网卡驱动安装及故障
·Linux网络服务器配置详解
·FC5+Apache2+PHP5+MYSQL5环境配
·让linux系统支持ASP
最新文章
·Slackware EyooLinux服务器配置
·Linux系统下安装bind后配置实现
·Fedora Linux系统Samba服务器架
·服务器维护:RHEL 5系统下故障
·服务器应用:实现Linux与宿主机
·RED HAT AS4 U4下Gssftp服务的
·高手进阶:Redhat Linux上vsft
·Fedora Linux操作系统中TFTP的
·Ubuntu Linux操作系统安装配置
·Linux FTP服务器和SVN服务器的
·Linux操作系统下自带BIND的使用
·Linux系统下DNS服务器的架设
·Linux下Apache安装/增加mod_re
·虚拟磁盘Linux服务端测试及故障
·为网络启动和软硬件升级建立TF
Google
 
让Linux NAT服务器支持UPnP
[ 作者:  加入时间:2006-08-04 16:48:26  来自:chinaunix ]
参考文献: rLyLinux联盟
《UPnP on your Linux 2.4 firewall how-to》 by bijl rLyLinux联盟
《让 Linux NAT 服务器支持 UPnP》 by lonestar rLyLinux联盟
《UPnP为我们献上一道怎样的大餐》 by Sharon Crawford rLyLinux联盟
rLyLinux联盟
rLyLinux联盟
注意:如果对网络安全要求较高或要求高可控制性的网络,则不要安装配置UPnP支持,否则会导致网络NAT映射比较混乱,从而引发许多问题。建议小型网络或者家庭网络使用UPnP。 rLyLinux联盟
rLyLinux联盟
最近经常使用一些P2P类型软件,发现老得在Linux服务器上手动设置NAT,非常麻烦,而看着许多P2P软件都支持UPnP就眼馋,如果能让Linux支持UPnP那就简单方便多了!于是在网上搜索了一下有关让Linux支持UPnP的文章,于是就写了这篇文章。 rLyLinux联盟
rLyLinux联盟
一、什么是UPnP rLyLinux联盟
rLyLinux联盟
1. UPnP简介 rLyLinux联盟
-------------- rLyLinux联盟
UPnP(Universal Plug and Play)技术对即插即用进行了扩展,它简化了家庭或企业中智能设备的联网过程。在结合了UPnP技术的设备以物理形式连接到网络中之后,它们可以通过网络自动彼此连接在一起,而且连接过程无需用户的参与 rLyLinux联盟
  rLyLinux联盟
UPnP规范基于TCP/IP协议和针对设备彼此间通讯而制订的其它Internet协议。这就是它之所以被称作"通用(Universal)"的原因所在--UPnP技术不依赖于特定的设备驱动程序,而是使用标准的协议。UPnP设备可以自动配置网络地址,宣布它们在某个网络子网的存在,以及互相交换对设备和服务的描述。基于Windows XP的计算机可以充当一个UPnP控制点,通过程序界面对设备进行发现和控制。  rLyLinux联盟
rLyLinux联盟
如果与以前的即插即用相比,这种技术似乎并不具有什么革命性的意义。在操作系统中增加即插即用技术使得在单个计算机上安装、配置和添加外设的工作变得更容易了。但是UPnP为家庭用户或者小型办公环境中的非专业用户所带来的是一道更加美味的"大餐",他们可以利用UPnP玩多人游戏,进行实时通信(Internet电话,电话会议)以及使用类似Windows XP的远程协助这样的其它技术。  rLyLinux联盟
rLyLinux联盟
2. NAT 穿越技术  rLyLinux联盟
------------------ rLyLinux联盟
NAT穿越技术允许网络应用程序对它们是否位于一个具有UPnP能力的NAT设备之后进行检测。然后,这些程序将获得共享的全球可路由IP地址,并且配置端口映射以将来自NAT外部端口的数据包转发到应用程序使用的内部端口上--所有这一切都是自动完成的,用户无需手动映射端口或者进行其它工作。NAT穿越技术允许网络设备或者点对点应用程序通过动态开启和闭合与外部服务之间的通信端口穿过NAT网关与外界通信。 rLyLinux联盟
rLyLinux联盟
二、在Linux中部署UPnP支持 rLyLinux联盟
rLyLinux联盟
我们假设该Linux的内核版本是2.4.x,使用拨号上网,外网接口是ppp0,内网接口是eth0,并且已经启用iptables设定了 NAT。 rLyLinux联盟
rLyLinux联盟
在Linux中部署UPnP主要使用2个软件的配合:UPnP SDK for Linux和LinuxIGD。 rLyLinux联盟
rLyLinux联盟
下载地址: rLyLinux联盟
UPnP SDK for Linux: http://sourceforge.net/projects/upnp/ rLyLinux联盟
LinuxIGD: http://linux-igd.sourceforge.net/ rLyLinux联盟
rLyLinux联盟
注意:要下载upnpsdk-1.0.4.tar.gz,1.0.4以上的版本不能和LinuxIGD很好的协同工作! rLyLinux联盟
rLyLinux联盟
A. 安装: rLyLinux联盟
---------- rLyLinux联盟
1. 解包UPnP SDK rLyLinux联盟
# tar xzvf upnpsdk-1.0.4.tar.gz rLyLinux联盟
rLyLinux联盟
2. 修改源代码 rLyLinux联盟
为了能够使Windows MSN Messenger在UPnP下正常通讯,所以必须修改源代码: rLyLinux联盟
# cd upnpsdk-1.0.4 rLyLinux联盟
# vi src/ssdp/ssdplib.c rLyLinux联盟
将第406行的: rLyLinux联盟
rLyLinux联盟
SelfAddr.sin_addr.s_addr = inet_addr(SSDP_IP); rLyLinux联盟
rLyLinux联盟
改为: rLyLinux联盟
rLyLinux联盟
SelfAddr.sin_addr.s_addr = htonl(INADDR_ANY); rLyLinux联盟
rLyLinux联盟
3. 编译安装UPnP SDK rLyLinux联盟
# make rLyLinux联盟
# make install rLyLinux联盟
rLyLinux联盟
4. 解包Linux-IGD rLyLinux联盟
# tar xzvf linuxigd-0.92.tgz rLyLinux联盟
rLyLinux联盟
5. 编译安装Linux-IGD rLyLinux联盟
# cd linux-igd rLyLinux联盟
# make rLyLinux联盟
# make install rLyLinux联盟
rLyLinux联盟
B. 配置 rLyLinux联盟
-------- rLyLinux联盟
1. 增加多播路由 rLyLinux联盟
# route add -net 239.0.0.0 netmask 255.0.0.0 eth0 rLyLinux联盟
rLyLinux联盟
2. 为iptables建议一个软链接 rLyLinux联盟
# cd /usr/sbin rLyLinux联盟
# ln -s /sbin/iptables ./ rLyLinux联盟
rLyLinux联盟
启动UPnP rLyLinux联盟
# upnpd ppp0 eth0 rLyLinux联盟
rLyLinux联盟
诊断UPnP运行状态 rLyLinux联盟
# tail /var/log/messages rLyLinux联盟
rLyLinux联盟
如果能够看到: rLyLinux联盟
rLyLinux联盟
Dec  14 16:01:49 doorway -- MARK -- rLyLinux联盟
Dec  14 16:02:15 doorway upnpd: rLyLinux联盟
The Linux UPnP Internet Gateway Device Ver 0.92 by Dime (dime@gulfsales.com) rLyLinux联盟
rLyLinux联盟
Dec  14 16:02:15 doorway upnpd: rLyLinux联盟
Special Thanks for Intel's Open Source SDK and original author Genmei Mori's work. rLyLinux联盟
rLyLinux联盟
则说明UPnP已经成功启动。 rLyLinux联盟
rLyLinux联盟
C. 测试 rLyLinux联盟
-------- rLyLinux联盟
以支持UPnP的P2P网络电视PPLive为例,在PPLive中打开UPnP支持选项,然后连接一个频道。 rLyLinux联盟
在Linux中执行: rLyLinux联盟
# tail /var/log/debug -f rLyLinux联盟
rLyLinux联盟
如果能看到: rLyLinux联盟
Dec 14 16:56:33 doorway upnpd: AddPortMap: RemoteHost: (null) Prot: 17 ExtPort: 3226 Int: 10.0.0.2.3226  rLyLinux联盟
Dec 14 16:56:33 doorway upnpd: AddPortMap: RemoteHost: (null) Prot: 6 ExtPort: 3226 Int: 10.0.0.2.3226  rLyLinux联盟
Dec 14 16:56:33 doorway upnpd: AddPortMap: RemoteHost: (null) Prot: 6 ExtPort:  3156 Int: 10.0.0.2.3156 rLyLinux联盟
Dec 14 16:56:33 doorway upnpd: AddPortMap: RemoteHost: (null) Prot: 6 ExtPort:  3156 Int: 10.0.0.2.3156 rLyLinux联盟
rLyLinux联盟
则说明PPLive已经向UPnP请求进行端口映射了。只要看到这样的字样,就说明UPnP已经完全工作起来了。rLyLinux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息