FREEBSD6.0 架設(shè)FTP 服務(wù)器

FTP (File Transfer Protocol) 是常用的網(wǎng)絡(luò)協(xié)議,主要的功能是用來傳輸檔案,我們時常從 FTP 站臺下載檔案。本章將介紹如何使用 FreeBSD 架設(shè) FTP 服務(wù)器,并說明各種 FTP 服務(wù)器的管理技巧。本章除了 FreeBSD 內(nèi)附的 FTP 服務(wù)器軟件外,并將介紹筆者開發(fā)的 SmbFTPD。讀完本章后,您將進一步了解下列主題:
- FTP 協(xié)定的運作方法。
- 如何使用 FreeBSD FTP。
- 加強權(quán)限控制以建立安全的 FTP 服務(wù)器。
- 安裝設(shè)定 SmbFTPD。
- 如何使用具 SSL 加密的 FTP。
- 如何進行流量控制。
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)機:一個用來傳輸指令、一個用來傳輸檔案。
圖 15-1
當(dāng)我們使用 FTP 軟件連到 FTP 服務(wù)器時,客戶端會先連到服務(wù)器的連接埠 21,并建立一條「控制聯(lián)機」(Control Stream)。接下來,您會輸入賬號、密碼等指令,這些指令及 FTP 的響應(yīng)都是使用都是使用「控制聯(lián)機」。當(dāng)您要下載檔案時,或者是執(zhí)行 ls 以列出目錄中的檔案時,檔案或目錄列表的下載是經(jīng)另一個聯(lián)機「數(shù)據(jù)聯(lián)機」(Data Stream)?!笖?shù)據(jù)聯(lián)機」和「控制聯(lián)機」不同的是數(shù)據(jù)聯(lián)機所傳輸?shù)臄?shù)據(jù)比較大,而控制聯(lián)機只是用來傳輸指令及簡單的響應(yīng)。
基本上,一個完整的 FTP 聯(lián)機建立過程為:
- 客戶端打開自已機器大于 1024 的連接埠,并連到服務(wù)器的連接埠 21,建立「控制聯(lián)機」。
- 客戶端開始對服務(wù)器下指令,告訴服務(wù)器客戶端用來傳輸檔案的連接埠為何。
- 服務(wù)器從連接埠 20 連到客戶端所開放的埠號 (大于 1024),以建立「數(shù)據(jù)聯(lián)機」。
上述這種聯(lián)機建立的方式是由服務(wù)器主動建立「數(shù)據(jù)聯(lián)機」,我們稱之為「主動模式」(Active Mode)。基本上主動模式的運作在沒有防火墻或 NAT 的情形下沒有什么問題,但若客戶端有防火墻,則可能會無法建立聯(lián)機。
圖 15-2
因為「控制聯(lián)機」是由客戶端主動連到服務(wù)器,所以在客戶端有防火墻或 NAT 時,還是可以連到服務(wù)器。接下來在建立「數(shù)據(jù)聯(lián)機」時,客戶端會從「控制聯(lián)機」中告訴服務(wù)器它的 IP 及埠號,請服務(wù)器連過來。但是由于客戶端有防火墻,所以服務(wù)器要連到客戶端時會失敗,而無法建立聯(lián)機。
基本上,如果客戶端使用的是 FreeBSD 的 NAT 不會有這種問題,F(xiàn)reeBSD 會自動做轉(zhuǎn)換,但若是使用其它的防火墻就不一定可以支持 FTP 的 Active Mode。
何謂 Passive Mode
要解決 FTP Active Mode 的問題,可以在聯(lián)機時改用「被動模式」(Passive Mode)。所謂的被動模式就是由服務(wù)器打開一個連接埠,被動地等客戶端連過來建立「數(shù)據(jù)聯(lián)機」。被動模式的聯(lián)機建立過程為:
- 客戶端打開自已機器大于 1024 的連接埠,并連到服務(wù)器的連接埠 21,建立「控制聯(lián)機」。
- 客戶端開始對服務(wù)器下指令,告訴服務(wù)器進入「被動模式」。
- 服務(wù)器打開一個大于 1024 的連接埠,等待客戶端的聯(lián)機。
- 客伺端打開自已機器大于 1024 的連接埠,并連到服務(wù)器以建立「數(shù)據(jù)聯(lián)機」。
圖 15-3
由于控制聯(lián)機及數(shù)據(jù)聯(lián)機都是由客戶端主動連過去服務(wù)器,如此即可避開防火墻及 NAT 的問題。我們來看看如何判斷聯(lián)機失敗是否因為主動模式的原因:
# ftp ftp.freebsd.org Trying 204.152.184.73... Connected to ftp.freebsd.org (204.152.184.73). 220 Welcome to freebsd.isc.org. Name (ftp.freebsd.org:alex): anonymous 331 Please specify the password. Password: 230- 230-You have reached the freebsd.isc.org FTP server, serving the 230-full FreeBSD FTP archive over IPv4 (204.152.184.73) and IPv6 230-(2001:4f8:0:2::e) networks. This server is also known as: 230- 230- ftp.freebsd.org 230- ftp4.freebsd.org 230- ftp4.us.freebsd.org 230- 230-This server is operated by Internet Systems Consortium (ISC), 230-on behalf of the FreeBSD Project, with hardware donations from 230-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 ^C ftp> passive Passive mode on ftp> ls 227 Entering Passive Mode (204,152,184,73,54,200) 150 Here comes the directory listing. drwxrwxr-x 3 0 0 512 Apr 17 2003 pub 226 Directory send OK. ftp>
當(dāng)您登入一臺 FTP 服務(wù)器后,如果您輸入 ls,卻等了很久都沒有響應(yīng),您可以輸入 <Ctrl>+C 以中斷命令。接著輸入 passive 以進入被動模式,再打 ls 就可以看到目錄內(nèi)容,則無法聯(lián)機的問題一定是主動模式的原故。
15.2 設(shè)定 FTP 服務(wù)器
FreeBSD 內(nèi)建有 FTP 服務(wù)器的功能,如果您要使用內(nèi)建的 ftpd,我們不需要特別進行任何安裝的動作,只要做好設(shè)定即可。本小節(jié)中,我們將介紹如何設(shè)定啟動 FTP 服務(wù)器的功能,并進行一些基本的配置。
15.2.1 啟動 FTP 服務(wù)器
相關(guān)文章
Unix,BSD,Linux系統(tǒng)三者的區(qū)別小結(jié)
這篇文章主要介紹了Unix,BSD,Linux系統(tǒng)三者的區(qū)別小結(jié),需要的朋友可以參考下2023-05-03- 一些朋友問小編FreeBSD如何添加硬盤?別擔(dān)心,今天小編就為大家分享FreeBSD添加硬盤的方法,希望對大家會有幫助,有需要的朋友一起去看看吧2017-04-06
- 今天小編為大家?guī)淼氖荈reebsd PF 安裝使用詳解,希望對大家會有幫助,有需要的朋友一起去看看吧2017-04-06
FreeBSD下zfs: failed with error 6錯誤如何解決?
最近一些朋友問小編 FreeBSD下zfs: failed with error 6錯誤如何解決?今天小編要為大家?guī)淼氖?FreeBSD下zfs: failed with error 6錯誤的解決方法,有需要的朋友一起去看2017-04-06Unix文件系統(tǒng)和pwd命令實現(xiàn)詳解
今天小編要為大家?guī)淼氖荱nix文件系統(tǒng)和pwd命令實現(xiàn)詳解,希望對大家會有幫助,有需要的朋友一起去看看吧2017-04-01- 今天小編將為大家?guī)淼氖荱nix中的dot命令詳解!希望對大家會有幫助!有需要的朋友一起去看看吧2017-03-22
- 近日!一些朋友對于freebsd時間設(shè)置小節(jié)存在疑慮!下面小編將為大家?guī)淼氖莊reebsd時間設(shè)置小節(jié)詳解!希望對大家會有幫助!有需要的朋友一起去看看吧2017-03-19
- 今天小編要為大家?guī)淼氖莋rub2引導(dǎo)freebsd詳解!希望對大家會有幫助,有需要的朋友一起去看看吧2017-03-19
- 下面小編為大家?guī)淼氖荈reeBSD10安裝內(nèi)核源代碼方法講解!希望能夠幫助到大家!有需要的朋友一起去看看吧2017-03-19
FreeBSD下如何使GraphicsMagick支持中文字體?
最近一些朋友在問FreeBSD下如何使GraphicsMagick支持中文字體?今天小編為大家?guī)淼氖荈reeBSD下使GraphicsMagick支持中文字體的方法!有需要的朋友一起去看看吧2017-03-15