1. 程式人生 > 其它 >關於ftp的主動模式(Active Mode)和被動模式(Passive Mode)

關於ftp的主動模式(Active Mode)和被動模式(Passive Mode)

閱讀更多

首先FTP協議是建立在TCP協議基礎上的,所以client與server的每次互動都要經過三次握手(「TCP Three-Way Handshake)

通過兩張圖進行解釋

1、主動模式(也叫做PORT模式、standard模式,需要利用伺服器的21埠進行資料傳輸)


說明:client端利用>1024的任意埠發起於server的21埠建立連線,建立“命令聯絡通道”,如果要發生資料傳輸,通過21告知server資料聯絡通道埠(也是一個>1024的埠例如1333),並進行listen,server利用20埠向client的1333埠發起連線,並建立“資料聯絡通道”。

“資料聯絡通道”是由server主動建立的(步驟6),所以叫做“祖東模式”。

侷限性:client端在防火牆或IP分享伺服器後面是,其“命令聯絡通道”可以順利建立,但“資料聯絡通道”無法順利建立。

2、被動模式


說明:建立“命令聯絡通道”的方式和主動模式基本一樣,也是連線server的21埠。但是如果需要傳輸資料,client會送出PASV指令,告訴server要利用被動模式建立“資料聯絡通道”,然後server會開啟一個>1024埠,並開始listen,並把這個埠好通過“命令聯絡通道”告知client,client再開啟一個>1024的埠,與server建立“資料連線通道”。

“資料連線通道”是由server被動建立的,所以稱作“被動模式”。

3、VSFTP關於主動模式被動模式的配置

pasv_enable=YES //開啟被動模式,預設是YES

pasv_min_port=3000

pasv_max_port=4000 //設定建立“資料聯絡通道”的埠範圍,指定是為了利於server端防火牆設定

pasv_promiscuous=YES(預設是N,設定為Y時,將關閉PASV模式的安全檢查,該檢查確保資料連線和控制連線是來自同一個IP地址,小心開啟此選項,此選項唯一合理的用法是存在於由安全隧道方案構成的組織中)

4、FTP命令列連線設定主動和被動模式

windows的ftp命令預設是使用的主動方式連線FTP serer。

linux預設是PASV模式,並通過passive on | off 來進行切換

5、實際中遇到的一個問題

關於pasv_promiscuous=YES。

沒有設定此項時客戶端連線伺服器正常,但是執行“list”等命令時報

425 Security: Bad IP connecting

說明“資料聯絡通道”建立時發現與“命令聯絡通道”的IP不同,倒是連線誒失敗。

14:15:27.563 [main] INFO c.b.c.util.ftp.EventListenerImpl - 返回結果: 220 (vsFTPd 2.0.5)

14:15:27.564 [main] INFO c.b.c.util.ftp.EventListenerImpl - 傳送命令: ---> USER ws

14:15:27.566 [main] INFO c.b.c.util.ftp.EventListenerImpl - 返回結果: 331 Please specify the password.

14:15:27.566 [main] INFO c.b.c.util.ftp.EventListenerImpl - 傳送命令: ---> PASS ********

14:15:27.570 [main] INFO c.b.c.util.ftp.EventListenerImpl - 返回結果: 230 Login successful.

14:15:27.570 [main] INFO c.b.c.util.ftp.EventListenerImpl - 傳送命令: ---> TYPE I

14:15:27.571 [main] INFO c.b.c.util.ftp.EventListenerImpl - 返回結果: 200 Switching to Binary mode.

14:15:27.571 [main] INFO c.b.c.util.ftp.EventListenerImpl - 傳送命令: ---> TYPE I

14:15:27.571 [main] INFO c.b.c.util.ftp.EventListenerImpl - 返回結果: 200 Switching to Binary mode.

14:15:27.578 [main] INFO c.b.c.util.ftp.EventListenerImpl - 傳送命令: ---> SYST

14:15:27.578 [main] INFO c.b.c.util.ftp.EventListenerImpl - 返回結果: 215 UNIX Type: L8

14:15:27.583 [main] INFO c.b.c.util.ftp.EventListenerImpl - 傳送命令: ---> PWD

14:15:27.583 [main] INFO c.b.c.util.ftp.EventListenerImpl - 返回結果: 257 "/"

14:15:27.583 [main] INFO c.b.c.util.ftp.EventListenerImpl - 傳送命令: ---> PASV

14:15:27.584 [main] INFO c.b.c.util.ftp.EventListenerImpl - 返回結果: 227 Entering Passive Mode (200,200,200,8,119,147)

14:15:27.586 [main] INFO c.b.c.util.ftp.EventListenerImpl - 傳送命令: ---> LIST

14:15:27.587 [main] INFO c.b.c.util.ftp.EventListenerImpl - 返回結果: 425 Security: Bad IP connecting.

參考資料:

http://www.phys.nthu.edu.tw/~cc/QA/vsftpd.pdf

http://vsftpd.beasts.org/vsftpd_conf.html

出處:https://www.iteye.com/blog/liang29731611-1585135

您的資助是我最大的動力!
金額隨意,歡迎來賞!
款後有任何問題請給我留言。

如果,您認為閱讀這篇部落格讓您有些收穫,不妨點選一下右下角的推薦按鈕。
如果,您希望更容易地發現我的新部落格,不妨點選一下綠色通道的關注我。(●'◡'●)

如果對你有所幫助,贊助一杯咖啡!打 付款後有任何問題請給我留言!!!

因為,我的寫作熱情也離不開您的肯定與支援,感謝您的閱讀,我是【Jack_孟】!