防火牆做對映後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] |