免费注册 查看新帖 |

Chinaunix

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

[FTP] 案例分享:服务器间经历N层防火墙后ftp绝症的处理全过程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-29 11:35 |只看该作者 |倒序浏览
哥们,看帖要推荐啊,点这里\"\"


老老实实,脚踏实地,从基础分析,解决ftp绝症案例分享.


在遇到这个问题时,本人也是vsftp菜鸟,在解决问题时逐步成长,希望这个贴能够给新手们提供一个解决问题的思路。



【背景描述】


两台服务器间,间隔了N层防火墙,应用需要通过ftp传递文件。

server-a----firewall.......firewall----server-b(123.123.123.123)
                             |
                其他网段机器(办公地)

服务器位置离办公地很远,到现场难度极大。

【问题现象】
服务器b ftp client  ----->  服务器a的ftp server OK
服务器a ftp client  ----->  服务器b的ftp server:卡住鸟!,如下所示

$ ftp 123.123.123.123
Connected to 123.123.123.123.
220 (vsFTPd 2.0.5)                   //卡在这里,过了NNN久,大约10分钟              
421 Timeout.
No control connection for command: Illegal seek
KERBEROS_V4 rejected as an authentication type
Name (123.123.123.123:ftpuser): ftpuser                   //输入后就断开连接了        
No control connection for command: No such file or directory
Login failed.
No control connection for command: No such file or directory
ftp>


【问题分析】

首先怀疑可能防火墙配置有问题
  • 先google一把,找出几篇同样问题的贴,然而没有答案。
  • 互ping,OK(判断网络连接没问题)
  • 从server-a telnet到server-b没问题(判断各级防火墙功能没问题)
  • server-b自己连自己的ftp服务没问题(判断服务器端没问题)
  • 与server-b同一防火墙的设备连server-b的ftp服务没问题(判断server-b直连的防火墙没问题)
  • 其他网段机器连server-b的ftp服务没问题(判断中间防火墙没问题)
  • 其他网段机器连server-a的ftp服务没问题(判断server-a端的防火墙没问题)
  • server-a连与它同一防火墙的设备的ftp服务没问题(判断server-a的ftp客户端工作性没问题)
晕死鸟,各种分析到此为止,莫非此题无解?
一怒之下,把各级防火墙的相关访问策略全部Permit all,结果问题依旧。

初步判断:问题出在server-a的ftp客户端程序上

  • 于是在其他网段(办公地)开了个虚拟机,安装了一个和server-a一样版本的操作系统,从虚拟机上再次尝试ftp,问题依旧,果然是server-a的ftp客户端程序问题!

【问题处理】

1、开ftp命令的诊断模式,看ftp协议到底在干嘛
$ ftp -d 123.123.123.123
Connected to 123.123.123.123.
220 (vsFTPd 2.0.5)
---> AUTH GSSAPI                        //卡在这里,过了NNN久,大约10分钟,看来是客户端发出的"AUTH GSSAPI"命令出了问题
421 Timeout.
---> AUTH KERBEROS_V4
No control connection for command: Illegal seek
KERBEROS_V4 rejected as an authentication type
Name (123.123.123.123:ftpuser): ftpuser                   //输入后就断开连接了      
---> USER ftpuser
No control connection for command: No such file or directory
Login failed.
---> SYST
No control connection for command: No such file or directory
ftp>

2、抓包

看来是ftp客户端程序与ftp服务器端程序在协商AUTH方面出了问题。

3、man ftp
在server-a的帮助手册页中看到,ftp命令会发出AUTH命令,使用本地所支持的验证类型,尝试与ftp服务器端协商验证问题。如果该验证类型被服务器接受,接着就通过ADAT命令处理相应的验证协议。

看来只要不让ftp命令使用这个功能即可

4、让ftp进行不验证的连接
# ftp -d -u 服务器b
Connected to 123.123.123.123.
220 (vsFTPd 2.0.5)
---> SYST
530 Please login with USER and PASS.
ftp> user
(username) itms
---> USER itms
331 Please specify the password.
Password:
---> PASS XXXX
230 Login successful.
ftp> ls   
---> PASV
227 Entering Passive Mode (123,123,123,123,51,43,54)       新问题出现了,被动模式连接超时
ftp: connect: Connection timed out
ftp>

5、这个问题好办,让ftp使用主动模式即可
继续看帮助,得知用passive指令看切换主动和被动模式

要深入了解ftp的主动和被动模式的区别,可参考:http://bbs.chinaunix.net/thread-574966-1-1.html
ftp> passive
Passive mode off.
ftp> ls
---> PORT 123,123,123,123,87,227
200 PORT command successful. Consider using PASV.
---> LIST
150 Here comes the directory listing.
-rwxr-xr-x    1 ftp      ftp           684 Dec 26 10:38 CAP.env
drwxr-xr-x    7 ftp      ftp           256 Dec 28 03:53 CAP_HOME
....


【案例总结】

终于解决了这个号称绝症的问题,总结起来其实很简单:
1、让客户端程序不使用AUTH进行ftp连接:
  • 使用ftp的-u选项

2、用主动模式传递数据:
  • 连接上后使用passive指令切换主动和被动模式

但最关键的是在于处理问题的整个分析过程,希望对大家有所帮助。

独乐乐不如众乐乐,点此推荐与众多CUer分享此文:http://blog.chinaunix.net/u2/star.php?blogid=12442


[ 本帖最后由 yuhuohu 于 2009-7-4 20:35 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-12-29 12:06 |只看该作者
谢谢 支持
有时候我遇到问题 完全摸不着头脑该从那里入手
解决问题的能力是其次
思路才是最重要的

论坛徽章:
0
3 [报告]
发表于 2007-12-29 13:28 |只看该作者

DD

hei,guy ,the method you gave us is so nice ,think for your kindly

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2007-12-29 22:29 |只看该作者
使用sftp不行吗?还是用sftp方便一些.

论坛徽章:
0
5 [报告]
发表于 2007-12-29 22:39 |只看该作者
顶,多谢lz

论坛徽章:
0
6 [报告]
发表于 2007-12-30 23:33 |只看该作者
原帖由 我爱臭豆腐 于 2007-12-29 22:29 发表
使用sftp不行吗?还是用sftp方便一些.


server-b是人家的生产系统。。。

偶 能动的只能是server-a和server-a的直连防火墙,当初简直是苦死了

论坛徽章:
0
7 [报告]
发表于 2007-12-31 09:48 |只看该作者
“【案例总结】
...
1、让客户端程序不使用AUTH进行ftp连接:
        * 使用ftp的-u选项
..."

Solaris 上的 FTP Client 好像没有 “-u” 选项。

论坛徽章:
0
8 [报告]
发表于 2007-12-31 17:31 |只看该作者
原帖由 susbin 于 2007-12-31 09:48 发表
“【案例总结】
...
1、让客户端程序不使用AUTH进行ftp连接:
        * 使用ftp的-u选项
..."

Solaris 上的 FTP Client 好像没有 “-u” 选项。


嘿嘿,高人,果然厉害。server-a是redhat

论坛徽章:
0
9 [报告]
发表于 2008-01-01 22:10 |只看该作者
好帖子啊,顶起来!!!

论坛徽章:
0
10 [报告]
发表于 2008-01-03 19:01 |只看该作者

你的防火墙是linux做的吗?

如果是linux的防火墙,开启iptalbes的ftp模块,肯定可以搞定的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP