论坛风格切换切换到宽版
  • 739阅读
  • 7回复

[问题求助][img]http://linux.chinaunix.net/bbs/images/default/folder_jinghua.gif[/img]让Linux NAT服务器支持UPnP [复制链接]

上一主题 下一主题
离线hekate.
 
发帖
2011
C币
-60972
威望
352
贡献值
1
银元
-2
铜钱
4292
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
=========================.==.==============             电子
作者:Nanu
如需转载请注明作者,谢谢!
参考文献:
《UPnP on your Linux 2.4 firewall ho.w-to》 b.y bijl服务器
《让 Lin.ux. NAT 服务器支持 UPnP》 by lonestar[成人用品]
《UP.nP为我们献上一道怎样的大餐》. by Sharon Crawford           鲜花
===================.====.==================.

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

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

一、什么是UPnP

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

UPnP规.范基于TC.P/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 fo.r 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以上的版本不能和Linux.IGD很好的协同工作!投资

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

2. 修改源代码
为了能够使Window.s MSN Mess.enger在UPnP下正常通讯,所以必须修改源代码:健康
# cd upnps.dk-1.0.4健康
#. vi src/ssdp/ssdplib.c服务器
将第406行的:

SelfAddr.sin_addr.s_addr = inet_addr(.SSDP_IP).;.

改为:

SelfAddr.sin._addr.s_addr = hto.nl(INADDR_ANY);学习

3. 编译安装UPnP SD.K外贸
# make
# make install

4. 解包Linux-IGD
# tar xzvf. lin.uxigd-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
# u.pnpd ppp0 eth0             电子

诊断UPnP运行状态
# .tail /var/log/messages            杀毒

如果能够看到:

Dec  14 16:01:.49 do.orway -- MARK --              乙肝
Dec  14 16:02:15 doorway upnpd: The Lin.ux UPnP Internet Gateway Device Ver 0.92 by Dime (.dime@gulfsa.les.com)[成人用品]
Dec  14 16:02:15 doorway upnpd: Special T.hanks for Intel's Open Source SDK and original author Genmei. Mor.i's work.    美容

则说明UPnP已经成功启动。

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

如果能看到:

Dec  14 16:56:33 doorway upnpd: AddPortMap: R.emoteHost: (null) Pr.ot: 17 ExtPort: 3226 Int: 10..0.0.2.3226 --------------彩票
Dec  14 .16.:56:33 doorway upnpd: AddPortMap: Remo.teHost: (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.3.1.5.6电影
Dec  14 16:56:33 doorway upnpd: AddPortMap: RemoteHos.t: (null) P.rot: 6 ExtPort:  31.56 Int: 10.0.0.2.3156              乙肝

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

[ 本帖最后由 Nanu .于 2.005-12-14 18:19 编辑 ]外贸

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线taimushan.
发帖
2270
C币
-60211
威望
434
贡献值
1
银元
-3
铜钱
5074
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-13
Re:[img]http://linux.chinaunix.net/bbs/images/default/folder_jinghua.gif[/img]让Linux
比特精灵有寻找网络中 UPnP 并自动打开端口的功能,一直想让 Linux 也支持,现在终于有方法了 ^_^

离线122284197.
发帖
2115
C币
-235616
威望
365
贡献值
1
银元
-4
铜钱
4739
人人网人气币
0
只看该作者 板凳  发表于: 2010-04-13
Re:[img]http://linux.chinaunix.net/bbs/images/default/folder_jinghua.gif[/img]让Linux
看到一个小问题


QUOTE:1. 增加广播路由
# route add -net 239.0.0.0 netmask 255.0.0.0 eth0

这不是“广播”,而是“多播”,为什么会用到多播还不清楚,不知道 UPnP 的工作原理。。。。

离线yszkm.
发帖
2099
C币
-152659
威望
380
贡献值
1
银元
-3
铜钱
4664
人人网人气币
0
只看该作者 地板  发表于: 2010-04-13
Re:[img]http://linux.chinaunix.net/bbs/images/default/folder_jinghua.gif[/img]让Linux
啊!对对对!应该是多播!呵呵,谢谢斑竹啊!

离线wangzh102.
发帖
2155
C币
-138921
威望
407
贡献值
1
银元
-1
铜钱
4831
人人网人气币
0
只看该作者 4楼 发表于: 2010-04-13
Re:[img]http://linux.chinaunix.net/bbs/images/default/folder_jinghua.gif[/img]让Linux
在没看这个帖子的时候,我刚远程布置过这个东西,但还没有来的及测试。其实安装并不难,就是大家都没想到linux能支持这个东西,那两个版本的软件的东西都是好几年前出的东西了。不过现在已经有了更新版本的了,sdk 到了1.2.2,igd到了1.0

离线南芝恋.
发帖
2174
C币
-262562
威望
390
贡献值
1
银元
-1
铜钱
4808
人人网人气币
0
只看该作者 5楼 发表于: 2010-04-13
Re:[img]http://linux.chinaunix.net/bbs/images/default/folder_jinghua.gif[/img]让Linux


QUOTE:原帖由 skylove 于 2005-12-15 00:29 发表
因为upnp用到了udp1900端口进行广播,否则它根本不知道内网内存在着多少机器有开着upnp的(注意,在我的实际观察中,目的地是广播地址),因此在一个比较大的子网中,upnp容易导致广播风暴,而且是一定时间搜索一 ...

根据我看的文档,multicast和broadcast都用了,但broadcast只用在dhcp和duplicate IP detection上
参考www.upnp.org上文档:<UPnP Device Architecture v1.0.1 Draft >

http://www.upnp.org/resources/do ... DA101-20031202s.pdf

离线海龟的.
发帖
2199
C币
-235349
威望
396
贡献值
6
银元
4
铜钱
4851
人人网人气币
0
只看该作者 6楼 发表于: 2010-04-13
Re:[img]http://linux.chinaunix.net/bbs/images/default/folder_jinghua.gif[/img]让Linux
ok,谢谢了~~~ 等下吃了饭就去拜读

离线alluse.
发帖
2180
C币
-559263
威望
382
贡献值
1
银元
-2
铜钱
4770
人人网人气币
0
只看该作者 7楼 发表于: 2010-04-13
Re:[img]http://linux.chinaunix.net/bbs/images/default/folder_jinghua.gif[/img]让Linux
先收下......
快速回复
限100 字节
批量上传需要先选择文件,再选择上传
 
上一个 下一个