如何用端口映射建立內網FTP
一、端口映射的問題 端口映射是指將一個IP上的某個端口映射到另外一個IP的某個端口上去。如下例:

Host3欲登陸到FTP Server,但是由于FTP Server在Lan中,沒有公網上的IP地址,因此Host3無法定位到FTP Server,此時,可在Lan中的網關(或路由器)即Host1上做端口映射,將Host1的21端口映射到FTP Server上,Host1負責將發送到21端口的數據轉送到FTP Server的21端口上,如此一來,Host3可直接連接Host1的21端口,而所有發送的數據則由Host1轉送到FTP Server上了。 “這么說,只要將Host1的21端口映射到FTP Server就可以在內網中做FTP服務器了?”非也,如果你僅僅映射21端口,那么要連接到FTP的客戶端必須關閉PASV模式,而且有的客戶端可以登陸,而有的根本無法登陸。為什么會這樣?PASV又是什么?這就先要從FTP服務器的工作模式說起了。
二、FTP的工作模式 FTP服務器在啟動后,會打開一個命令模式端口(默認是21),客戶端連接上FTP時,會首先連接到命令模式端口,這時候就建立起一個命令通道,所有發送的命令與服務器的反饋就通過這個通道傳送。但這條通道僅僅能傳送命令,要傳送文件數據信息(如文件內容、目錄列表等等)就得經過另外一個通道(數據通道),而這個數據通道是用Port命令或Pasv命令建立的。 1、PORT模式。使用PORT命令后,客戶端會打開一個沒有被占用的端口,然后由服務器的20端口發起一個連接,連接到這個端口,從而建立起一條數據通道。 2、PASV模式。使用PASV命令后,客戶端會請求服務器再打開一個沒有被占用端口,然后客戶端連接到服務器的這個端口上,建立起一條數據通道。 因此,看得出來,如果FTP服務器是內網的,且僅映射了21端口,則其它內網用戶用Port模式能連接上服務器,但無法列出文件列表,更遑論下載文件了。更要命的是Pasv模式根本無法使用,因為PASV模式需要用到的端口沒有被映射。因此,我們需要映射所有被PASV模式用到的端口(可怕的工作量)。那么如何得知FTP服務器能使用哪些PASV模式端口并一一映射它們呢?幸運的是,有一個PortTunnel的端口映射軟件,它能自動偵測到PASV模式需要使用的端口且自動映射它們,這實在太好了,我們就不必一個個的去映射這些PASV用到的端口了。如圖:

不過PortTunnel只能用在網關機(即Host1)上,如果Host1根本不是一臺PC,而是路由器或者是ADSL Modem,怎么辦?沒辦法啦,您就只有一個一個映射了,那么,先找出PASV用到了哪些端口吧,以Serv-U這個FTP服務器軟件為例:

這里PASV端口范圍可以自己確定(根據服務器的最大同時連接數量確定),端口知道了,那么就一個一個的映射吧~~~路由器和ADSL Modem設置端口映射的方法我就不說了,因為每一款產品可能都不一樣。
案例1:一個LAN,主機裝WIN2K,共享上網,FTP服務器在內網上,則可在主機上安裝PortTunnel,映射21端口,然后啟用“使用Port和PASV命令”,如此即可。




點“開始”之后,端口映射工具PortTunnel就開始工作了 PortTunnel可以在我的FTP上下載 ftp://61.136.221.178/Internet/PortTunnel_CH.zip
案例2:家庭用戶,用ADSL Modem + LAN方式上網,由于網關是ADSL Modem,因此無法使用PortTunnel,不過ADSL Modem本身支持端口映射,則確定FTP服務器的PASV端口后,一一在Modem上設置好映射即可。因為我沒有ADSL,所以圖略:)
|