1、路由器设置了DMZ主机,指向局域网一台机器。
2、局域网机器win2003,设置了FTP服务。
现在遇到一个问题:使用indy的idftp可以连接ftp服务器,但是要打开pasv,但是在put时,总是会出现超时错误。并且只在服务器上留下一个0字节的文件。文件并没有真正上传。这是怎么回事?
使用flashFxp可以很顺利的连接上传。那是否说明可以排除服务器设置的原因。剩下的idftp还要如何设置呢?

解决方案 »

  1.   

    查了一下资料,看来也是需要解决如何穿透NAT的问题。不知道其他ftp软件是如何做到的。
      

  2.   

    通过firefox、flashfxp等软件都可以直接连接,上传下载都没问题,不知道他们是怎么连接数据通道的。已经可以通过发送pasv,获得数据通道的端口了,比如192,168,0,110,8,254。获得端口为2302,可如何才能连接并打开这个通道呢?还是idFTP可以自动连接?
      

  3.   

    从上面发送PASV指令得到的结果看,服务器发回的地址为服务器在局域网的IP,它没有将路由wan口的IP正确的发回来,如果原因在这里的话,win2003ftp服务貌似没有这样的设置选项。可其他ftp软件是怎么连接的呢?
      

  4.   

    返回的端口是动态的。现在需要解决的就是让ftp服务返回wan口的IP,Server-U可以实现。现在就是纳闷:微软的ftp服务是否确实做不到这点;再就是别的ftp软件是如何知道这个外网地址的。
      

  5.   

    找了很多资料,大概能够了解点NAT的原理,水平太差,没法继续深究下去了。暂时结贴。先用Server-U吧。