![被動模式下VSFTP連線數](https://rvso.com/image/623611/%E8%A2%AB%E5%8B%95%E6%A8%A1%E5%BC%8F%E4%B8%8BVSFTP%E9%80%A3%E7%B7%9A%E6%95%B8.png)
當使用被動模式時,如果我們將 pasv_max_port 設定為 10100,將 pasv_min_port 設定為 10090。
我們可以為 pasv_max_port 和 pasv_min_port 設定相同的連接埠號碼嗎?如果可以的話,VSFTP伺服器可以同時處理多少個客戶端?只有一個?
答案1
簡化,我會說是的,這就是你應該如何考慮的(在我看來)。
限制連接埠範圍將根據最小和最大之間的連接埠數量限制並發客戶端連線。這樣你就可以避免奇怪的行為。
但是,事實上這是不正確的,必須進行調整:-)
更深入、更精確:限制連接埠會影響資料通道的同時使用。
請注意,新的連線請求需要可用的資料通道。
我不知道所有使用資料通道的FTP命令,但基本上上傳(STOR)
,下載(RETR)
,清單(LIST)
命令都需要資料通道。
為了說明這一點,我剛剛在實驗室中使用我的 vsftpd 伺服器和以下設定進行了測試(您可以重現):
pasv_max_port=10100
pasv_min_port=10100
1.第一次測試:
- 我與 Client1 連線:好的
- 我在 Client1 仍處於連線狀態時與 Client2 連線:好的
- 我與 Client3 連接,而 Client1 和 Client2 仍然連接:好的
為什麼 ?
- Client2 能夠連接,因為 Client1 沒有執行任何操作(閒置)且沒有使用資料通道,因此伺服器已將連接埠指派給 Client2。
- Client3之所以能夠連接,是因為Client1和Client2都處於空閒狀態,沒有使用資料通道,所以伺服器已經將連接埠分配給了Client3。
2.第二次測試:
- 我與 Client1 連接並開始上傳文件:好的 文件上傳正在進行中
- 我在 Client1 上傳仍在運行時與 Client2 連接:錯誤無法連接
- 我等待 Client1 上傳完成
- Client1 上傳完成後,我就可以與 Client2 連線。
為什麼 ?
- 由於 Client1 正在使用資料通道進行上傳,因此 Client2 無法連接,因為伺服器端沒有更多可用連接埠為其提供服務。
- Client1 上傳完成後,伺服器釋放資料通道端口,Client2 就可以使用它進行連接。
3. 第三次測試:
- 我與 Client1 連線:好的
- 我在 Client1 仍處於連線狀態時與 Client2 連線:好的
- 我開始從 Client1 上傳到 ftp 伺服器:好的上傳正在進行中
- 當 Client1 上傳仍在執行時,我開始從 Client2 上傳到 ftp 伺服器:錯誤連線被伺服器關閉。轉移失敗。
為什麼 ?
測試 1 和測試 2 的混合:
- Client2 能夠連接,因為 Client1 沒有執行任何操作(閒置)且沒有使用資料通道,因此伺服器已將連接埠指派給 Client2。
- Client1 能夠上傳文件,因為 Client2 空閒,因此伺服器已將連接埠指派給 Client1 進行上傳。
- Client2 無法上傳文件,因為資料傳輸連接埠已被 Client1 用於上傳
現在你可以明白為什麼我一開始就談論「奇怪」的行為了。
希望它會有所幫助!