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

當(dāng)我們使用 FTP 軟件連到 FTP 服務(wù)器時(shí),客戶端會(huì)先連到服務(wù)器的連接埠 21,并建立一條「控制聯(lián)機(jī)」(Control Stream)。接下來(lái),您會(huì)輸入賬號(hào)、密碼等指令,這些指令及 FTP 的響應(yīng)都是使用都是使用「控制聯(lián)機(jī)」。當(dāng)您要下載檔案時(shí),或者是執(zhí)行 ls 以列出目錄中的檔案時(shí),檔案或目錄列表的下載是經(jīng)另一個(gè)聯(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ī)只是用來(lái)傳輸指令及簡(jiǎn)單的響應(yīng)。
基本上,一個(gè)完整的 FTP 聯(lián)機(jī)建立過(guò)程為:
- 客戶端打開(kāi)自已機(jī)器大于 1024 的連接埠,并連到服務(wù)器的連接埠 21,建立「控制聯(lián)機(jī)」。
- 客戶端開(kāi)始對(duì)服務(wù)器下指令,告訴服務(wù)器客戶端用來(lái)傳輸檔案的連接埠為何。
- 服務(wù)器從連接埠 20 連到客戶端所開(kāi)放的埠號(hào) (大于 1024),以建立「數(shù)據(jù)聯(lián)機(jī)」。
上述這種聯(lián)機(jī)建立的方式是由服務(wù)器主動(dòng)建立「數(shù)據(jù)聯(lián)機(jī)」,我們稱(chēng)之為「主動(dòng)模式」(Active Mode)?;旧现鲃?dòng)模式的運(yùn)作在沒(méi)有防火墻或 NAT 的情形下沒(méi)有什么問(wèn)題,但若客戶端有防火墻,則可能會(huì)無(wú)法建立聯(lián)機(jī)。
圖 15-2

因?yàn)椤缚刂坡?lián)機(jī)」是由客戶端主動(dòng)連到服務(wù)器,所以在客戶端有防火墻或 NAT 時(shí),還是可以連到服務(wù)器。接下來(lái)在建立「數(shù)據(jù)聯(lián)機(jī)」時(shí),客戶端會(huì)從「控制聯(lián)機(jī)」中告訴服務(wù)器它的 IP 及埠號(hào),請(qǐng)服務(wù)器連過(guò)來(lái)。但是由于客戶端有防火墻,所以服務(wù)器要連到客戶端時(shí)會(huì)失敗,而無(wú)法建立聯(lián)機(jī)。
基本上,如果客戶端使用的是 FreeBSD 的 NAT 不會(huì)有這種問(wèn)題,F(xiàn)reeBSD 會(huì)自動(dòng)做轉(zhuǎn)換,但若是使用其它的防火墻就不一定可以支持 FTP 的 Active Mode。
何謂 Passive Mode
要解決 FTP Active Mode 的問(wèn)題,可以在聯(lián)機(jī)時(shí)改用「被動(dòng)模式」(Passive Mode)。所謂的被動(dòng)模式就是由服務(wù)器打開(kāi)一個(gè)連接埠,被動(dòng)地等客戶端連過(guò)來(lái)建立「數(shù)據(jù)聯(lián)機(jī)」。被動(dòng)模式的聯(lián)機(jī)建立過(guò)程為:
- 客戶端打開(kāi)自已機(jī)器大于 1024 的連接埠,并連到服務(wù)器的連接埠 21,建立「控制聯(lián)機(jī)」。
- 客戶端開(kāi)始對(duì)服務(wù)器下指令,告訴服務(wù)器進(jìn)入「被動(dòng)模式」。
- 服務(wù)器打開(kāi)一個(gè)大于 1024 的連接埠,等待客戶端的聯(lián)機(jī)。
- 客伺端打開(kāi)自已機(jī)器大于 1024 的連接埠,并連到服務(wù)器以建立「數(shù)據(jù)聯(lián)機(jī)」。
圖 15-3

