将数据传输到Active FTP服务器从DMZ失败,但从LAN正常工作

我知道已经有很多类似的问题,但是我已经读完了我能find的所有东西,而且在解决我的具体问题时仍然遇到了麻烦。

问题:我无法将数据传输到外部FTP服务器,但只能从位于DMZ内的服务器上运行的FTP客户端传输数据。 从FTP客户端传输工作正常从我的局域网内的任何机器。

我的环境简要概述:

我有一个Sonicwall SOHO路由器/防火墙,configuration/连接了以下接口:

  • X0:局域网
  • X1:WAN(单个,来自ISP的静态IP)
  • X2:DMZ(作为Web服务器的一台服务器,FTP服务器连接到此接口)

我对NAT策略很有信心 – 人们可以很好地连接到我的FTP服务器,并且可以从我的DMZ内部连接到其他FTP服务器 – 只有一台特定的服务器存在这个问题。 在将我的防火墙从Cisco SA520升级到Dell Sonicwall SOHO之前,连接用于正常工作。 我还会注意到,虽然我可以连接到其他FTP服务器,但这些服务器以被动模式连接,因此可能是主动模式连接的问题。 目前,问题服务器只接受来自我的IP的主动模式。

我目前的想法是,这是我的一个防火墙问题,但我不明白为什么。 我的防火墙规则很简单:

LAN > WAN Allow all DMZ > WAN Allow all WAN > LAN Deny all WAN > DMZ Allow Server Services (HTTP, HTTPS, FTP (All) (TCP 20, 21, 49152 - 65535)) WAN > DMZ Deny all 

我的高级防火墙设置中也有以下规则集:

 Enable FTP Transformations for TCP port(s) in Service Object: FTP (All) 

(“FTP(全部)”服务对象使用上面列出的相同端口 – TCP 20,21,49152-65535)。

我对这个规则是做什么不是很有信心,但我认为这是允许从外部来源到我的服务器的被动连接。 但是,当我尝试连接到外部来源时,我不知道是否会造成问题。

使用Sonicwall的数据包监视器,我可以login到服务器并发出一个PORT命令,它返回一个200 PORT的成功响应。 但是,在发出LIST命令后,我的服务器从不会应答FTP服务器发送的SYN消息(帧#57/58)。 FTP服务器然后重新发送SYN(帧64/65和72/73)。 当在超时窗口中没有收到ACK时,超时。 以下是在尝试连接期间SonicWALL数据包监视器的一些输出:

 No. Time Source Destination Protocol Length Info 53 3.750000 My DMZ IP FTP Server FTP 60 Request: LIST 54 3.750000 My WAN IP FTP Server FTP 60 Request: LIST 55 3.783334 FTP Server My WAN IP FTP 108 Response: 150 Opening BINARY mode data connection for /bin/ls. 56 3.783334 FTP Server My DMZ IP FTP 108 Response: 150 Opening BINARY mode data connection for /bin/ls. 57 3.783334 FTP Server My WAN IP TCP 62 20 → 61011 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 SACK_PERM=1 58 3.783334 FTP Server My DMZ IP TCP 62 20 → 61011 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 SACK_PERM=1 59 4.000000 My DMZ IP FTP Server TCP 60 61010 → 21 [ACK] Seq=88 Ack=289 Win=65280 Len=0 60 4.000000 My WAN IP FTP Server TCP 54 26752 → 21 [ACK] Seq=91 Ack=289 Win=65280 Len=0 64 6.683334 FTP Server My WAN IP TCP 62 [TCP Retransmission] 20 → 61011 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 SACK_PERM=1 65 6.683334 FTP Server My DMZ IP TCP 62 [TCP Retransmission] 20 → 61011 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 SACK_PERM=1 72 12.633334 FTP Server My WAN IP TCP 62 [TCP Retransmission] 20 → 61011 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 SACK_PERM=1 73 12.633334 FTP Server My DMZ IP TCP 62 [TCP Retransmission] 20 → 61011 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 SACK_PERM=1 

(请注意,以上序列中的任何丢失的帧都是由于从此视图中滤除的其他stream量)。

在我的LAN机器上,在LIST命令和数据传输工作正常之后,ACK被发回。

所以,当我诊断到这一点时,我不知道下一步该怎么做。 路由器不会因为防火墙规则而丢弃任何数据包或阻塞任何东西。 任何想法,为什么我的局域网机器发送确认,但DMZ机不?

我在局域网中有一个与Pitney Bowes设备类似的问题。 我通过将Sonicwall更新为固件6.2.7.1-23n来解决这个问题。