FTP有主动模式 port 被动模式 pasv epasv
服务器端一般两种模式都支持. 客户端发起请求时候会指定模式 , 如下是一段vsftpd中的一段log
Fri Jan 4 13:46:33 2019 [pid 28] [ftpuser] FTP response: Client "10.148.253.154", "230 Login successful."
Fri Jan 4 13:46:33 2019 [pid 28] [ftpuser] FTP command: Client "10.148.253.154", "SYST"
Fri Jan 4 13:46:33 2019 [pid 28] [ftpuser] FTP response: Client "10.148.253.154", "215 UNIX Type: L8"
Fri Jan 4 13:47:07 2019 [pid 28] [ftpuser] FTP command: Client "10.148.253.154", "PASV"
Fri Jan 4 13:47:07 2019 [pid 28] [ftpuser] FTP response: Client "10.148.253.154", "227 Entering Passive Mode (127,0,0,1,195,80)."
EPASV是这样的
25 Fri Jan 4 13:50:28 2019 [pid 32] [ftpuser] FTP command: Client "10.41.107.241", "EPSV"
26 Fri Jan 4 13:50:28 2019 [pid 32] [ftpuser] FTP response: Client "10.41.107.241", "229 Entering Extended Passive Mode (|||50007|)"
27 Fri Jan 4 13:50:29 2019 [pid 32] [ftpuser] FTP command: Client "10.41.107.241", "LIST"
EPSV 与 PSV在于 PSV只支持IPV4
当使用EPSV时候, 服务器会仅传回端口号, 当使用PSV时候服务器会回传IP+端口号((127,0,0,1,195,80)) 端口号= 195*256+80
对于广泛使用lftp客户端, 默认的发起请求是PASV 并不是ACTIVE(PORT), filezillia客户端发起是PASV中的 EPSV,可以自己设置.
这是lftp的文档: https://lftp.yar.ru/lftp-man.html
对于主动模被动模式的区别可以参见鸟哥私房菜.