由于控制聯(lián)機(jī)及數(shù)據(jù)聯(lián)機(jī)都是由客戶端主動(dòng)連過(guò)去服務(wù)器,如此即可避開(kāi)防火墻及 NAT 的問(wèn)題。我們來(lái)看看如何判斷聯(lián)機(jī)失敗是否因?yàn)橹鲃?dòng)模式的原因:
# 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)您登入一臺(tái) FTP 服務(wù)器后,如果您輸入 ls,卻等了很久都沒(méi)有響應(yīng),您可以輸入 <Ctrl>+C 以中斷命令。接著輸入 passive 以進(jìn)入被動(dòng)模式,再打 ls 就可以看到目錄內(nèi)容,則無(wú)法聯(lián)機(jī)的問(wèn)題一定是主動(dòng)模式的原故。
15.2 設(shè)定 FTP 服務(wù)器
FreeBSD 內(nèi)建有 FTP 服務(wù)器的功能,如果您要使用內(nèi)建的 ftpd,我們不需要特別進(jìn)行任何安裝的動(dòng)作,只要做好設(shè)定即可。本小節(jié)中,我們將介紹如何設(shè)定啟動(dòng) FTP 服務(wù)器的功能,并進(jìn)行一些基本的配置。
15.2.1 啟動(dòng) FTP 服務(wù)器
相關(guān)文章
Unix,BSD,Linux系統(tǒng)三者的區(qū)別小結(jié)
這篇文章主要介紹了Unix,BSD,Linux系統(tǒng)三者的區(qū)別小結(jié),需要的朋友可以參考下2023-05-03
FreeBSD如何添加硬盤(pán)?FreeBSD添加硬盤(pán)的方法
一些朋友問(wèn)小編FreeBSD如何添加硬盤(pán)?別擔(dān)心,今天小編就為大家分享FreeBSD添加硬盤(pán)的方法,希望對(duì)大家會(huì)有幫助,有需要的朋友一起去看看吧2017-04-06- 今天小編為大家?guī)?lái)的是Freebsd PF 安裝使用詳解,希望對(duì)大家會(huì)有幫助,有需要的朋友一起去看看吧2017-04-06
FreeBSD下zfs: failed with error 6錯(cuò)誤如何解決?
最近一些朋友問(wèn)小編 FreeBSD下zfs: failed with error 6錯(cuò)誤如何解決?今天小編要為大家?guī)?lái)的是 FreeBSD下zfs: failed with error 6錯(cuò)誤的解決方法,有需要的朋友一起去看2017-04-06Unix文件系統(tǒng)和pwd命令實(shí)現(xiàn)詳解
今天小編要為大家?guī)?lái)的是Unix文件系統(tǒng)和pwd命令實(shí)現(xiàn)詳解,希望對(duì)大家會(huì)有幫助,有需要的朋友一起去看看吧2017-04-01- 今天小編將為大家?guī)?lái)的是Unix中的dot命令詳解!希望對(duì)大家會(huì)有幫助!有需要的朋友一起去看看吧2017-03-22
freebsd時(shí)間設(shè)置小節(jié)詳解
近日!一些朋友對(duì)于freebsd時(shí)間設(shè)置小節(jié)存在疑慮!下面小編將為大家?guī)?lái)的是freebsd時(shí)間設(shè)置小節(jié)詳解!希望對(duì)大家會(huì)有幫助!有需要的朋友一起去看看吧2017-03-19- 今天小編要為大家?guī)?lái)的是grub2引導(dǎo)freebsd詳解!希望對(duì)大家會(huì)有幫助,有需要的朋友一起去看看吧2017-03-19
- 下面小編為大家?guī)?lái)的是FreeBSD10安裝內(nèi)核源代碼方法講解!希望能夠幫助到大家!有需要的朋友一起去看看吧2017-03-19
FreeBSD下如何使GraphicsMagick支持中文字體?
最近一些朋友在問(wèn)FreeBSD下如何使GraphicsMagick支持中文字體?今天小編為大家?guī)?lái)的是FreeBSD下使GraphicsMagick支持中文字體的方法!有需要的朋友一起去看看吧2017-03-15


