ftp服务器与nat防火墙

reinstall:
我在FreeBSD 5.0-Release上用IPFilter做NAT上网,但访问FTP服务器时,可以登录进FTP服务器,但执行ls等命令时就没有反应了,请各位老大帮我分析一下会是什么问题,服务器端是win2k平台下的SERV-U 4.0;

我要为我的电脑向ihweb申冤,我的电脑是PIII500的,比起8086可是相当于省长到村长的差别,网卡是DFE-530TX,也不算太差吧!通过NAT去FTP到服务器上时,可以ls并且可以下载,我遇到的问题是但是一旦大量上传时文件时,FreeBSD就gameover了,两块网卡都ping 不通;
另对YJS所提的tune内核,因我是用两块网卡做NAT,有没有必要啊(希望这个问题不要晕倒一大片)




里面说到网卡的事情,我所遇到的情况是,一些网卡,在Windows里工作的很好,在freebsd里却一塌糊涂,具体的表现就是一有稍微大量一点的数据传输(比如ftp下载)就会翘住,ping都断断续续,小量数据传输(比如只是ping)就没问题,这个同时跟主板有关系,出问题的网卡用到别的主板上,同样装freebsd不一定就有问题,其中某牌子的530网卡最容易出这样的问题 。

下面是针对ftp与防火墙的:

原文在
https://bbs.bsdbase.com/index.php?act=ST&f=1&t=61&s=70ea2defc240d3c2f8068483d082556d

ftp server and nat firewall
ftp服务器与nat防火墙


by 阿土 tutu@bsdbase.com2002.07.08

2003.02.28修正

pre:对于这个问题,网上早有讨论以及解决的办法,然而我自己在初次遇到
此问题时,却总是觉得找到的资料往往可操作性不够,所以不惜献丑,把自己
的实践经验整理出来,一方面供自己日后参考,也希望能帮助为这个问题所
困扰的兄弟;阿土水平不高,文笔更是一塌糊涂,还请各位大侠帮忙,找出文
中错漏,阿土在此先说谢谢了:)

1.ftp 协议的简单描述
与http等基于单个连接的协议不同,ftp使用两个tcp通道进行工作,
一个是clIEnt:any -> server:21 的连接,称为控制通道,用于传输
相关的ftp工作指令资料;另外一个是数据通道,用于在list/get/put
等指令时传输数据内容,该通道的建立有不同的方式 。
在数据通道的建立上,为了适应不同的情况,ftp server支持两种
模式:主动模式/被动模式(port/pasv),在port模式下,当需要在
server和client之间传输数据时(比如用户发送ls指令,服务器要把文
件列表传输回client),client会在控制通道发port指令类似
(PORT 192,168,0,170,4,58),client在本机开一个>1024的监听端口,
等待server连接,server在控制通道接受该port指令后,使用其20端口
去连接client的监听端口,即server:20 -> client:any,使用该数据通
道进行数据传输;对于PASV模式,client发pasv指令,server将会随机
开放一个>1024的监听端口,随后 CLIENT连接到该高端口进行数据传送 。
(还有fxp,是比较特别的,不作讨论)

2. 防火墙对ftp的影响以及解决方法;
从上述ftp工作的简单描述中我们看到防火墙会影响到client <-> server
的数据传输,有下列几种情况:

1).server <-wan-> client,没有防火墙,没有任何限制 。

2).server <-wan->fw -- client,client在防火墙后面,使用私网地址,
通过NAT访问公网:

在一般的情况下,port指令将被防火墙阻挡,表现为client发port
指令(通常ls就会需要进行一次data传输)时总是得不到server的响应,直到超时
错误,此时,是因为server无法连接到client所开的随机高端口(client在port指
令中会告知server自己所开的端口以及自己的地址);此时client可以使用pasv模
式进行工作;如果该client不能使用pasv指令(如一些简单的ftp client程序,我

推荐阅读