无法在 FTP 客户端程序中获取目录列表。
尝试使用被动模式连接 Filezilla:
Status: Resolving address of test.domain.dk
Status: Connecting to 89.XXX.XXX.XXX:21...
Status: Connection established, waiting for welcome message...
Status: Connected
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/" is current directory.
Command: TYPE I
Response: 200 Type set to I.
Command: PASV
Error: Disconnected from server: ECONNABORTED - Connection aborted
Error: Failed to retrieve directory listing
尝试主动模式,我也无法获取目录列表:
Status: Resolving address of test.domain.dk
Status: Connecting to 89.XXX.XXX.XXX:21...
Status: Connection established, waiting for welcome message...
Status: Connected
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/" is current directory.
Command: TYPE I
Response: 200 Type set to I.
Command: PORT 192,168,0,195,203,136
Response: 550 An attempt was made to access a socket in a way forbidden by its access permissions.
Command: PASV
Error: Disconnected from server: ECONNABORTED - Connection aborted
Error: Failed to retrieve directory listing
我在 Windows Server 2012 R2 IIS-8 上安装了 FTP 服务器和扩展功能。
在我的例子中,FTP/sites 放置在数据驱动器上。此数据驱动器是驱动器 E:\webdata。
服务器防火墙配置正常,我试图禁用防火墙,但行为没有任何变化,因为它不是我的服务器防火墙。
托管服务提供商告诉我已打开端口 20、21 和范围 50000-51000(用于被动模式)。为了将此告知我的服务器,我在 IIS 中打开了 FTP 防火墙支持,并在端口范围内提供了该支持。(也尝试过只使用 0-0)。如果我没有在我的外部防火墙地址字段中输入网关的 IP 地址(更新:使用 wireshark 查看该区域下面的 IP 和注释),我尝试从互联网端连接到 FTP 服务器时出现超时。我询问我的托管服务提供商是否可以获取防火墙的外部 IP 地址,但他们告诉我这没有必要,但我可以使用我的公共 IP 地址作为服务器,这也会在尝试通过外部 FTP 客户端连接时出现超时。托管服务提供商告诉我,我的安装中肯定存在其他问题,我需要找出问题所在。
花了几天和几个小时阅读指南、博客和论坛却没有找到解决方案,我希望这里有人能给出一些建议?
亲切的问候
更新:我做了一个Wireshark,但我对使用Wireshark不太有信心。我在服务器端运行了它,以下是我在尝试连接时捕获到的信息:
No. Time Source Destination Protocol Length Info
187 4.920498000 185.XXX.XXX.XXX 192.YYY.YYY.YYY TCP 66 55073 > 21 [SYN] Seq=0 Win=4380 Len=0 MSS=1456 WS=1 SACK_PERM=1
188 4.920550000 192.YYY.YYY.YYY 185.XXX.XXX.XXX TCP 66 21 > 55073 [SYN, ACK] Seq=0 Ack=1 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1
189 4.923907000 185.XXX.XXX.XXX 192.YYY.YYY.YYY TCP 60 55073 > 21 [ACK] Seq=1 Ack=1 Win=4380 Len=0
190 4.924141000 192.YYY.YYY.YYY 185.XXX.XXX.XXX FTP 84 Response: 220 You see my serverbanner now
191 4.928956000 185.XXX.XXX.XXX 192.YYY.YYY.YYY FTP 72 Request: USER ftp_username_here
192 4.928994000 192.YYY.YYY.YYY 185.XXX.XXX.XXX FTP 77 Response: 331 Password required
193 4.934234000 185.XXX.XXX.XXX 192.YYY.YYY.YYY FTP 69 Request: PASS **********
194 4.934839000 192.YYY.YYY.YYY 185.XXX.XXX.XXX FTP 67 Response: 230-Glad to see you here
195 4.934857000 192.YYY.YYY.YYY 185.XXX.XXX.XXX FTP 75 Response: 230 User logged in.
196 4.938247000 185.XXX.XXX.XXX 192.YYY.YYY.YYY TCP 60 55073 > 21 [ACK] Seq=34 Ack=88 Win=4467 Len=0
197 4.990122000 185.XXX.XXX.XXX 192.YYY.YYY.YYY FTP 68 Request: OPTS UTF8 ON
198 4.990174000 192.YYY.YYY.YYY 185.XXX.XXX.XXX FTP 112 Response: 200 OPTS UTF8 command successful - UTF8 encoding now ON.
199 4.996192000 185.XXX.XXX.XXX 192.YYY.YYY.YYY FTP 60 Request: PWD
200 4.996236000 192.YYY.YYY.YYY 185.XXX.XXX.XXX FTP 85 Response: 257 ""/"" is current directory.
201 5.000951000 185.XXX.XXX.XXX 192.YYY.YYY.YYY FTP 62 Request: TYPE I
202 5.000989000 192.YYY.YYY.YYY 185.XXX.XXX.XXX FTP 74 Response: 200 Type set to I.
203 5.005644000 185.XXX.XXX.XXX 192.YYY.YYY.YYY FTP 60 Request: PASV
204 5.005841000 192.YYY.YYY.YYY 185.XXX.XXX.XXX FTP 106 Response: 227 Entering Passive Mode (192,YYY,YYY,ZZZ,233,110).
205 5.009646000 185.XXX.XXX.XXX 192.YYY.YYY.YYY TCP 60 55073 > 21 [RST, ACK] Seq=67 Ack=249 Win=4628 Len=0
206 5.020808000 185.XXX.XXX.XXX 192.YYY.YYY.YYY TCP 66 55074 > 21 [SYN] Seq=0 Win=4380 Len=0 MSS=1456 WS=1 SACK_PERM=1
207 5.020841000 192.YYY.YYY.YYY 185.XXX.XXX.XXX TCP 66 21 > 55074 [SYN, ACK] Seq=0 Ack=1 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1
在上文中,185.XXX.XXX.XXX = 服务器 WAN IP(路由器/网关的外部 IP)192.YYY.YYY.YYY 是我的服务器 LAN IP 192、YYY、YYY、ZZZ 是网关的 IP,我也在上面提到过,我将其用作外部防火墙地址以使其正常工作。
在第 204 帧中,我丢失了 FileZilla 客户端上的连接,如前所述。在第 207 帧之后,我关闭了 FileZilla,之后的几行只列出了我的 RDP 和正在运行的备份系统。
如果我 - 在 wireshark 中 - 双击每一行,我可以看到线路上有一些字节,并且每个帧都会收到相同的字节。所以如果有数据包丢失,我不知道在这种情况下如何看到它。
答案1
发帖说我也有同样的经历。IISreset 在服务器 2016 上不起作用。我对 IIS FTP 站点配置的范围和公共 IP 进行了所有更改,设置了防火墙以对这些端口进行 NAT 等。重新启动 2016 服务器后,一切都按预期运行。