防火墙做映射后ftp服务异常问题记录

组网介绍

防火墙作为出口(GigabitEthernet0/0/1),下挂ftp服务器192.168.0.10

在防火墙做映射

nat server 0 protocol tcp global interface GigabitEthernet0/0/1 10021 inside 192.168.0.10 ftp no-reverse

接口下detect ftp

用pc通过互联网测试ftp服务,连接正常,无法传数据

分析原因

查看会话表,发现ftp服务器通过20端口主动向客户端发送数据,但20端口在防火墙上并没有映射出去

[xxx]display firewall session table application ftp
  Current Total Sessions : 4
   ftp-data  VPN:public --> public 192.168.0.10:20[124.202.xxx.xxx:20]-->222.169.xxx.xxx:16070
   ftp  VPN:public --> public 222.169.xxx.xxx:1266+->124.202.xxx.xxx:10021[192.168.0.10:21]

ftp有两种模式,一种方式叫做Standard (也就是 Active,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP的客户端发送 PORT 命令到FTP server。Passive模式FTP的客户端发送 PASV命令到 FTP Server。 
Standard模式FTP 客户端首先和FTP Server的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。  
  Passive模式在建立控制通道的时候和Standard模式类似,当客户端通过这个通道发送PASV 命令的时候,FTP server打开一个位于1024和5000之间的随机端口并且通知客户端在这个端口上传送数据的请求,然后FTP server 将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。  

解决办法:

1、在防火墙上将20、21端口都映射出去

2、pc侧通过passive模式建立连接(windows cmd貌似不支持passive模式,可以使用ftp客户端软件)。

如下为更换另一个支持passvie模式的设备测试结果正常

   ftp-data  VPN:public --> public 61.148.xxx.xxx:51302-->124.202.xxx.xxx:15366[192.168.0.10:2121]

   ftp  VPN:public --> public 61.148.xxx.xxx:52598+->124.202.xxx.xxx:10021[192.168.0.10:21]

猜你喜欢

转载自blog.csdn.net/liuya000/article/details/82828388