- 命令通道的建立:
因為 NAT 主機會主動的記錄由內部送往外部的連線資訊,而由於命令通道的建立是由用戶端向伺服器端連線的,
因此這一條連線可以順利的建立起來的;
- 資料通道建立時的通知:
同樣的,用戶端主機會先啟用 port BB ,並透過命令通道告知 FTP 伺服器,且等待主機端的主動連線;
- 主機的主動連線問題:
但是由於透過 NAT 主機的轉換後,FTP 伺服器只能得知 NAT 主機的 IP 而不是用戶端的 IP ,
因此 FTP 伺服器會以 port 20 主動的向 NAT 主機的 port BB 發送主動連線的要求。
但你的 NAT 主機並沒有啟動 port BB 來監聽 FTP 伺服器的連線啊!
瞭解問題的所在了嗎?在 FTP 的主動式連線當中,NAT 主機將會被視為用戶端,但 NAT 主機其實並非用戶端啊,
這就造成問題了。如果你曾經在 IP 分享器後面連接某些 FTP 伺服器時,可能偶爾會發現明明就連接上 FTP 伺服器了
(命令通道已建立),但是就是無法取得檔案名稱的列表,而是在超過一段時間後顯示『
Can't build data connection: Connection refused,無法進行資料傳輸』之類的訊息,
那肯定就是這個原因所造成的困擾了。
- 建立命令通道:
同樣的需要建立命令通道,透過三向交握就可以建立起這個通道了。
- 發出 PASV 的連線要求:
當有使用資料通道的指令時,用戶端可透過命令通道發出 PASV 的被動式連線要求 (Passive 的縮寫),
並等待伺服器的回應;
- FTP 伺服器啟動資料埠口,並通知用戶端連線:
如果你的 FTP 伺服器是能夠處理被動式連線的,此時 FTP 伺服器會先啟動一個埠口在監聽。
這個埠口號碼可能是隨機的,也可以自訂某一範圍的埠口,端看你的 FTP 伺服器軟體而定。
然後你的 FTP 伺服器會透過命令通道告知用戶端該已經啟動的埠口 (圖中的 port PASV),
並等待用戶端的連線。
- 用戶端隨機取用大於 1024 的埠口進行連接:
然後你的用戶端會隨機取用一個大於 1024 的埠號來對主機的 port PASV 連線。
如果一切都順利的話,那麼你的 FTP 資料就可以透過 port BB 及 port PASV 來傳送了。
發現上面的不同點了嗎?被動式 FTP 資料通道的連線方向是由用戶端向主機端連線的喔!
如此一來,在 NAT 主機內部的用戶端主機就可以順利的連接上 FTP Server 了!但是,萬一 FTP
主機也是在 NAT 後端那怎麼辦.....呵呵!那可就糗了吧~ @_@這裡就牽涉到更深入的 DMZ
技巧了,我們這裡暫不介紹這些深入的技巧,先理解一下這些特殊的連線方向,
這將有助於您未來伺服器架設時候的考慮因素喔!
此外,不曉得您有無發現,透過 PASV 模式,伺服器在沒有特別設定的情況下,會隨機選取大於 1024
的埠口來提供用戶端連接之用。那麼萬一主機啟用的埠口被搞鬼怎麼辦?而且,
如此一來也很難追蹤來自入侵者攻擊的登錄資訊啊!所以,這個時候我們可以透過
passive ports 的功能來『限定』主機啟用的 port number 喔!
阅读(413) | 评论(0) | 转发(0) |