FTP Error “425 Unable to build data connection”

来源:互联网 发布:小非农数据几点公布 编辑:程序博客网 时间:2024/06/03 06:42

最近有同事在使用Android 4.0.4手机的“tethering” 时遇到了一个问题--FTP可以登录成功,但是无法查看文件“dir , ls”,自己验证了一下,无论是Windows XP, Win 7都不能工作,google一把,发现windows只支持主动模式,不支持被动模式。用linux实验了一下,被动模式可以工作(pftp 或者 ftp -p)。网上大部分都说是防火墙的原因,有列举如何配置防火墙的,但是想想我的 Android手机 kernel是linux, 防火墙是什么呢?应该就是关于iptable, ip filter等等吧。借了一台Galaxy nexus 实验,可以使用“ls, dir”,靠看来是我们的手机配置问题,查看iptable对比,一模一样,怎么办呢? 


于是抓iplog ,发现如下erro " 425 Unable to build data con":

610 2012-06-28 15:32:13.087518 192.168.13.96 122.200.68.240 FTP 74 Request: LIST

615 2012-06-28 15:32:16.055640 122.200.68.240 192.168.13.96 FTP 125 Response: 425 Unable to build data connection


对“425 Unable to build data conection”解释的很好的文章:

http://www.trapstone.com/articles/windows_ftp_425_connection_refused


于是开始补充FTP Active mode, Passive mode知识: http://space.itpub.net/4670/viewspace-310375  随便网上搜,可以学习一下。

http://www.trapstone.com/articles/windows_ftp_425_connection_refused



最好没有办法了,想想会不会跟NAT有关系,估计只能在kernel里解决了,我想FTP 对于linux kernel应该是小菜,怎么可能不支持呢,应该是没有打开一些配置选项吧,搜索一下有NAT_FTP的选项没有打开,打开后重新编译,验证果然可以工作了,见下面:

首先:make menuconfig

然后添加:

CONFIG_NF_CONNTRACK_FTP=y

CONFIG_NF_NAT_FTP=y

编译kernel, 替换验证。