最近在開IPF讓ftp通過時,在passive mode 時吃了點虧,因此作個筆記記錄一下:
Active mode:
圖片的來源是:http://henrydu.com/blog/how-to/ftp-active-mode-vs-passive-mode-106.html
重點是在通訊過程中會使用到port這個指令,這個指令是由client往server發送的,它的目地是請server指派之後要用哪個port來傳資料。
Client 向 Server要求要使用 port:202*256+253 =
51965 port來傳資料
接著Server會用port 20往client 51965 port做3 way handshake
之後就開始傳資料 (server發起三向交握)
所以第一個session是client發起的,但第二個session是server發起的。
IPF的設定方式:
pass in log quick proto tcp from
126.1.65.11 to 126.1.60.91 port = 21 flags S keep state
pass in log quick proto tcp from 126.1.60.91
port = 20 to 126.1.65.11 flags S keep state
傳完之後再透過主通道看有沒有其它事要做,若還有其它檔要傳,會再起一個新的session,同樣由ftp server的tcp port 20發起。
實驗筆記:
1、 Windows 的 cmd的ftp只能用active mode來傳,就算你有下quote pasv或quote epsv也一樣。
2、有port指令的才是active mode
再來是passie mode:
圖片的來源是:http://henrydu.com/blog/how-to/ftp-active-mode-vs-passive-mode-106.html
client通知要用pasv mode之後, (之後FTP client用以傳輸的預設Port是原始port再加1)。接著server會回應他的port是:256*219+115=59179
接著做三向交握 (由client發起)
所以兩個session都是由client發起的,而且source 及destination port不同
第一個是any to 21,第二個是 > 1023 to > 1023
確認後就可以用這個通道傳資料,傳完後關閉,若要傳其它檔案再用主通道來溝通。
IPF的設定方式:
pass in log quick proto tcp from
126.1.65.11 to 126.1.60.91 port = 21 flags S keep state
pass in log quick proto tcp from
126.1.65.11 port >1023 to 126.1.60.91 port > 1023flags S keep state
( or pass in log quick proto tcp from
126.1.65.11 to 126.1.60.91 flags S keep state)
沒有留言:
張貼留言