vsftpd中設置pasv_min_port=pasv_max_port有什麼影響?
我正在按照本教程安裝 FTP 伺服器vsftpd,可以總結為:
apt-get install vsftpd
然後在配置文件中/etc/vsftpd.conf
取消註釋行local_umask=022
和write_enable=YES
,最後添加:lock_upload_files=NO chroot_local_user=YES force_dot_files=YES
並更改以下內容(隨意將 8745 更改為您喜歡的任何埠):
pasv_enable=YES pasv_min_port=8745 pasv_max_port=8745
設置為與 vsftpd
pasv_min_port
中相同的埠有什麼影響?pasv_max_port
例如,它對性能有影響嗎?
**TL; DR:**影響是您的 FTP 伺服器一次只支持 1 次傳輸。對於旨在為並發客戶端提供服務的 FTP 伺服器絕對是禁忌。一次只有一個人使用的私人 FTP 伺服器可能沒問題,只要該人對不允許同時傳輸多個數據感到滿意。
FTP 協議(無論使用何種伺服器軟體,無論是它
vsftpd
還是其他)都以雙通道方式工作。第一個通道,綁定到眾所周知的埠 21,用作“控制通道”。該通道用於向伺服器發送請求並接收來自它的回复。請求屬於命令類型,例如“列出此目錄”或“發送此文件”或“告訴我您支持的功能”等。回复屬於與狀態條件和簡短、文本、易於解析的答案相關的類型.
第二個通道用於批量傳輸,例如構成發送或接收文件的實際數據流,或構成目錄列表的數據流。在最典型的使用場景中,這樣的第二個通道是按需建立的,並且只持續一個操作,即每個傳輸的單個文件(或目錄列表)在客戶端和伺服器之間從頭開始建立一個新的通道(TCP連接)。一直以來,第一個通道(埠 21 上的通道)保持打開狀態以進行控制。
在 FTP 被動模式下,伺服器使用被動埠選擇一個埠進行偵聽,同時等待來自請求文件傳輸/目錄列表的客戶端的這種短暫的第二個通道(TCP 連接)。因為第二個通道不承擔身份驗證/辨識,也沒有任何類型的“cookie”,伺服器只能在它選擇的埠和已請求的特定操作之間建立關聯。即:每個第二個通道都與特定客戶端請求的精確文件或特定目錄緊密綁定。
因此,如果您只為伺服器提供一個埠供第二個通道選擇,則伺服器一次只能支持一個“批量傳輸”。目前有多少客戶端連接到埠 21 上的“控制通道”並不重要:在任何給定時刻,只有一個客戶端會傳輸文件或列出目錄,而其他客戶端在同一時刻請求傳輸會而是接收來自伺服器的回复,通知臨時錯誤。
換句話說,僅使用一個被動埠本質上就像一個大的互斥鎖,用於堅持同一個 FTP 伺服器的 FTP 傳輸。