歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> Unix教程

FREEBSD6.0 架設FTP 服務器

FreeBSD

FTP (File Transfer Protocol) 是常用的網絡協議,主要的功能是用來傳輸檔案,我們時常從 FTP 站台下載檔案。本章將介紹如何使用 FreeBSD 架設 FTP 服務器,並說明各種 FTP 服務器的管理技巧。本章除了 FreeBSD 內附的 FTP 服務器軟件外,並將介紹筆者開發的 SmbFTPD。讀完本章後,您將進一步了解下列主題:

  • FTP 協定的運作方法。
  • 如何使用 FreeBSD FTP。
  • 加強權限控制以建立安全的 FTP 服務器。
  • 安裝設定 SmbFTPD。
  • 如何使用具 SSL 加密的 FTP。
  • 如何進行流量控制。

15.1 FTP 概論

FTP 是一個歷史悠久的網絡通訊協議,和大多數的網絡協議一樣,它采用 Client/Server 架構,各地的使用者可以經由網絡連到服務器上傳或下載檔案。FTP 協議比較特別的地方在於它在使用時必須建立二個聯機:一個用來傳輸指令、一個用來傳輸檔案。

圖 15-1

當我們使用 FTP 軟件連到 FTP 服務器時,客戶端會先連到服務器的連接埠 21,並建立一條「控制聯機」(Control Stream)。接下來,您會輸入賬號、密碼等指令,這些指令及 FTP 的響應都是使用都是使用「控制聯機」。當您要下載檔案時,或者是執行 ls 以列出目錄中的檔案時,檔案或目錄列表的下載是經另一個聯機「數據聯機」(Data Stream)。「數據聯機」和「控制聯機」不同的是數據聯機所傳輸的數據比較大,而控制聯機只是用來傳輸指令及簡單的響應。

基本上,一個完整的 FTP 聯機建立過程為:

  • 客戶端打開自已機器大於 1024 的連接埠,並連到服務器的連接埠 21,建立「控制聯機」。
  • 客戶端開始對服務器下指令,告訴服務器客戶端用來傳輸檔案的連接埠為何。
  • 服務器從連接埠 20 連到客戶端所開放的埠號 (大於 1024),以建立「數據聯機」。

上述這種聯機建立的方式是由服務器主動建立「數據聯機」,我們稱之為「主動模式」(Active Mode)。基本上主動模式的運作在沒有防火牆或 NAT 的情形下沒有什麼問題,但若客戶端有防火牆,則可能會無法建立聯機。

圖 15-2

因為「控制聯機」是由客戶端主動連到服務器,所以在客戶端有防火牆或 NAT 時,還是可以連到服務器。接下來在建立「數據聯機」時,客戶端會從「控制聯機」中告訴服務器它的 IP 及埠號,請服務器連過來。但是由於客戶端有防火牆,所以服務器要連到客戶端時會失敗,而無法建立聯機。

基本上,如果客戶端使用的是 FreeBSD 的 NAT 不會有這種問題,FreeBSD 會自動做轉換,但若是使用其它的防火牆就不一定可以支持 FTP 的 Active Mode。

何謂 Passive Mode

要解決 FTP Active Mode 的問題,可以在聯機時改用「被動模式」(Passive Mode)。所謂的被動模式就是由服務器打開一個連接埠,被動地等客戶端連過來建立「數據聯機」。被動模式的聯機建立過程為:

  • 客戶端打開自已機器大於 1024 的連接埠,並連到服務器的連接埠 21,建立「控制聯機」。
  • 客戶端開始對服務器下指令,告訴服務器進入「被動模式」。
  • 服務器打開一個大於 1024 的連接埠,等待客戶端的聯機。
  • 客伺端打開自已機器大於 1024 的連接埠,並連到服務器以建立「數據聯機」。

圖 15-3

 

由於控制聯機及數據聯機都是由客戶端主動連過去服務器,如此即可避開防火牆及 NAT 的問題。我們來看看如何判斷聯機失敗是否因為主動模式的原因:

#
		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: [email protected].
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>

當您登入一台 FTP 服務器後,如果您輸入 ls,卻等了很久都沒有響應,您可以輸入 <Ctrl>+C 以中斷命令。接著輸入 passive 以進入被動模式,再打 ls 就可以看到目錄內容,則無法聯機的問題一定是主動模式的原故。

15.2 設定 FTP 服務器

FreeBSD 內建有 FTP 服務器的功能,如果您要使用內建的 ftpd,我們不需要特別進行任何安裝的動作,只要做好設定即可。本小節中,我們將介紹如何設定啟動 FTP 服務器的功能,並進行一些基本的配置。

15.2.1 啟動 FTP 服務器

Copyright © Linux教程網 All Rights Reserved