免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: xiao_root
打印 上一主题 下一主题

请教关于访问两层防火墙后面的ftp服务器问题 [复制链接]

论坛徽章:
0
41 [报告]
发表于 2010-01-11 16:09 |只看该作者
原帖由 xiao_root 于 2010-1-8 17:48 发表
我比较困惑的在于,经过两层防火墙之后,对外提供的http、ssh服务都正常;只有ftp不正常;
在被动模式下,外网ftp客户端建立数据连接时,尝试的是我内网防火墙IP;
主动模式下,没有任何数据应答;

还弱弱 ...


我看你2墙的INPUT链规则没问题的
难道你2墙中有作OUTPUT链的限制了(估计是你的LINUX防火墙)?尝试下主动模式下,允许20端口出去。

论坛徽章:
0
42 [报告]
发表于 2010-01-11 16:11 |只看该作者
对不起,第一次到网上问问题,主要还是自己思路还没完全理清楚,表达起来就有点乱。
非常感谢老大的指点。
我的思路和老大的思路可能不一致,我实验的重点还是在数据包上,而默认墙和配置都是正确的。
现在我的问题暂时使用变通的方法解决了,还需要进一步的对ftp的源码和内核中ftp_nat的源码去了解一下;

论坛徽章:
0
43 [报告]
发表于 2010-01-11 16:26 |只看该作者
解决思路是:
通过从外网ftp客户端上进行抓包,重点对ls命令的包进行解析;同时在内网防火墙上和ftp服务器上抓包,对比在这个过程中数据包的异常;
在抓包的过程中发现:三处抓包地方都只有ls的“指令”传输的三个数据包,正常情况下,客户端应该再发送ls的“数据”传输请求,但没有;
通过对ftp服务器应答包的数据对比中发现,内网墙中数据包流经后,正常的打上ftp_nat的包内容,但外网的墙却没有,导致ftp客户端解析包出错;
考虑到是否和端口有关,后来试试在内网墙上转发21端口,欺骗一下外网墙,没想到竟然成功了,为什么成功,还是不解;
原来的数据走向是:外网ftp客户端=>外网墙的8221端口=>内网墙的8221端口=>ftp服务器的21端口
现在修改后的数据走向:外网ftp客户端=>外网墙的8221端口=>内网墙的21端口=>ftp服务器的21端口

论坛徽章:
0
44 [报告]
发表于 2010-01-11 16:31 |只看该作者
弱弱的问一下,老大在做两台墙的实验中,转发的端口是21,还是其他的?

无法解释,其他没有任何改动和变化,仅仅只是在内网墙中,把原来转发的8221,现在直接改为21,就正常了;
这样也带来了一个新的问题,如果内网墙后面另外的机器想在开ftp服务,内网墙就没有端口可以做转发了。

希望老大能给点解释和建议,或者説,真是我的内网墙配置有问题?

论坛徽章:
0
45 [报告]
发表于 2010-01-11 16:58 |只看该作者
我看你得先搞清楚端口转发和FTP通信端口和数据端口的概念
开始又不说怎么做的端口转发,用抓包把问题复杂化了。

论坛徽章:
0
46 [报告]
发表于 2010-01-11 17:25 |只看该作者
一个是数据端口,一个是控制端口,控制端口一般为21,而数据端口不一定是20,这和FTP的应用模式有关,如果是主动模式,应该为20,如果为被动模式,由服务器端和客户端协商而定。


楼主看看开放那些协商的端口,是否允许那些协议端口通过。

论坛徽章:
0
47 [报告]
发表于 2010-01-11 17:33 |只看该作者
原帖由 scorer1120 于 2010-1-11 16:58 发表
我看你得先搞清楚端口转发和FTP通信端口和数据端口的概念
开始又不说怎么做的端口转发,用抓包把问题复杂化了。


内网墙上的端口转发我采用的就是:iptables -t nat -I PREROUTING -m iprange --dst-range IP1-IP2 -p tcp --syn --dport 8221 -j DNAT --to-destination FTPIP:21
外网墙上是思科的配置,具体怎么写不知道,实际的工作模式就是把访问外网的8221端口数据转发给内网墙的8221端口,再由内网墙把数据转发给真正的ftp服务器的21端口;

FTP的通信端口和数据端口:对FTP还仅仅停留在使用上,深入的对东西不是太了解,只知道21和20,由于思科的墙不能随意动和配置,所以我更多的还只能依赖被动模式下来实现;

问题复杂化:还是没有经验导致,刚开始我把问题简单化了,认为是两台墙造成的结果,所以表达的不是很清楚,后来又没能理解老大的意思,又发了抓包的贴,把问题复杂化了。

是否ftp的端口转发,只能转发到21端口上,转发到其他端口会不行?

论坛徽章:
0
48 [报告]
发表于 2010-01-11 17:38 |只看该作者
两台墙,从内到外都是全放开的, 不存在防火墙上做了限制,从外访问内,都是通过端口转发的;
ftp的也只是开了一个端口转发:
外网墙:访问外网墙的8221端口转发给内网墙的8221端口上;
内外墙:访问内网墙的8221端口转发给ftp服务器的21端口;

这里只是把内网墙的8221端口改成21端口,即
外网墙:访问外网墙的8221端口转发给内网墙的21端口上;
内外墙:访问内网墙的21端口转发给ftp服务器的21端口;
就正常了。

我现在还是不明白的是,内外墙上的端口一定只能是21?还是我的墙配置出了问题?

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
49 [报告]
发表于 2010-01-11 17:40 |只看该作者
默认墙和配置都是正确的

既然你敢下这个结论,那就啥都无话可说了。一切都是正确的话,还是不能够访问,那只能说是天意。

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
50 [报告]
发表于 2010-01-11 22:27 |只看该作者
原帖由 xiao_root 于 2010-1-11 17:38 发表
两台墙,从内到外都是全放开的, 不存在防火墙上做了限制,从外访问内,都是通过端口转发的;
ftp的也只是开了一个端口转发:
外网墙:访问外网墙的8221端口转发给内网墙的8221端口上;
内外墙:访问内网墙的 ...

STFW
http://www.wangchao.net.cn/bbsdetail_1450737.html
供参考
================================================
使用NAT时解决FTP用非标准端口的办法
  当对方 FTP Server 用非标准端口时会出现问题:
  可以 Ping 通,也可以登录,但会出现如下错误:invalid port command 。
  这是由于 发送 ftp port 命令的 IP 包的负载(payload)里面是包含了源ip 地址的,对于标准端口(21)的 ftp应用,Cisco 地址转换(NAT)能自动将嵌入在ip包负载里面的 源地址也作转换,ftp 应用可以正常进行。
  但是,如果是非标准端口的 ftp 应用,如果没有其他特别的设置,Cisco路由器不能辨别这是 Ftp 的应用,因而不对 负载里面的IP 地址作转换,因此出现上述的错误。
  Cisco 路由器针对这种情况有个解决的方法。就是显式告诉路由器,那些端口是 ftp 的端口:
  router(config)#ip nat service list 1 ftp tcp port 20010(非标准端口)
  router(config)#ip nat service list 1 ftp tcp port 21 (标准端口)
  router(config)#access-list 1 permit host 201.1.1.10 (对方Ftp Server 地址)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP