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

FTP「227 Entering Passive Mode」連線失敗:主動/被動模式原理解析與解決

編輯:關於伺服器

FTP 兩大工作模式核心差異

特性PORT 主動模式PASV 被動模式
指令通道客戶端 → 伺服器:21客戶端 → 伺服器:21
資料通道發起方伺服器 主動連線客戶端客戶端 主動連線伺服器
資料通道埠口伺服器:20 → 客戶端:隨機高埠客戶端:隨機高埠 → 伺服器:隨機高埠
客戶端防火牆需允許入站連線 (常被封鎖)僅需出站連線 (通常允許)
伺服器防火牆僅需開放 20,21需開放 21 + 被動埠範圍
NAT 穿透極差 (需 ALG/應用層閘道)良好 (客戶端發起)

錯誤場景分析

伺服器啟用 TCP/IP 篩選,**僅開放特定埠**,導致 PASV 模式所需的隨機高埠被封鎖,客戶端收到 227 Entering Passive Mode (h1,h2,h3,h4,p1,p2) 後嘗試連線失敗。

解決方案一:客戶端強制使用 PORT 模式 (適用受控環境)

ftp> open server.ip
ftp> user username
ftp> pass
ftp> passive
Passive mode off.
# 後續操作將使用 PORT 模式
ftp> ls
ftp> get file.txt
  • 優點:無需修改伺服器防火牆
  • 缺點:客戶端需允許入站、NAT 環境易失敗、不支援大檔案傳輸優化

解決方案二:伺服器固定 PASV 埠範圍並開放防火牆 (標準做法)

vsftpd 配置

# /etc/vsftpd/vsftpd.conf
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50100
pasv_address=203.0.113.10  # 公開 IP (NAT 環境必填)
# 重啟
systemctl restart vsftpd

防火牆開放

# firewalld
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-port=50000-50100/tcp
firewall-cmd --reload

# iptables
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 50000:50100 -j ACCEPT

解決方案三:啟用 FTP over TLS (FTPS) + 被動模式 (生產標準)

# vsftpd.conf
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.key
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
# 被動模式設定同上

客戶端驗證指令

# 測試 PORT 模式
ftp -A server.ip  # -A 強制主動模式

# 測試 PASV 模式 (預設)
ftp server.ip
ftp> quote PASV
227 Entering Passive Mode (h1,h2,h3,h4,p1,p2)
# 計算埠號:p1*256 + p2,確認在 50000-50100 範圍內

現代替代方案建議

棄用純文字 FTP。請改用:
1. SFTP (SSH File Transfer Protocol):單一埠 22、強加密、鍵認證、支援斷點續傳
2. FTPS (FTP over TLS):相容 FTP 指令、需開放被動埠範圍
3. rsync over SSH:增量同步、壓縮、保留屬性、自動化首選
4. WebDAV over HTTPS:瀏覽器原生支援、雲端儲存標準

避坑提醒

  • 雲廠商安全組/防火牆**必須**同步開放被動埠範圍
  • NAT 環境 pasv_address 必填公開 IP,否則客戶端收到內網 IP 導致連線失敗
  • 被動埠範圍建議 100-200 個埠,過小併發受限、過大攻擊面擴大
  • 檔案傳輸中斷續傳:reget (下載)、reput (上傳) 需伺服器支援
Copyright © Windows教程網 All Rights Reserved