Linux中国  设为主页
 收藏本站
 
当前位置: > 首页 ->Linux技术 ->网络应用 ->让Linux NAT服务器支持UPnP
  相关分类: 
入门与提高
系统管理
网络应用
嵌入式系统
内核研究
服务器相关
发行版专区
Linux程序设计
Linux安全
BSD相关
桌面应用
  站内搜索: 
热门文章排行
热门文章排行 使用Linux L2TP/IPsec VPN 服务器 (04-22)
让你的Linux用起来跟Windows无异(图(08-15)
Linux代理服务器和防火墙配置详细解(05-28)
高手进阶 学会做嵌入式Linux操作系统(06-03)
如何在Linux下查看已经安装了哪些软(04-25)
精采文章排行
精采文章排行 解决Linux系统下管道被接受方关闭的(04-24)
Linux操作系统下三种配置环境变量的(04-24)
Ubuntu新版Linux免费下载与Novell竞(04-24)
Linux操作系统下图形界面模式更改IP(04-24)
把IE收藏夹导出到Ubuntu系统下的Fire(04-24)
 

让Linux NAT服务器支持UPnP

作者:Nanu    来源:linux.chinaunix.net   点击:   日期:2007-04-22 [收藏] [投稿]

  IE是否经常中毒?推荐您

参考文献:
《UPnP on your Linux 2.4 firewall how-to》 by bijl
《让 Linux NAT 服务器支持 UPnP》 by lonestar
《UPnP为我们献上一道如何的大餐》 by Sharon Crawford
=========================================

注意:如果对网络安全要求较高或要求高可控制性的网络,则不要安装配置UPnP支持,否则会导致网络NAT映射比较混乱,从而引发许多问题。建议小型网络或者家庭网络使用UPnP。

最近经常使用一些P2P类型软件,发现老得在Linux服务器上手动设置NAT,非常麻烦,而看着许多P2P软件都支持UPnP就眼馋,如果能让Linux支持UPnP那就简单方便多了!于是在网上搜索了一下有关让Linux支持UPnP的文章,于是就写了这篇文章。

一、什么是UPnP

1. UPnP简介
--------------
UPnP(Universal Plug and Play)技术对即插即用进行了扩展,它简化了家庭或企业中智能设备的联网过程。在结合了UPnP技术的设备以物理形式连接到网络中之后,它们可以通过网络自动彼此连接在一起,而且连接过程无需用户的参与

UPnP规范基于TCP/IP协议和针对设备彼此间通讯而制订的其它Internet协议。这就是它之所以被称作"通用(Universal)" 的原因所在--UPnP技术不依赖于特定的设备驱动程序,而是使用标准的协议。UPnP设备可以自动配置网络地址,宣布它们在某个网络子网的存在,以及互相交换对设备和服务的描述。基于Windows XP的计算机可以充当一个UPnP控制点,通过程序界面对设备进行发现和控制。

如果与以前的即插即用相比,这种技术似乎并不具有什么革命性的意义。在操作系统中增加即插即用技术使得在单个计算机上安装、配置和添加外设的工作变得更容易了。但是UPnP为家庭用户或者小型办公环境中的非专业用户所带来的是一道更加美味的"大餐",他们可以利用UPnP玩多人游戏,进行实时通信(Internet电话,电话会议)以及使用类似Windows XP的远程协助这样的其它技术。

2. NAT 穿越技术
------------------
NAT穿越技术允许网络应用程序对它们是否位于一个具有UPnP能力的NAT设备之后进行检测。然后,这些程序将获得共享的全球可路由IP地址,并且配置端口映射以将来自NAT外部端口的数据包转发到应用程序使用的内部端口上--所有这一切都是自动完成的,用户无需手动映射端口或者进行其它工作。 NAT穿越技术允许网络设备或者点对点应用程序通过动态开启和闭合与外部服务之间的通信端口穿过NAT网关与外界通信。

二、在Linux中部署UPnP支持

我们假设该Linux的内核版本是2.4.x,使用拨号上网,外网接口是ppp0,内网接口是eth0,并且已经启用iptables设定了 NAT。

在Linux中部署UPnP主要使用2个软件的配合:UPnP SDK for Linux和LinuxIGD。

下载地址:
引用:
UPnP SDK for Linux: http://sourceforge.net/projects/upnp/
LinuxIGD: http://linux-igd.sourceforge.net/


注意:要下载upnpsdk-1.0.4.tar.gz,1.0.4以上的版本不能和LinuxIGD很好的协同工作!

A. 安装:
----------
1. 解包UPnP SDK
代码:
# tar xzvf upnpsdk-1.0.4.tar.gz


2. 修改源代码
为了能够使Windows MSN Messenger在UPnP下正常通讯,所以必须修改源代码:
代码:
# cd upnpsdk-1.0.4
# vi src/ssdp/ssdplib.c

将第406行的:

引用:
SelfAddr.sin_addr.s_addr = inet_addr(SSDP_IP);


改为:

S
引用:
elfAddr.sin_addr.s_addr = htonl(INADDR_ANY);


3. 编译安装UPnP SDK
代码:
# make
# make install

4. 解包Linux-IGD
代码:
# tar xzvf linuxigd-0.92.tgz


5. 编译安装Linux-IGD
代码:
# cd linux-igd
# make
# make install

B. 配置
--------
1. 增加多播路由


 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<

上一页12 下一页

上一篇:使用netcat命令网络同步复制系统   下一篇:使用Linux L2TP/IPsec VPN 服务器
·Linux操作系统下三种配置环境变量的方法·Ubuntu新版Linux免费下载与Novell竞争激·Linux操作系统下图形界面模式更改IP地址·把IE收藏夹导出到Ubuntu系统下的Firefox·Ubuntu Linux系统使用Vim进行Rails编码·在Linux Debian操作系统下成功安装E17桌·第二届年度红帽创新奖颁予创新科技成就·分析称Linux可在2013年占有20%移动市场·KDE和GNOME两大阵营将携手共创Linux桌面
代码:
文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论

   相关文章:
·解决Linux系统下管道被接受方关闭的问题

   文章评论:(1条)
  
 请留名: 匿名评论   点击查看所有评论 论坛讨论
 

 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。