当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > 让Linux NAT firewall支持MSN Messenger

Unix/Linux
Linux 备份 恢复方法
Linux玩CS反恐精英的方法
在一个ISO镜像中集成多个不同的linux发行版,可刻盘,可引导
Linux 快捷键使用
Linux DHCP 服务器配置方法介绍
Linux 22端口的修改方法
Linux 记录会话过程的命令
Linux 后台执行程序如何操作?
linux Wget命令来浏览网页的方法
Linux tail命令的巧妙应用
Wine 中文存在很多的乱码怎么解决方法
linux 新手教程之创建锁文件的方法
配置Linux 保证其系统的安全
Linux DHCP协议实现过程
Linux系统下破解SAM密码
linux/unix vi 编辑器用法详解
Linux 误删文件的解决方法
Linux系统下的历史记录删除方法
Red Hat Linux 安全设置指南
Linux基本命令-注销、关机、重启

Unix/Linux 中的 让Linux NAT firewall支持MSN Messenger


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 41 ::
收藏到网摘: n/a

作者:dagger无崖阁xyg.ods.org版本:1.0 2003-06-22 初始版本一、引言目前Linux的NAT和firewall只支持MSN Messenger的文字聊天,本文介绍了如何让Linux的NAT和firewall支持MSN Messenger的语音聊天、文件传送等其它功能的方法。
二、几个基本概念1、Linux NATNetwork Address Translation (NAT)是IETF的一个标准,用来使在私有网络中的PC和设备共享一个公开的可路由的IPv4地址。使用NAT的一个主要原因是缓解目前IPv4地址资源的不足。通常NAT被用在网关设备中,位于私有网络和公共Internet之间。当IP包要通过网关时,NAT就会把私有IP地址、端口和公开的IP地址、端口作转换。Linux 2.4内核中NAT分为两种,Source NAT (SNAT)和Destination NAT (DNAT)。Source NAT就是转换IP包头的源地址,SNAT总是在POSTROUTING中处理,即包被发送出去之前。Masquerading(IP伪装)是SNAT的一种特殊形式。Destination NAT就是转换IP包头的目的地址,DNAT总是在PREROUTING中处理,即在收到包后在路由处理之前。Port forwarding、load sharing、和transparent proxying都是属于DNAT。Linux 2.4内核的NAT流程图: _____ _____ / \ / \ PREROUTING -->[Routing ]----------------->POSTROUTING-----> \D-NAT/ [Decision] \S-NAT/ | ^ | | | | | | | | | | | | --------> Local Process ------2、Linux Packet Filter在Linux中使用包过滤(Packet Filter)来实现防火墙(firewall)的功能。Linux在内核中检查通过的包头,决定所有包的命运,可能是丢弃(DROP)这个包,或允许(ACCEPT)包通过,或其它更复杂的动作。使用包过滤主要可以实现控制、安全和警戒的功能。Linux 2.4内核中有三个过滤规则表,它们是INPUT、FORWARD和OUTPUT。对于数据包,如果是发给本机的,则交INPUT处理;如果是发给其它PC或设备的,则交FORWARD处理;如果是由本机发送的,则交OUTPUT处理。Linux 2.4内核的Packet Filter流程图: _____ Incoming / \ Outgoing -->[Routing ]--->|FORWARD|-------> [Decision] \_____/ ^ | | v ____ ___ / \ / \ |OUTPUT| |INPUT| \____/ \___/ ^ | | ----> Local Process ----3、UPnPUniversal Plug and Play (UPnP)是一种架构,用来实现目前流行的PC、智能设备或装置(特别是家庭中的)的端到端的网络连接。UPnP基于Internet标准和技术,如TCP/IP、HTTP和XML,支持“零配置”网络和自动发现,一个设备可以动态地加入一个网络,获得一个IP地址,声明自己的名字,向其它设备回应自己的能力,并学习到网络中其它设备的存在和能力。进一步,一个设备可以平滑地并自动地离开这个网络,不会留下任何不期望保存的状态。UPnP会集了多个厂商的合作,以建立标准的Device Control Protocols (DCPs),使用XML来表达,通过HTTP来通信,并提出了Internet Gateway Device (IGD)规格。4、MSN Messenger使用的端口微软的MSN Messenger软件是流行的即时通行软件,包含很多功能,根据微软的资料这个软件需要使用很多端口。文字聊天:TCP 1863或80音频和视频聊天:UDP 5004-65535 动态分配应用共享和白板:TCP 1503文件传输:TCP 6891-6900 允许一次传10个文件远程助手:TCP 3389三、遇到的问题目前我这里的环境是在网关的计算机上装了Redhat Linux 8.0,配置了Masquerading可以让内部网络中的计算机共享上网;配置了firewall限制外部计算机对网关的部分端口的访问。内部网络中的计算机除了MSN Messenger的文字聊天可以正常与外界通信外,其它如音频聊天、文件传输等功能都无法实现。NAT的问题:* 在NAT后面的计算机使用私有IP地址,MSN Messenger会把这个私有IP地址的数据传送给对端,而NAT只能转换IP包头的内容,无法转换IP包数据中包含的私有地址。* NAT需要Port forwarding (端口映射)来使外部IP地址和端口与内部计算机IP地址与端口对应。MSN Messenger动态使用端口,需要NAT能动态端口映射。* 对于使用静态端口的情况,在NAT后面只能有一台计算机使用此功能。firewall的问题:* 对应MSN Messenger的TCP和UDP端口不能禁止,需要都开放。四、解决方法1、方案MSN Messenger使用了UPnP,我们只要在Linux网关中支持UPnP,就能让MSN Messenger实现自动获得相应的NAT或firewall信息,从而可以使用正确的IP地址和端口来通信。目前已经有Linux下的UPnP开发包(libupnp)和支持Internet Gateway Device规格的应用软件(linux-igd)。2、获得软件包libupnp-1.2.1.tar.gzhttp://sourceforge.net/projects/upnplinuxigd-0.92.tgzhttp://sourceforge.net/projects/linux-igd3、编译安装由于linuxigd-0.92原来是基于1.0.4版的UPnP开发包开发的,所以需要适当改动以支持最新的1.2.1版UPnP开发包。(1) 编译安装libupnptar xzvf libupnp-1.2.1.tar.gzcd libupnp-1.2.1/upnp/make DEBUG=1 WEB=0make install安装后UPnP开发包的头文件就安装在/usr/include/upnp目录下,库文件就安装在/usr/lib目录下。(2) 编译安装linuxigdtar xzvf linuxigd-0.92.tgzcd linux-igd/cp ../libupnp-1.2.1/upnp/sample/common/sample_util.c sample_util.cppcp ../libupnp-1.