Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Vsftpd PASV 被動模式與 PORT 主動模式深度解析

編輯:Linux 教學

前言:FTP 的雙通道機制

FTP(檔案傳輸協定)在建立連線時會使用兩條獨立的 TCP 連線:一條是控制連線(預設埠號 21),用於傳遞指令與回應;另一條是資料連線,負責實際的檔案內容傳輸。根據資料連線的建立方式不同,FTP 分為主動模式與被動模式兩種工作模式。Vsftpd 作為 Linux 下常見的 FTP 伺服器,完整支援這兩種模式,正確理解與配置它們對於穿透防火牆、NAT 環境至關重要。

主動模式(PORT 模式)運作流程

  1. 用戶端向伺服器的 TCP 21 埠發起控制連線。
  2. 用戶端在本地開啟一個臨時埠(N),並透過控制連線發送 PORT 指令,告知伺服器「我在埠 N 等待資料連線」。
  3. 伺服器收到指令後,從自身的 TCP 20 埠(ftp-data)主動發起連線,連向用戶端的 IP 位址與埠 N。
  4. 資料連線建立完成,開始傳輸檔案。

關鍵點:資料連線由伺服器主動發起連向用戶端。

被動模式(PASV 模式)運作流程

  1. 用戶端向伺服器的 TCP 21 埠發起控制連線。
  2. 用戶端發送 PASV 指令,請求進入被動模式。
  3. 伺服器在本地開啟一個臨時埠(M),並回應用戶端「我在埠 M 等待連線」,同時告知自己的 IP 位址。
  4. 用戶端主動連向伺服器的 IP 位址與埠 M,建立資料連線。
  5. 資料傳輸開始。

關鍵點:資料連線由用戶端主動發起連向伺服器。

為何 NAT 環境下必須使用 PASV 模式?

典型場景:用戶端位於內網(如 192.168.1.2),透過路由器(網關 192.168.1.1,公網 IP 218.63.1.5)訪問公網 FTP 伺服器。

  • PORT 模式失敗原因:用戶端告知伺服器連接內網 IP 192.168.1.2 的埠 N。伺服器嘗試連接該私有位址,但路由器不會將外部發起的連線轉發給內網主機(除非做了端口映射),導致連線超時或被拒絕。
  • PASV 模式成功原因:伺服器開啟埠 M 並告知公網 IP,用戶端從內網主動發起連線,經由 NAT 設備正常轉發,資料連線順利建立。

因此,處於 NAT、防火牆後方的用戶端,應在 FTP 客戶端中啟用「被動模式」(PASV)。

Vsftpd 關鍵配置參數速查

參數說明預設值
pasv_enable啟用/停用 PASV 模式YES
pasv_min_port / pasv_max_port限定 PASV 模式使用的埠範圍(建議設高埠如 50000-60000,便於防火牆放行)0 (任意)
pasv_address指定 PASV 回應中返回的 IP 位址(用於伺服器多網卡或 NAT 映射場景)none (自動從連線取得)
port_enable啟用/停用 PORT 模式YES
connect_from_port_20PORT 模式下是否使用 20 埠作為資料來源埠NO (RHEL/CentOS 預設 YES)
ftp_data_portPORT 模式資料傳輸埠20
pasv_promiscuous關閉 PASV 安全檢查(確保控制與資料連線來自同一 IP),極不建議開啟NO

防火牆與 NAT 穿透提示

  • 若使用 iptables 做 NAT,需載入模組 ip_nat_ftp 與 ip_conntrack_ftp,否則 PASV 模式可能無法連線。
  • 在防火牆上放行 pasv_min_port~pasv_max_port 範圍的 TCP 入站流量。
  • 伺服器若也在 NAT 後方,需在路由器做端口映射,並設定 pasv_address 為公網 IP。

總結

理解 PORT 與 PASV 的本質差異——誰發起資料連線——是解決 FTP 連線問題的核心。現代網路環境中,用戶端多位於 NAT 後方,PASV 模式已成為事實上的標準配置。Vsftpd 提供豐富的參數讓管理員精確控制埠範圍、回應 IP 等細節,配合防火牆策略,即可構建安全、高可用的 FTP 服務。

Copyright © Windows教程網 All Rights Reserved