首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>网络管理>网络应用>正文

让Linux NAT服务器支持UPnP

http://www.oklinux.cn  2007-01-04  来源: linux.chinaunix.net Nanu  会员收藏  游客收藏  【 】 
参考文献:
《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. 增加多播路由
代码:
# route add -net 239.0.0.0 netmask 255.0.0.0 eth0


2. 为iptables建议一个软链接
代码:
# cd /usr/sbin
# ln -s /sbin/iptables ./


启动UPnP
代码:
# upnpd ppp0 eth0


诊断UPnP运行状态
代码:
# tail /var/log/messages


如果能够看到:
引用:

Dec 14 16:01:49 doorway -- MARK --
Dec 14 16:02:15 doorway upnpd: The Linux UPnP Internet Gateway Device Ver 0.92 by Dime ([email protected])
Dec 14 16:02:15 doorway upnpd: Special Thanks for Intel's Open Source SDK and original author Genmei Mori's work.


则说明UPnP已经成功启动。

C. 测试
--------
以支持UPnP的P2P网络电视PPLive为例,在PPLive中打开UPnP支持选项,然后连接一个频道。
在Linux中执行:
代码:
# tail /var/log/debug -f


如果能看到:
引用:

Dec 14 16:56:33 doorway upnpd: AddPortMap: RemoteHost: (null) Prot: 17 ExtPort: 3226 Int: 10.0.0.2.3226
Dec 14 16:56:33 doorway upnpd: AddPortMap: RemoteHost: (null) Prot: 6 ExtPort: 3226 Int: 10.0.0.2.3226
Dec 14 16:56:33 doorway upnpd: AddPortMap: RemoteHost: (null) Prot: 6 ExtPort: 3156 Int: 10.0.0.2.3156
Dec 14 16:56:33 doorway upnpd: AddPortMap: RemoteHost: (null) Prot: 6 ExtPort: 3156 Int: 10.0.0.2.3156


则说明PPLive已经向UPnP请求进行端口映射了。只要看到这样的字样,就说明UPnP已经完全工作起来了。

原文链接:http://bbs.chinaunix.net/viewthread.php?tid=668952


上一篇:使用 mailman 架设邮件列表   下一篇:使用apt-mirror构建本地Debian镜像


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·使用apt-mirror构建本地Debian镜像
·Ubuntu下构建LAMP服务器
·使用 mailman 架设邮件列表
·Slackware10.2做NAT服务器
·利用IP 别名托管多个SSL 站点
·Ubuntu Linux 下的带宽监测工具
·对Rsync的一些了解
·用Perl管理 Linux 配置文件
·CentOS下用OpenSSH构建SSH服务器
·在 Linux 上进行自动备份
·用SSH客户端软件登录到服务器
·Linux内核: 修改TCP/IP调优参数
·在 Linux 上构建 Web spider
·在 Linux 上构建网络路由器
·使用 ssh 进行安全的连接
·详细介绍对Samba的三种典型配置方法
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·VMware下让Linux系统与真实主机共享上
·Linux系统下服务器的硬件检查和文件传
·在虚拟机Redhat Linux下安装Samba服务
·Linux操作系统下PPPOE拨号共享上网方法
·xManager连接Linux的配置方法
·Linux和Window系统远程桌面相互访问方
·Ubuntu下用手机连接蓝牙局域网pan/pand
·如何解决Xmanager不能登陆Linux系统问
·通过Amora用symbian手机控制Linux计算
·在Linux操作系统下单网卡实现双IP的设
·Linux下使用Openssh工具远程管理Solari
·VMware下Linux与真实主机共享上网的方
  阅读排行
·LVS集群学习笔记(NAT\DR\IP tunnel)
·Linux系统邮件服务器常见错误报告列表
·防火墙也能DIY----免费的专业级防火墙M
·linux下文件服务Vsftp详细介绍
· 快速架设apache/vsftpd/samba/sendmai
· Linux下Tomcat配置技巧详解分析
·如何利用集群技术实现Web服务器的负载
·Suse Linux下的samba设置用户说明
·Linux操作系统下SVN服务器的搭建详解
·RHEL5实现高可用HA集群+GFS+Enterprise
· Snort 用户手册
·使用 screen 管理你的远程会话
·Linux操作系统下的集群工作原理及实战
·用Xmanager远程管理LINUX,AIX等UNIX系
·在VMware的虚拟机平台上如何进行网络设
网摘收藏: