我试图获得一个用Perl编写的FTP客户端,使用被动模式从IIS 7.5 FTP服务器传输文件。
我已经按照说明configuration了FTP服务器,并且还configuration了Windows防火墙来允许这种types的stream量。 我已经通过检查确认日志中没有阻塞的数据包来validation防火墙是否正常工作。 我已经validation了FTP控制通道正在端口21上打开。
我相信客户端被IIS告知哪个端口连接到被动模式,而IIS拒绝这个连接。
perl日志看起来像:
C:\cygwin\Perl\lib\FMT>perl FTPTest.pl Net::FTP>>> Net::FTP(2.77) Net::FTP>>> Exporter(5.64_01) Net::FTP>>> Net::Cmd(2.29) Net::FTP>>> IO::Socket::INET(1.31) Net::FTP>>> IO::Socket(1.31) Net::FTP>>> IO::Handle(1.28) Net::FTP=GLOB(0x20abac0)<<< 220 Microsoft FTP Service Net::FTP=GLOB(0x20abac0)>>> USER ftpuser Net::FTP=GLOB(0x20abac0)<<< 331 Password required for ftpuser. Net::FTP=GLOB(0x20abac0)>>> PASS .... Net::FTP=GLOB(0x20abac0)<<< 230 User logged in. Net::FTP=GLOB(0x20abac0)>>> CWD /Logs Net::FTP=GLOB(0x20abac0)<<< 250 CWD command successful. Net::FTP=GLOB(0x20abac0)>>> PASV Net::FTP=GLOB(0x20abac0)<<< 227 Entering Passive Mode (xx,xxx,xxx,xxx,160,41). Net::FTP=GLOB(0x20abac0)>>> RETR filename.txt Can't use an undefined value as a symbol reference at C:/Utilities/strawberryper l/perl/lib/Net/FTP/dataconn.pm line 54.
IIS日志看起来如下所示:
2010-10-02 17:40:06 xx.xxx.xx.xx - yy.y.yy.yy ControlChannelOpened - - 0 0 27a48c9b-9dce-4770-8bcf-fc89f2569b1a - - 2010-10-02 17:40:06 xx.xxx.xx.xx - yy.y.yy.yy USER ftpuser 331 0 0 27a48c9b-9dce-4770-8bcf-fc89f2569b1a - - 2010-10-02 17:40:06 xx.xxx.xx.xx MACHINENAME\ftpuser yy.y.yy.yy PASS *** 230 0 0 27a48c9b-9dce-4770-8bcf-fc89f2569b1a / - 2010-10-02 17:40:06 xx.xxx.xx.xx MACHINENAME\ftpuser yy.y.yy.yy CWD /Logs 250 0 0 27a48c9b-9dce-4770-8bcf-fc89f2569b1a /Logs - 2010-10-02 17:40:06 xx.xxx.xx.xx MACHINENAME\ftpuser yy.y.yy.yy PASV - 227 0 0 27a48c9b-9dce-4770-8bcf-fc89f2569b1a - - 2010-10-02 17:40:27 - MACHINENAME\ftpuser zz.z.zz.zzz 41001 DataChannelClosed - - 64 0 27a48c9b-9dce-4770-8bcf-fc89f2569b1a - - 2010-10-02 17:40:27 xx.xxx.xx.xx MACHINENAME\ftpuser yy.y.yy.yy ControlChannelClosed - - 64 0 27a48c9b-9dce-4770-8bcf-fc89f2569b1a - - 2010-10-02 17:40:27 xx.xxx.xx.xx MACHINENAME\ftpuser yy.y.yy.yy RETR filename.txt 550 1236 0 27a48c9b-9dce-4770-8bcf-fc89f2569b1a filename.txt -
我们已经设法与其他FTP客户端看到这个问题,我不认为它在Perl中有趣。 我已经被告知,这在IIS 6 FTP服务器上正常工作。 我想知道是否有什么我们在这里失踪。
我有这个相同的问题。 IIS FTP 7.5默认configuration为只允许主动FTP而不是被动我相信 – 至less在我已经完成的两个默认安装。 也许你的脚本正在挂上这个。 IIS网站http://learn.iis.net/page.aspx/309/configuring-ftp-firewall-settings/帮助我非常 – 虽然我的问题是与普通的FTP客户端(filezilla)不是PERL它应该适用于这个案例。 尤其要看步骤3:configurationWindows防火墙设置
我有一个Perl脚本相同的问题。 我从一个私人的IP地址连接。 在被动模式下,公共IP地址在发出PASV命令时被返回! 解决scheme是设置Passive => 0在防火墙内部使用主动模式,在防火墙外部使用Passive => 1。
我遇到了与其他FTP服务器软件类似的问题。
如果你的ftp服务器在NAT之后,你可能需要做端口映射。 您可能还需要检查服务器用于被动模式的端口和端口映射。 还要检查防火墙是否允许这些端口。
尝试使用IISconfiguration编辑器导航到System.applicationHost / sites – > siteDefaults – > ftpServer-> security-> dataChannelSecurity并禁用matchClientAddressForPort和matchClientAddressForPasv。 这是我从IIS 6到IIS 7.5的修复