免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8832 | 回复: 13
打印 上一主题 下一主题

ftp服务器与nat防火墙 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-02-28 14:53 |只看该作者 |倒序浏览
《通过IPFilter做NAT上网时遇到的FTP问题》
http://chinaunix.net/forum/viewtopic.php?t=20831

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.com 2002.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程序,我
遇到的有ca kill的病毒代码库自动升级程序,使用ftp从服务器下载升级文件),
就要求防火墙具有outing ftp proxy功能(iptables称ftp conntrack),或称ftp
映射内核代理,即防火墙监控在特定端口(一般是21)的ftp连接,在检测到client
向server发送的port指令时,把该指令中的client地址以及端口修改为防火墙地址以
及端口,再把修改后的数据发往server,同时在server返回数据时将该数据重定向到
client的监听端口,完成一次完整的port过程;

在Ipfilter下可以使用类似下面的nat规则实现,其他的防火墙产品请查阅其文档:
map ed0 192.168.100.0/24 ->; 211.97.116.21x/32 proxy port ftp ftp/tcp

  3).server --fw <-wan->; client,server在防火墙后面,使用私网地址,通过fw的
重定向接收外部访问:

      此时,port指令没问题,但是pasv会被防火墙阻挡,出错的表现类似port指令,
此时,client可使用port指令工作;如果需要server支持pasv,需要在防火墙以及ftp server
上做相应的设置:

首先,设置pasv参数:

Proftpd:
#/usr/local/etc/proftpd.conf
MasqueradeAddress 211.97.116.21x
#该参数设置在client发pasv指令时,server返回给client的pasv地址串中应该包含的连接地址,
#该地址通常是防火墙的外部地址(作rdr的地址)

PassivePorts 30001 50000 # These ports should be safe...
#该参数说明pasv指令使用的端口范围

对于pure-ftpd
# Port range for passive connections replies. - for firewalling.
PassivePortRange 30001 50000
#在防火墙上开放的passsive端口范围
# Force an IP address in PASV/EPSV/SPSV replies. - for NAT.
ForcePassiveIP 211.97.116.21x
#这里211.97.116.21x就是防火墙进行rdr的公网地址了。

对于windows里的serv-u在其高级设置里也有类似的设置(passive ports,passive address),
图形界面,很简单了;

如果是其他的ftpd,应该也有类似的设置,如wu-ftpd,不熟悉,不胡说。

  然后设置防火墙:
pass in on ed0 proto tcp from any to 192.168.100.10 port 30000 >;< 50001 flags S keep state
#允许外部连接server的pasv端口范围
rdr ed0 211.97.116.21x/32 port 30001-50000 ->; 192.168.100.10 port 30001 tcp
#将该范围的端口重定向到ftp server
#注意:某些ftp server并没有proftpd这样的配置参数(比如ms iis里的ftp),
#将不能通过此方法解决问题,具体请查阅其说明书。

如果是使用iptables,就简单些:
#iptables modules
#modprobe ip_tables
#nat
modprobe iptable_nat
#connect_track
modprobe ip_conntrack

#ftp NAT,PASV,PORT command.
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
有ftp的DNAT支持模块,在规则里做21端口的DNAT重定向即可,conntrack会自动维护其中的PORT/PASSIVE关系。

  4).server --fw<->;fw -- client server和client都在防火墙后面:
      如果没有特别的方法,server和client之间将不能工作;解决的办法就是综合上述2).3)的方法,
在server的防火墙以及client的防火墙分别做相应的设置.

BTW:不单是ftp server,其他的某些服务也有类似问题,比如netmeeting(h323),pptp server,解决的思路也相似。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2003-02-28 17:22 |只看该作者

ftp服务器与nat防火墙

是啊是啊,我的530也经常死给我看,内核什么的都调过了,它都不听话,所以现在我也不管它了,要死就死吧,我也不拦着。

论坛徽章:
0
3 [报告]
发表于 2003-02-28 17:32 |只看该作者

ftp服务器与nat防火墙

[quote]原帖由 "夜猫子"]是啊是啊,我的530也经常死给我看,内核什么的都调过了,它都不听话,所以现在我也不管它了,要死就死吧,我也不拦着。[/quote 发表:



没辙,我后来买机器,宁可要二手的82558也不要新的别的牌子网卡。

论坛徽章:
0
4 [报告]
发表于 2003-02-28 17:59 |只看该作者

ftp服务器与nat防火墙

...

好!

猫子,你的御玺呢?盖一个吧……

论坛徽章:
0
5 [报告]
发表于 2003-02-28 18:26 |只看该作者

ftp服务器与nat防火墙

原帖由 "bsdbase" 发表:



没辙,我后来买机器,宁可要二手的82558也不要新的别的牌子网卡。



3COM 的也不错喔。

论坛徽章:
0
6 [报告]
发表于 2003-02-28 19:39 |只看该作者

ftp服务器与nat防火墙

原帖由 "ihweb" 发表:



3COM 的也不错喔。


  3Com的好像都不如Intel pro 100的。
  我觉得关键是驱动。

论坛徽章:
0
7 [报告]
发表于 2003-02-28 19:49 |只看该作者

ftp服务器与nat防火墙

原帖由 "YJS"][quote:79ac0b6da2="ihweb" 发表:



3COM 的也不错喔。


  3Com的好像都不如Intel pro 100的。
  我觉得关键是驱动。[/quote]

在 NetWare 下,最好的是 SMC EP100 和 Intel Pro 系列,3Com 的差一大截~

确实取决于驱动,fxp 是 BSD 下最好的驱动之一,当然也不是 bug-free. 呵呵~

论坛徽章:
0
8 [报告]
发表于 2003-02-28 20:10 |只看该作者

ftp服务器与nat防火墙

原帖由 "ihweb" 发表:



3COM 的也不错喔。



之所以说82558,是因为确实好用,另外二手的货很多便宜~~

论坛徽章:
0
9 [报告]
发表于 2003-02-28 20:44 |只看该作者

ftp服务器与nat防火墙

其实530正版货都有很多个版本,还有很多盗版的。

所以,出问题也很正常!

论坛徽章:
0
10 [报告]
发表于 2003-03-10 11:18 |只看该作者

ftp服务器与nat防火墙

good!good!verygood!顶一下!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP