我已经使用本指南在Windows Azure中设置了FTP服务http://www.itq.nl/blogs/post/Walkthrough-Hosting-FTP-on-IIS-75-in-Windows-Azure-VM.aspx
当我坐在办公室防火墙后面工作时,FTP服务器运行良好。
但是当我尝试连接SSL(端口21,AUTH TLS – 显式,CuteFTP),我得到一个超时。 当我在家里完全一样的时候,连接工作(SSL)。 我究竟做错了什么? SSL连接是否使用其他端口?
身份validation正常工作,当客户端发送LIST命令超时时
STATUS:> [11.02.2013 12:56:28] Using UTF-8. STATUS:> [11.02.2013 12:56:28] This site can resume broken downloads. COMMAND:> [11.02.2013 12:56:28] REST 0 [11.02.2013 12:56:28] 350 Restarting at 0. COMMAND:> [11.02.2013 12:56:28] PBSZ 0 [11.02.2013 12:56:28] 200 PBSZ command successful. COMMAND:> [11.02.2013 12:56:28] PROT P [11.02.2013 12:56:28] 200 PROT command successful. COMMAND:> [11.02.2013 12:56:28] PASV [11.02.2013 12:56:28] 227 Entering Passive Mode (***,**,**,201,27,92). COMMAND:> [11.02.2013 12:56:28] LIST STATUS:> [11.02.2013 12:56:28] Connecting FTP data socket... ***.**.**.201:7004... ERROR:> [11.02.2013 12:56:49] The connection failed due to an error or timeout.
我读了一些有关FTPS和NAT的麻烦,但没有完全理解
啊,这样做更有意义。 这里的问题是FTP的双通道特性,再加上encryption(最有可能)自适应防火墙。
当一个FTP控制连接请求一些数据(包括一个目录列表)会发生什么情况是build立一个新的连接; 从服务器到客户端处于ACTIVE模式(这是不常见的),或者从客户端到服务器处于PASSIVE模式(这是比较常见的)。
这个连接的细节在控制通道上是一致的,新的连接在适合模式的方向打开,然后数据stream动(假设这个答案的其余部分是被动模式;事情是类似的,但是甚至更复杂,如果你想使用ACTIVE模式)。
除非有防火墙。 如果防火墙不允许从内部到外部的任意TCP连接,则不能build立数据通道。
除非防火墙很聪明,并且正在监视控制数据stream, 否则寻找正在构build的数据通道的前身的FTP PORT命令。 然后,一个聪明的防火墙将在该数据通道期间打开一个临时许可和/或端口映射。 这通常被称为自适应防火墙 。
除非控制通道是端到端encryption的,在这种情况下,防火墙不知道正在协商数据通道,并且不能授予临时权限。
那有意义吗? 基本上,你使用SSL很可能会阻止你的防火墙知道它应该聪明的,这就是为什么它没有办公室的SSL工作,并且在你可能没有这么复杂的防火墙的家庭中工作正常。
让办公室在不encryption的情况下工作的唯一方法是让防火墙pipe理员允许你从桌面到FTP服务器的任意TCP连接。