使用NAT打造FTP服务新法
- 格式:doc
- 大小:55.00 KB
- 文档页数:7
NAT穿透技术穿透原理和方法详解NAT(Network Address Translation)是一种将私有网络中的IP地址转换为公网IP地址的技术。
它的主要作用是解决了IPv4地址资源不足的问题,同时也提供了一定程度的网络安全保护。
然而,NAT也带来了一些问题,其中最显著的就是它在一些情况下会阻碍对私有网络中主机的远程访问。
为了解决NAT对远程访问的限制,出现了NAT穿透技术。
NAT穿透技术允许位于私有网络中的主机与公网上的主机建立直接的连接,从而使得私有网络中的主机可以被公网上的主机访问到。
下面详细介绍NAT穿透技术的实现原理和具体方法。
一、NAT穿透的原理:私有网络中的主机首先与穿透服务器建立连接,并将本地IP和端口号发送给穿透服务器。
穿透服务器将这些信息记录下来并分配一个公网IP和端口号。
对于公网上的主机来说,私有网络中的主机就像一个虚拟的公网主机一样可直接访问。
同时,私有网络中的主机也可以主动发起连接到公网上的主机。
私有网络中的主机相当于是通过穿透服务器将自己的通信请求“穿透”了NAT 防火墙,直接到达公网上的主机。
二、NAT穿透的方法:1.端口映射:端口映射是最常见和简单的NAT穿透方法之一、私有网络中的主机将本地的端口号映射到公网IP的一些端口上,然后通过穿透服务器将请求转发到该端口上,从而实现私有网络中主机的远程访问。
2.中继服务器:中继服务器是一种在公网上与私有网络中的主机建立连续连接的方法。
私有网络中的主机首先连接到中继服务器,然后公网上的主机也连接到中继服务器,中继服务器将两端的请求进行转发,从而实现私有网络中的主机和公网上的主机直接通信。
3.UDP打洞:UDP打洞是一种通过UDP协议来穿透NAT防火墙的方法。
私有网络中的主机先向公网主机发送一个UDP数据包,公网主机也向私有网络的主机发送UDP数据包,通过这两个数据包的发送和接收,NAT防火墙会记录下私有网络中主机的IP和端口号,从而实现两者之间的直接通信。
NAT技术在网络中的应用与实现NAT(Network Address Translation)是一种网络技术,它在网络中的应用与实现有着广泛的应用。
一、应用场景1.IP地址转换:在一个局域网中使用私有IP地址,通过NAT技术将私有IP地址转换为公有IP地址,以实现与互联网的通信。
这使得使用私有IP地址的企业或组织可以在不需要大量公有IP地址的情况下连接到互联网。
2.隐私和安全:NAT技术可以隐藏内部网络的真正IP地址,使得外部网络无法直接访问内部网络中的设备。
这提高了内部网络的安全性,并减少了受到攻击的可能性。
3.负载均衡:NAT技术可以将外部网络的请求分发到内部网络中的多个服务器上,实现负载均衡。
这可以提高网络的性能和可靠性,避免单一服务器的过载或故障导致整个网络的中断。
4.IPv4向IPv6的过渡:NAT技术可以用作IPv4和IPv6之间的转换技术。
通过使用NAT64和DNS64技术,将IPv6地址转换为IPv4地址,以允许IPv6设备访问IPv4互联网。
二、实现方式1.静态NAT:静态NAT是一种一对一的映射关系,将内部网络中的私有IP地址映射到外部网络中的公有IP地址。
当外部网络收到来自公有IP地址的请求时,NAT会将请求转发给相应的私有IP地址。
2.动态NAT:动态NAT是一种一对多的映射关系,将内部网络中的私有IP地址映射到外部网络中的一个或多个公有IP地址。
当外部网络收到来自公有IP地址的请求时,NAT会根据预先设定的策略将请求转发给相应的私有IP地址。
3.PAT(端口地址转换):PAT是一种一对多的映射关系,通过映射不同的端口号,将多个内部网络中的私有IP地址映射到外部网络中的一个公有IP地址。
当外部网络收到来自公有IP地址和端口号的请求时,NAT会将请求转发给相应的私有IP地址和端口号。
4.NAT64和DNS64:NAT64和DNS64是用于IPv6和IPv4之间转换的技术。
当IPv6设备需要访问IPv4互联网时,它将发送一个特殊的DNS查询请求,该请求会被NAT64服务器捕获并解析。
群晖nat规则全文共四篇示例,供读者参考第一篇示例:群晖NAS是一款备受用户青睐的网络存储设备,其功能强大且易于操作。
在使用群晖NAS时,经常需要设置一些网络规则来保障网络安全和优化网络连接。
设置NAT规则是非常重要的一项工作。
NAT,即网络地址转换,是一种网络通讯协议,用于在私有网络和公共网络之间进行通讯。
NAT规则的作用是将内部网络的私有IP地址映射为外部网络的公共IP地址,实现内网外网的连接。
在群晖NAS 中,设置NAT规则可以帮助用户实现多种网络功能,如端口映射、虚拟服务器、固定IP分配等。
在群晖NAS中设置NAT规则非常简单。
用户只需登录NAS的管理界面,找到“网络管理”或“端口转发”等功能模块,然后点击“新增规则”或“添加规则”,填写相应的规则信息即可。
在填写规则信息时,用户需要指定规则的类型(如端口映射、虚拟服务器)、内外网IP地址、端口范围等参数,完成设置后点击“保存”即可生效。
设置NAT规则的目的主要有以下几点:1. 端口映射:通过设置端口映射规则,可以将内网某个端口映射到外网的指定端口,实现远程访问内网服务的功能。
用户可以将内网的HTTP服务映射到外网的80端口,使外部用户可以通过浏览器访问内网的网站。
2. 虚拟服务器:虚拟服务器是指将公共IP地址映射到内网的某个设备上,从而实现外部对该设备的访问。
通过设置虚拟服务器规则,用户可以将外网流量导向内网的特定设备,比如监控摄像头、文件服务器等。
3. 固定IP分配:有些用户可能希望某些设备在网络上始终保持固定的IP地址,以便于管理和访问。
通过设置NAT规则,用户可以为某个设备分配固定的IP地址,确保其在网络中的唯一性和稳定性。
除了上述功能之外,设置NAT规则还可以帮助用户实现端口转发、路由转发等网络功能,提升网络性能和安全性。
在设置NAT规则时,用户需要注意一些常见问题,如规则冲突、端口占用、安全漏洞等,及时调整和优化规则,确保网络正常运行。
利用网络地址转换NAT实现内外网互通网络地址转换(NAT)是一种通信协议,用于在私有网络和公共网络之间建立连接,从而实现内外网的互通。
NAT的作用是将私有网络中的IP地址转换为可以在公共网络上识别的外部IP地址,以实现内网和外网的通信。
本文将介绍如何利用NAT技术实现内外网互通,并讨论NAT的优点和缺点。
一、NAT的原理和功能网络地址转换(NAT)是一种在网络层对IP地址进行转换的技术。
它通过将私有IP地址转换为公共IP地址,使得私有网络中的主机可以和公共网络中的主机进行通信。
NAT的主要功能包括以下几点:1. IP地址转换:NAT将内网的私有IP地址转换为公共网络中的公共IP地址,以实现内外网之间的通信。
2. 端口转换:NAT可以将内网主机的端口映射到公共网络中的端口,以实现多个内网主机通过同一个公共IP地址访问公共网络。
3. 地址映射:NAT会为内网主机分配一个唯一的公共IP地址,使得内网主机可以在公共网络中被识别和访问。
二、利用NAT实现内外网互通的步骤实现内外网的互通需要按照以下步骤进行配置:1. 配置NAT设备:首先,需选择合适的NAT设备作为网关,该设备负责将内网的IP地址转换为公共网络的IP地址。
配置NAT设备需要指定内网和外网的接口,并设置相应的IP地址、子网掩码和网关信息。
2. 配置内网主机:将内网主机连接到NAT设备的内网接口,并对主机进行相应的IP地址配置。
内网主机的IP地址应与NAT设备内网接口位于同一子网。
3. 配置网络策略:根据需求配置网络策略,允许或限制内网主机与公共网络中的主机进行通信。
网络策略规定了内外网之间的访问规则,可以根据需求设置相应的端口映射、访问限制等。
4. 测试网络连通性:配置完成后,进行网络连通性测试,确保内网主机可以正常访问外部网络资源,以及外部网络可以访问内网主机。
如有问题,可通过诊断工具进行故障排查。
三、NAT的优点和局限性NAT技术作为实现内外网互通的关键技术,具有以下几个优点:1. 节省IP地址:通过NAT技术,可以将多个内网主机映射到一个公共IP地址上,有效节省了IP地址资源的使用。
报⽂解析FTP主动被动模式和FTP结合NAT使⽤FTP模式介绍FTP的主动模式和被动模式的区别:主动模式:(也叫Standard模式,PORT⽅式)FTP服务器主动去连接FTP客户端。
FTP客户端告诉FTP服务器使⽤什么端⼝进⾏侦听,FTP服务器和FTP客户端的这个端⼝进⾏连接,源端⼝是20。
被动模式:(也叫Passive模式,也叫PASV⽅式)FTP服务器被动的等待FTP客户端连接⾃⼰。
FTP服务器打开指定范围内的某个端⼝(也叫⾃由端⼝,1024--65535之间),被动的等待客户端进⾏连接。
主被动模式报⽂解析建⽴控制连接的过程登录的时候客户端是44.1.1.44服务器是33.1.1.33,⽤户名1密码111111通过命令⾏登录Client:syn 我请求跟你进⾏连接Server:ack+syn 可以,我也请求跟你连接Client:ack 可以(上⾯是三次握⼿)Server:response 我这ready准备好了Client:ack 好的Client:request 我使⽤的user是1Server:response 请输⼊密码Client:ack 好的,收到Client:request 我⽤的密码是111111Server: response ⽤户名1 ,密码111111,正确,logged in,允许进⼊Client:ack 好的上⾯是进⾏的连接控制的简单过程,FTP服务器使⽤的端⼝号是21,FTP客户端使⽤的端⼝号是64023。
主动连接:客户端通过PORT命令告诉服务器⾃⼰要使⽤的数据端⼝号,然后在客户端主动建⽴起这个端⼝的监听。
进⾏⽂件传输的时候,服务器来连接客户端的这个数据接⼝,进⾏数据传输。
FTP客户端想要下载⽂件,get hfs.exeClient:request 我发送了PORT命令要使⽤主动连接,使⽤64024进⾏侦听Server:response 主动连接的指令成功Client:request 我想要hfs.exe⽂件Server:response 为hfs.exe打开数据连接Server:syn 主动请求建⽴数据连接,源端⼝号20,⽬的端⼝号64024Client:ack+syn 可以,请求与服务器建⽴连接,sport:64024,dport:20Server:ack 可以之后就是server和client之间传输数据的过程,⼀直到⽂件传完Server:response 给client发送⼀条命令,⽂件传输okClient:ack 好的以上是主动模式的过程被动连接:FTP客户端发送PASV命令到FTP服务器,想使⽤PASV⽅式传输数据。
一步步教你配置NAT(服务器篇)一步步教你配置NAT(服务器篇)【网友提问】我是一名公司的网管,想问一下NAT技术一般都在什么时候用,在windows 2 003和路由器上如何配置NAT?希望IT168能够帮助我解答!谢谢!经常听身边的网管朋友谈论NAT技术,那么什么时候用到NAT技术呢?主要有两方面,第一是公网IP地址不够用,当企业只租用到了数量有限的公网IP时,不可能为内部每台计算机都分配一个公网IP,如何解决IP地址不够用的问题呢?这时就可以采用NAT技术,多个内部计算机在访问INTERNET时使用同一个公网IP 地址;第二是当公司希望对内部计算机进行有效的安全保护时可以采用NA T技术,内部网络中的所有计算机上网时受到路由器或服务器(防火墙)的保护,黑客与病毒的攻击被阻挡在网络出口设备上,大大提高了内部计算机的安全性。
接下来笔者将带领大家一步步在Windows 2003 Server服务器上配置并启用NAT功能。
具体网络环境:电信的ADSL,交换机一个,服务器一台,客户机若干,网线已经做好,所有机器上用的都是windows2000或是XP。
配置服务器NAT地址转换第一步:启动“路由和远程访问”,通过“开始->程序->管理工具->路由和远程访问”,默认状态下,将本地计算机列出为服务器。
如果要添加其他服务器,请在控制台目录树中,右键单击“服务器状态”,然后单击“添加服务器”。
第二步:右击要启用的服务器(这里是本地服务器),然后单击“配置并启用路由和远程访问”,启动配置向导。
第三步:出现欢迎页面后单击下一步。
出现选择服务器角色设置页面,选择“网络地址转换(NAT)”,接着单击下一步。
第四步:在Internet连接页面中选择“使用Internet连接”,在下面的Internet列表中选项“外网连接”,我们将让客户机通过这条连接访问Internet,界面如下图。
单击下一步继续。
小提示:这一点非常重要,一定不能把内网与外网的接口选择错误,否则配置的NA T就无法生效,因此我们在上面将本地连接的名称进行了修改,这里就显得一目了然了。
NAT类型判断工具及使用方法详解NAT(网络地址转换)是一种常见的网络技术,用于将内部网络的IP地址转换为外部网络可识别的IP地址,以实现多个内部设备共享一个公共IP地址的功能。
在实际网络环境中,我们通常需要了解每个设备的NAT类型,以确保网络连接的稳定性和性能。
本文将介绍NAT 类型判断工具以及详细的使用方法。
一、NAT类型介绍NAT类型主要分为三类,分别是开放型(Open NAT)、中等型(Moderate NAT)和严格型(Strict NAT)。
1. 开放型NAT:该类型允许设备与外部网络之间的所有通信,是最理想的NAT类型,对于在线游戏和其他对网络连接质量要求较高的应用最为适用。
2. 中等型NAT:该类型允许设备与外部网络之间的某些通信,但受到一定程度的限制。
尽管对于一般的互联网使用来说仍可满足需求,但在某些情况下可能会导致一些应用的功能不完全。
3. 严格型NAT:该类型限制了设备与外部网络之间的通信,可能导致部分应用无法正常运行。
在在线游戏等对网络要求较高的应用中,不能使用严格型NAT。
二、NAT类型判断工具要判断设备的NAT类型,我们可以使用一些专业的网络工具。
以下是两种常用的NAT类型判断工具:1. UPnP检测工具:UPnP是一种用于实现网络设备之间无缝连接和通信的协议。
通过启用UPnP功能并使用相应的工具,我们可以轻松判断设备的NAT类型。
UPnP检测工具通常会显示设备的NAT类型以及相关的网络参数,方便用户了解设备的网络连接状况。
2. 网络测试工具:网络测试工具可以通过模拟网络连接进行各项测试,其中包括NAT类型的检测。
通过发送特定的网络数据包并根据返回结果分析,网络测试工具可以准确地判断设备的NAT类型。
此类工具通常具有友好的用户界面,用户只需按照指引进行相应的操作即可获得NAT类型的判断结果。
三、使用方法下面将介绍使用UPnP检测工具和网络测试工具来判断设备的NAT 类型的具体方法。
路由器NAT配置与实际运用,实现一个IP多用户大家好,今天我们来学习交流一下路由器NAT配置与实际运用,实现一个IP多用户。
为了减缓IP地址的枯竭,94年提出的nat。
早些时候有些朋友可能已经发现,在网络控制面板中,本地连接属性里就多了个IPV6,随着时间的推移,地球上的PC越来越多,IPV4迟早要被替换掉了。
什么是NAT(网络地址转换),简单的说就是把一个IP地址转变成另外一个IP地址,又或者把多个IP地址同时转变成另外一个IP地址。
我们生活中通常运用在将局域网中的私有地址(如192.168.1.1之类的)转成运营商给我们分配的唯一的公网地址。
现在很多傻瓜式路由器都是直接配置好的,只要连接拨号或者接入wan口就可以正常使用了。
但在企业和工作室需要使用专业的设备时,我们的管理员还是要进行一些配置。
如有多个外网地址,可以指派哪些内网地址转换成哪个外网地址等,做到合理的分配外网资源。
通过本文实验,主要了解为以下几点1、静态和动态 NAT 的特征;2、掌握静态 NAT基本配置和调试;3、掌握动态 NAT基本配置和调试4、overload的使用。
实验参考配置命令例:局域网采用10Mb/s 光纤,以城域网方式对接Internet。
路由器使用带有2 个10/100 Mb/s自适应端口的Cisco 2611。
网络内部配置使用的IP地址段为10.18.100.1~10.18.104.254,局域网路由器2611端口Ethernet 0 的IP 地址为10.18.100.1,子网掩码为255.255.0.0。
网络分配的合法IP地址范围为211.82.220.80~211.82.220.87,连接ISP(电信、移动、联通)的路由器2611端口Ethernet 1的IP地址为211.82.220.81,子网掩码为255.255.255.248。
要求网络内部的所有计算机均可访问 Internet,并且在 Internet 中提供 Web、E-mail、FTP和 Media等 4 种服务。
使用NAT打造FTP服务新法NAT(Network Address Translation)是一种在计算机网络中将IP地址进行转换的技术。
通过NAT,一个局域网中的多台计算机可以通过一个公网IP地址与外部网络进行通信。
在传统的网络环境中,如果在局域网中要搭建FTP服务器,需要给FTP服务器分配一个公网IP地址,使得外部网络可以访问该服务器。
然而,公网IP地址资源有限,且每个公网IP地址需要一定的资金费用,这导致了在一般的小型局域网中搭建FTP服务器成本较高。
NAT技术可以通过端口转发来实现FTP服务器在私网中的搭建。
在这种方式下,FTP服务器将运行在局域网中的一台计算机上,而这台计算机并没有被分配一个公网IP地址。
我们可以通过配置局域网中的路由器,将来自外部网络的FTP请求定向到FTP服务器所在的计算机上。
1.先确保局域网中FTP服务器所在的计算机已经正确配置了FTP服务器软件,并且可以在局域网内正常运行。
2.在路由器中进行端口转发配置。
进入路由器的管理界面,找到端口转发或者NAT设置选项。
根据不同的路由器型号和厂商,界面和配置选项可能会有所不同。
一般来说,我们需要指定外部网络的端口和内部网络的IP地址和端口。
3.设定外部网络端口。
在端口转发配置界面中,输入外部网络端口号。
这个端口号是外部网络中用来访问FTP服务器的端口号。
常用的FTP端口号为20和214.设定内部网络IP地址和端口。
在端口转发配置界面中,输入内部网络的IP地址和端口号。
IP地址是FTP服务器所在计算机在局域网中的IP地址,端口号是FTP服务器软件所使用的端口号,默认是21端口。
5.保存配置,并重新启动路由器。
配置完成后,保存配置并重启路由器,以使修改生效。
6.在外部网络中测试访问FTP服务器。
在外部网络中,打开FTP客户端软件,输入FTP服务器所在的公网IP地址和端口号,然后输入正确的用户名和密码,即可访问FTP服务器并进行文件传输等操作。
CISCO NAT 经典配置合集(5个)示例1在本例中,公司使用一台两接口路由器,一个是Ethernet,另一个是串行接口。
Ethernet0连接到内部网络,而串行接口则通过PPP链路连接到ISP路由器。
在内部网络中,公司使用10.0.0.0/24地址范围内的地址。
公司已从其供应商那里获得了一个单一的全局可路由的IP地址171.100.1.1,并且该地址用于路由器的串行接口上。
公司使用PAT将其所有的内部本地地址转换成单一的内部全局地址171.100.1.1。
公司希望提供可以从Internet访问的FTP和Web服务器,并且对Web服务器的请求应被送到Web服务器所在的地址10.1.1.100,而FTP请求则被送到FTP服务器所在的地址10.1.1.101。
1 解决方案interface ethernet0ip address 10.1.1.1 255.255.255.0ip nat inside!interface serial0ip address 171.100.1.1 255.255.255.252ip nat outside!ip access-list permit 10.0.0.0 0.255.255.255!ip nat inside source list 1 interface serial0 overloadip nat inside source list 1 static tcp 10.1.1.100 80 171.100.1.1 80 ip nat inside source list 1 static tcp 10.1.1.101 21 171.100.1.1 21 2 分析先定义NAT所用的接口,并通过将合适的命令放在每个接口下面来定义接口是NAT内部或外部接口。
通常,在定义NAT接口之后,就要定义NAT池来指定所用的内部全局地址。
但是,在本例中只使用了一个单一的内部全局地址,并且将该单一内部全局地址用于路由器的serial 0接口上。
使用NAT打造FTP服务新法
FTP(File Transfer Protocol,文件传输协议)是Internet的传统服务之一。
FTP使用户能在两个联网的计算机之间传输文件,是Internet传递文件最主要的方法。
除此之外,FTP还提供登录、目录查询、文件操作及其它会话控制功能。
在系统中FTP服务使用23端口进行通信,在Window、Linux系统中都可以设置FTP服务。
NAT(Network Address Translation)网络地址转换,NAT服务器就是支持地址转换的代理服务器。
当有几个工作站却只有一个合法的上网账户和IP地址时,可以用NAT服务器来实现地址转换。
本文主要介绍在NAT服务器上设置FTP服务。
这样的FTP服务设置比起其它一些服务,如WWW, E-mial等要复杂得多。
这是由于FTP自身的原因,因为FTP在连接过程中,分别需要Command和Data两个通道才能实现,而其连接的起始方向,对NAT服务器规则的设置有相当重要的影响。
设置规则
假设现在NAT服务器上有3块网卡,它们分别连接不同的网络且分配不同的IP地址。
例如,第一张网卡A是用外网C类IP地址:221.7.128.1;第二张网卡接DMZ,使用A类IP:10.0.0.1;第三张网卡接内部网络,使用C类IP地址:192.168.0.1;DMZ内有一台主机,IP:10.0.0.2,并且准备提供FTP 服务(使用port 21和port 2121)。
如果DMZ和外网的路由是通的,那么NAT服务器上只进行单纯的封包过滤,没有修改packet,而且预设的policy都是DENY。
如果DMZ和外网的路由是不通的,要如何设置规则,使得FTP能顺利向外部提供服务呢?可以用如下命令将第一块网卡的port 21连接请求转至10.0.0.2的port 21来提供服务。
方法一:ipchains
我们用命令:ipmasqadm portfw -a -P tcp -L 221.7.128.1 21 -R 10.0.0.2 21来进行操作。
NAT服务器上的预设policy全为DENY,要设置所有必须的规则,让FTP能顺利向外提供服务。
以如下示例说明:
以上是在没有考虑其它安全要求、单就FTP服务进行设置的情况下,以ipchains作为命令的操作。
下面对上述命令进行说明。
命令1:ipchains -A input -i eth0 -p TCP -d 221.7.128.1 21 -j ACCEPT
建立连接用,因为使用ipmasqadm命令来实现DNAT服务器(port forward),因此,destiNAT服务器就成了NAT服务器的外部界面。
命令2:ipchains -A forward -p TCP -d 221.7.128.1 21 -j MASQ *
值得注意的是,因为在DNAT服务器时已经将destiNAT服务器socket修改过了,也就是封包input进来后,外网的IP:221.7.128.1会改变为10.0.0.2。
而且还要了解ipmasqadm 这个程序的特点,是当它修改了input packet后,就不会再有ipchains的forward检测,而是直接根据路由判断后进行output。
所以,这行是多余的,可以不要。
命令3:ipchains -A output -i eth1 -p TCP -d 10.0.0.2 21 -j ACCEPT
这是经过DNAT服务器修改后从NAT服务器主机输出到FTP Server的封包,必须ACCEPT,否则连接请求没办法到达Server。
命令4:ipchains -A input -i eth1 -p TCP -s 10.0.0.2 21 -j ACCEPT
这是从FTP Server回应进来的封包,也一定要ACCEPT。
命令5:ipchains -A forward -p TCP -s 10.0.0.2 21 -j MASQ
这里要非常小心,因为假设的前提是DMZ和外网不能路由,如果封包没做MASQ处理,那么将无法传送。
而且,不要忽略当封包经过ipmasqadm处理进行MASQ后,出去的封包会被还原成Client所expect的socket。
如果用ACCEPT的话是不行的,ipmasqadm不会对ACCEPT规则做还原动作,只有使用MASQ才能将当初被DNAT服务器处理过的连接正确的还原为原来的socket,即port 21。
命令6:ipchains -A output -i eth0 -p TCP -s 221.7.128.1 21 -j ACCEPT
这是还原socket后送回到Client的回应封包,所以要ACCEPT。
命令7:ipmasqadm portfw -a -P tcp -L 221.7.128.1 2121 -R 10.0.0.2 2121 *
照理说,ftp-data连接应该是从port 2121出去的,换句话说,基本上第一个syn的连接封包是output而不是input。
这样的话,要能成功地将回应封包(不是起始封包)forward 到FTP Server去,要看Client是否知道ftp-data的建立socket会在Server端的port 2121上面,也就取决于DMZ的Server经过SNAT服务器之后是否能够成功地用port 2121来起始ftp-data通道。
命令8:ipchains -A input -i eth0 -p TCP -d 221.7.128.1 2121 -j ACCEPT *
只有上一句的条件成立时,这行命令才有用。
命令9:ipchains -A forward -p TCP -d 10.0.0.2 2121 -j MASQ *
这行和命令5的道理一样,如果用命令7处理后,这行就无须使用了。
命令10:ipchains -A output -i eth1 -p TCP -d 10.0.0.2 2121 -j ACCEPT
不管命令7和上一句是否被执行,这行是必须的,因为对于DMZ的FTP Server来说,不管NAT服务器怎么处理,用来做ftp-data的port还是2121。
命令11:ipchains -A input -i eth1 -p TCP -s 10.0.0.2 2121 -j ACCEPT
这行也是必须的,理由同上。
命令12:ipchains -A forward -p TCP -s 10.0.0.2 2121 -j MASQ
这行非常重要!因为ftp-data的连接是从Server端起始的,也就是当DMZ的FTP Server 要建立ftp-data连接时,因为无法路由,所以一定要用MASQ。
但与命令5比较,因为命令5的连接之前已经被ipmasqadm处理过,所以能正确地还原到原来的socket(port 21)。
但在这里,因为是第一个连接封包,之前不可能被ipmasaqdm处理过,是不可能被还原为port 2121的。
取而代之的是,ipchains会根据MASQ的请求,重新建立一个对外的socket,而port则是随机产生的,也就是说在1024~65535之间。
请记住这个特点,我们必须增加下面两行规则:
这样结果是,1024以上的port都能打开连接。
这是非常危险的一个操作,因为开放的范围太大,至少应该将来自外网的第一个syn封包拦截下来,所以上面的input可以修改为:
所以,命令7和其后紧接着的两行也就没什么作用,可以不要。
命令13:ipchains -A output -i eth0 -p TCP -s 221.7.128.1 2121 -j ACCEPT *
同样,这最后一行也可以不设,因为是多余的。
事实上,ftp-data的socket从NAT
服务器主机出去Client的时候,是不会使用到port 2121的。
这里,我们并没有使用passive模式,所有被*标识的句子,事实上都可省略掉。
方法二:iptalbes
首先进行iptables的设置如下:
iptables和ipchains的最大分别是对来自FTP Server的ftp-data封包的处理上。
如果用ipchains,在MASQ后会另外建一个source socket,但不是使用port 2121;如果用iptables,在MASQ后也会另建一个source socket,却保留原来的port 2121。
因为连接是从Server端由内至外建立的,所以在NAT服务器上已经有这个连接的MASQ记录存在,也就不必为port 2121做DNAT服务器了。
不过,在进行passive模式测试时,尽管将ip_NAT
服务器_ftp模块载入,还是不能建立ftp-data的连接。
抓几个封包就可以发现:Client
端从command channel中接收Server的port命令后,会尝试直接以FTP Server的IP地址作为destiNAT服务器,而不是以NAT服务器的外部界面为目标,所以连接无法建立。
结论
如果Server和Client两端都各自“躲”在NAT服务器背后,无论用ipchains或iptalbes方法都无法使用passive 模式来建立data channel。
解决的方法只能是在Client 端的NAT服务器上,将ip_NAT服务器_ftp的模块载入(ipchains 是用ip_masq_ftp 模块),而Server端使用标准的port 2121和port 21来提供FTP服务。