FTP (File Transfer Protocol) 是常用的網(wǎng)絡(luò)協(xié)議,主要的功能是用來傳輸檔案,我們時常從 FTP 站臺下載檔案。本章將介紹如何使用 FreeBSD 架設(shè) FTP 服務(wù)器,并說明各種 FTP 服務(wù)器的管理技巧。本章除了 FreeBSD 內(nèi)附的 FTP 服務(wù)器軟件外,并將介紹筆者開發(fā)的 SmbFTPD。讀完本章后,您將進(jìn)一步了解下列主題:
15.1 FTP 概論
FTP 是一個歷史悠久的網(wǎng)絡(luò)通訊協(xié)議,和大多數(shù)的網(wǎng)絡(luò)協(xié)議一樣,它采用 Client/Server 架構(gòu),各地的使用者可以經(jīng)由網(wǎng)絡(luò)連到服務(wù)器上傳或下載檔案。FTP 協(xié)議比較特別的地方在于它在使用時必須建立二個聯(lián)機(jī):一個用來傳輸指令、一個用來傳輸檔案。
圖 15-1

當(dāng)我們使用 FTP 軟件連到 FTP 服務(wù)器時,客戶端會先連到服務(wù)器的連接埠 21,并建立一條「控制聯(lián)機(jī)」(Control Stream)。接下來,您會輸入賬號、密碼等指令,這些指令及 FTP 的響應(yīng)都是使用都是使用「控制聯(lián)機(jī)」。當(dāng)您要下載檔案時,或者是執(zhí)行 ls 以列出目錄中的檔案時,檔案或目錄列表的下載是經(jīng)另一個聯(lián)機(jī)「數(shù)據(jù)聯(lián)機(jī)」(Data Stream)。「數(shù)據(jù)聯(lián)機(jī)」和「控制聯(lián)機(jī)」不同的是數(shù)據(jù)聯(lián)機(jī)所傳輸?shù)臄?shù)據(jù)比較大,而控制聯(lián)機(jī)只是用來傳輸指令及簡單的響應(yīng)。
基本上,一個完整的 FTP 聯(lián)機(jī)建立過程為:
上述這種聯(lián)機(jī)建立的方式是由服務(wù)器主動建立「數(shù)據(jù)聯(lián)機(jī)」,我們稱之為「主動模式」(Active Mode)?;旧现鲃幽J降倪\作在沒有防火墻或 NAT 的情形下沒有什么問題,但若客戶端有防火墻,則可能會無法建立聯(lián)機(jī)。
圖 15-2

因為「控制聯(lián)機(jī)」是由客戶端主動連到服務(wù)器,所以在客戶端有防火墻或 NAT 時,還是可以連到服務(wù)器。接下來在建立「數(shù)據(jù)聯(lián)機(jī)」時,客戶端會從「控制聯(lián)機(jī)」中告訴服務(wù)器它的 IP 及埠號,請服務(wù)器連過來。但是由于客戶端有防火墻,所以服務(wù)器要連到客戶端時會失敗,而無法建立聯(lián)機(jī)。
基本上,如果客戶端使用的是 FreeBSD 的 NAT 不會有這種問題,F(xiàn)reeBSD 會自動做轉(zhuǎn)換,但若是使用其它的防火墻就不一定可以支持 FTP 的 Active Mode。
何謂 Passive Mode
要解決 FTP Active Mode 的問題,可以在聯(lián)機(jī)時改用「被動模式」(Passive Mode)。所謂的被動模式就是由服務(wù)器打開一個連接埠,被動地等客戶端連過來建立「數(shù)據(jù)聯(lián)機(jī)」。被動模式的聯(lián)機(jī)建立過程為:
圖 15-3

由于控制聯(lián)機(jī)及數(shù)據(jù)聯(lián)機(jī)都是由客戶端主動連過去服務(wù)器,如此即可避開防火墻及 NAT 的問題。我們來看看如何判斷聯(lián)機(jī)失敗是否因為主動模式的原因:
# ftp ftp.freebsd.orgTrying 204.152.184.73...Connected to ftp.freebsd.org (204.152.184.73).220 Welcome to freebsd.isc.org.Name (ftp.freebsd.org:alex): anonymous331 Please specify the password.Password:230-230-You have reached the freebsd.isc.org FTP server, serving the230-full FreeBSD FTP archive over IPv4 (204.152.184.73) and IPv6230-(2001:4f8:0:2::e) networks. This server is also known as:230-230- ftp.freebsd.org230- ftp4.freebsd.org230- ftp4.us.freebsd.org230-230-This server is operated by Internet Systems Consortium (ISC),230-on behalf of the FreeBSD Project, with hardware donations from230-Apple, Intel and Iron Systems.230-230-Questions about this service can be sent to: freebsd@isc.org.230-230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> ls^Cftp> passivePassive mode onftp> ls227 Entering Passive Mode (204,152,184,73,54,200)150 Here comes the directory listing.drwxrwxr-x 3 0 0 512 Apr 17 2003 pub226 Directory send OK.ftp>
當(dāng)您登入一臺 FTP 服務(wù)器后,如果您輸入 ls,卻等了很久都沒有響應(yīng),您可以輸入 <Ctrl>+C 以中斷命令。接著輸入 passive 以進(jìn)入被動模式,再打 ls 就可以看到目錄內(nèi)容,則無法聯(lián)機(jī)的問題一定是主動模式的原故。
15.2 設(shè)定 FTP 服務(wù)器
FreeBSD 內(nèi)建有 FTP 服務(wù)器的功能,如果您要使用內(nèi)建的 ftpd,我們不需要特別進(jìn)行任何安裝的動作,只要做好設(shè)定即可。本小節(jié)中,我們將介紹如何設(shè)定啟動 FTP 服務(wù)器的功能,并進(jìn)行一些基本的配置。
15.2.1 啟動 FTP 服務(wù)器
新聞熱點
疑難解答