■
筆者的單位最近需要架設一臺FTP服務器,并將其放在互聯網上,用于在異地的分公司向總公司回傳數據。本公司有互聯網出口和網絡設備。公司的網絡架構如圖1所示。

圖1 網絡架構圖
筆者以前曾在局域網內部架設過FTP服務器,用于局域網內部幾臺計算機之間傳遞數據。因此認為這項工作比較簡單,只需要在服務器上安裝FTP服務器軟件,再在防火墻上開放相應的端口即可。但在實際實施過程中,這項看似簡單的工作,最初卻頗費周折,一直無法成功開通FTP服務。直到認真研究了FTP協議的原理,對FTP協議有了重新的認識后,修改了之前不正確的配置,才最終解決問題。現與大家分享一下,筆者處理這項工作的過程和一些經驗。
根據公司的業務需求和條件,FTP服務器搭建,考慮使用公司一臺服務器用于架設FTP服務器,FTP服務器考慮采用Server-U軟件,該軟件功能強大、設置簡單、性能穩定。而網絡部分,考慮在公司網絡出口的防火墻上將FTP服務器的內網IP地址與出口公網IP地址進行端口映射,并開放相應端口。
此外,由于公司的FTP要放置到互聯網上,存在一定的安全風險。因此在實施前,筆者設定了幾條實施原則,以盡量降低安全風險,即:FTP服務器的默認端口應該修改為非默認端口。
在防火墻上只開放必要的、最少的端口,FTP服務器禁止匿名用戶訪問,只允許指定賬號有訪問權限。

圖1 設置FTP端口
根據以上的思路和設定的原則,筆者進行了FTP的安裝和配置。
首先,進行FTP服務器的配置。
在服務器中安裝Serv-U軟件。在該軟件中,添加新的域“gs”,設置域的 IP地址和端口號,并在域中添加用戶,設定用戶名、密碼、該用戶主目錄和用戶權限。其中域的IP地址就是服務器的內網地址“192.168.2.2”。域的用戶名、密碼就是FTP登錄的用戶名和密碼。主目錄就是FTP服務器的登錄目錄。最后將FTP端口號修改為“5566”(如圖1)。FTP服務器搭建完成后,在公司局域網內部進行測試,訪問FTP服務器192.168.2.2正常。
其次,進行網絡配置。在防火墻中將內網地址192.168.2.2的5566端口與出口地址60.13.25.240的5566端口進行端口映射,開放60.13.25.240的5566端口。
以上配置完畢后,在互聯網中進行測試,遠程客戶端計算機卻無法連接FTP服務器。
如上所述,在安裝FTP服務器后,FTP在內網測試正常。但從互聯網中,用遠程客戶端無法連接FTP服務器。
重新檢查網絡配置和FTP網絡協議,我發現自己忽略了一個最簡單的問題。FTP是File Transfer Protocol(文件傳輸協議)的縮寫,用來在兩臺計算機之間互相傳送文件的協議。FTP協議要用到兩個TCP連接,一個是命令鏈路,默認使用21端口,用來在FTP客戶端與服務器之間傳遞命令;另一個是數據鏈路,默認使用20端口,用來上傳或下載數據。FTP工作時需要有2個端口,默認是21端口和20端口,分別做管理端口和數據傳送端口。因此要開通FTP應該在防火墻上放開2個端口。而之前出于安全考慮,只想開放盡量少的端口,而忽略了FTP協議的工作原理,只開放了用作管理端口的5566端口,沒有開放數據端口。因此考慮增加一個端口5565端口,用作數據傳送端口。
在防火墻上開放5565端口后,進行測試,遠程客戶端依然無法連接FTP服務器。為找到原因,臨時在防火墻上將60.13.25.240地址的端口全部放開。但遠程客戶端還是無法連接FTP服務器。由此可知,雖然已經找到了未開放數據傳送端口的問題,但還有問題沒有找到。
繼續學習FTP的原理了解到,相比內網沒有限制和要求的環境而言,在互聯網上的FTP服務要比之復雜得多。FTP協議有兩種工作方式:PORT方式和PASV方式,中文意思為主動方式和被動方式,所謂的主動、被動是相對于服務器而言。
PORT方式(主動方式)是客戶端與服務器建立一條命令鏈路后,由客戶端打開一個大于1024的隨機端口,并通知服務器。服務器與此端口連接,建立數據鏈路,傳送數據。
PASV方式(被動方式)是客戶端與服務器建立一條命令鏈路后,由服務器打開一個大于1024的隨機端口,并通知客戶端,客戶端與該端口連接,建立數據鏈路,傳送數據。
從上面的介紹可以看出,兩種方式的命令鏈路連接方法是一樣的,而數據鏈路的建立方法就完全不同。由此可知,在局域網內部搭建FTP服務器,由于網絡環境簡單,無所謂采用哪種方式。而在互聯網上的FTP服務,只能采用被動方式(PASV方式)。因為,如果采用主動方式(PORT方式),建立數據鏈路時客戶端將隨機打開一個大于1024端口的隨機端口,由于客戶端打開的數據端口是隨機端口,用戶側的網絡防火墻無法設置開放端口,除非全部開放。而采用被動方式,在服務器上FTP軟件可以設定開放端口范圍,服務器側的防火墻上可以指定開放。
由此找到了問題的所在。是筆者之前把FTP協議想簡單了,沒有考慮到FTP還有主動方式和被動方式之分。

圖2 配置PASV端口范圍

圖3 設置IP地址
根據上面分析的原因,在Server-U軟件中,在服務器“設置”的“高級”菜單中,配置PASV端口范圍,將端口范圍設置為“5565-5565”,也就是只開放5565這一個端口,作為數據端口(如圖2)。
并且在域“設置”的“高級”菜單中勾選“運行被動模式數據傳輸,使用IP”的復選框。并設置IP地址為“60.13.25.240”。此處填寫的IP地址就是公司出口IP地址(如圖3)。
做好這些配置后,經測試,遠程客戶端可以連接FTP服務器,并且登錄正常。FTP服務使用5566端口為管理端口,5565端口為數據鏈路端口。至此,FTP服務器搭建完成。并實現了最初的設定,使用非默認端口,在防火墻上只開放必要的、最少的端口的目標。
FTP的訪問有主動方式和被動方式之分,適用在不同的環境和條件。在互聯網中開放FTP,采用被動方式,雖然服務器主動打開隨機數據端口是有安全風險的,但這種方式下,可以設置開放數據端口的范圍,網絡防火墻可以進行端口開放設置,因此安全風險是可控的。而采用主動方式,雖然服務器不用開放隨機數據端口,服務器比較安全,但客戶端側的網絡防火墻不容易進行端口開放配置,因此無法采用。所以在互聯網環境中,FTP一般都是使用被動方式。
做完這項工作后,筆者深有感觸。在進行每一項新工作之前,應該對工作中所要用到的知識進行認真的學習和準備,才能高效、順利地完成各項工作。