手把手教你在Linux上搭建BitTorrent服務(wù)器
網(wǎng)絡(luò)技術(shù)的飛速發(fā)展與迅速普及使其成為數(shù)據(jù)通信的重要手段,網(wǎng)絡(luò)規(guī)模越來越大,連入網(wǎng)絡(luò)中的計算設(shè)備的數(shù)量和種類也越來越多,而這些資源并沒有得到充分利用,如果能將這些計算單元的處理器計算能力、磁盤存儲能力、網(wǎng)絡(luò)帶寬資源等進行充分利用將會有效緩解目前互聯(lián)網(wǎng)所面臨的一些問題。另一方面,現(xiàn)在的互聯(lián)網(wǎng)是構(gòu)建在這樣的一個假說上的,即網(wǎng)絡(luò)用戶僅僅想從互聯(lián)網(wǎng)上下載東西,而不會上載信息。如今這種假設(shè)受到了愈來愈強烈的挑戰(zhàn),也促使了對等網(wǎng)絡(luò)技術(shù)蓬勃興起。
P2P(Peer to Peer 即對等網(wǎng)絡(luò))就是在這種背景下提出的一種網(wǎng)絡(luò)技術(shù),P2P可以簡單地定義為通過直接交換信息,共享計算機資源和服務(wù),對等計算機兼有客戶機和服務(wù)器的功能。在這種網(wǎng)絡(luò)中所有的節(jié)點是對等的(稱為對等點),各節(jié)點具有相同的責任與能力并協(xié)同完成任務(wù),對等點之間通過直接互連實現(xiàn)信息資源、處理器資源、存儲資源甚至高速緩存資源等的全面共享,無需依賴集中式服務(wù)器支持,消除信息孤島和資源孤島。任何一臺能上網(wǎng)的機器都可以是一個對等點,甚至計算機上的一個程序都可以成為對等點。P2P網(wǎng)絡(luò)是一種與傳統(tǒng)的C/S或多層服務(wù)器網(wǎng)絡(luò)完全不同的網(wǎng)絡(luò)體系結(jié)構(gòu),P2P網(wǎng)絡(luò)中的對等點是彼此直接通訊的。與目前互連網(wǎng)上比較流行的C/S 計算模型不同的是:P2P 計算模型中不再區(qū)別服務(wù)器以及客戶端,系統(tǒng)中的各個節(jié)點是邏輯對等的,系統(tǒng)中的各個節(jié)點之間可以直接進行數(shù)據(jù)通信而不需要通過中間的服務(wù)器,可以認為它的任何一端同時具有Client和Server 的功能。一些P2P應(yīng)用也許在某些時候使用服務(wù)器,但P2P計算的總體影響是將網(wǎng)絡(luò)計算分散,它使真正的分布式計算成為可能。
隨著寬帶網(wǎng)的盛行,傳統(tǒng)的HTTP和FTP這種一點對多點的下載方式已經(jīng)滿足不了大家的需求了。它會隨著下載人數(shù)增加而出現(xiàn)連接不上和速度驟減的現(xiàn)象。而P2P技術(shù)則打破常規(guī)格式,極大地節(jié)省了網(wǎng)絡(luò)帶寬。可使你直接連接其他用戶的計算機,交換和搜索文件,而不用再通過網(wǎng)頁瀏覽與下載,***限度地利用了網(wǎng)絡(luò)帶寬。它可使大家在互聯(lián)網(wǎng)上共享到平時用普通方式難以接觸到的各種各樣海量的資源。使用P2P軟件的每一臺PC 都是客戶機在下載資源,也是服務(wù)器在上傳文件,在索取的同時也給予。
BitTorrent是一個多點下載的開放源碼的P2P軟件,使用非常方便。是一個多點下載的共享文件軟件,由于在下載的同時,也可為其他用戶提供上傳,所以不會隨著用戶人數(shù)的增加而降低下載速度,因此,下載的人越多,速度便越快?,F(xiàn)在不少大公司如RedHat,都有使用BT讓他們的客戶下載開發(fā)版本。
Linux下的P2P協(xié)議主要包括:BitTorrent、aMule、Gnutella等。本文以普遍使用的BitTorrent為例介紹使用P2P服務(wù)的方法。
1、搭建BitTorrent服務(wù)器
BitTorrent使用Python語言編寫,是一個開放源代碼軟件,既可以在Windows下運行,也可以在Linux環(huán)境下運行,目前在Linux下的***版本是6.1.2。
BitTorrent的官方網(wǎng)址:http://bitconjurer.org/BitTorrent/
安裝BitTorrent軟件
由于該軟件采用Python編寫,所以安裝BitTorrent前需要使用命令:
#rpm -qa|grep Python
檢查是否配置了Python語言。否則需要到Python的官方網(wǎng)站http://www.python.org下載安裝,然后執(zhí)行如下命令對BitTorrent軟件進行安裝:
#rpm -ivh BitTorrent-6.1.2.Python2.4.noarch.rpm
安裝完成后所有BitTorrent命令和工具都安裝在/usr/bin目錄下。包括:btmaketorrent.py(制作種子工具)、bttest.py(測試種子工具)、bttrack.py(制作Tracker工具)、btdownloadheadless.py(制作共享源工具)、btlaunchmany.py(后臺啟動共享源工具)、btshowmetainfo.py(查看下載情況工具)、btdownloadgui.py(圖形化制作共享源工具)、btmaketorrent.py(圖形化制作種子工具)。
配置和啟動BitTorrent
BitTorrent的核心是Tracker,BitTorrent服務(wù)不需要服務(wù)器,但是BitTorrent服務(wù)中仍然有服務(wù)器的概念,這里稱作Tracker。準確地說,Tracker是指運行的服務(wù)器上的一個程序,這個程序可以跟蹤多少人同時在下載同一個文件。BT客戶端連接到Tracker時會產(chǎn)生一個下載人員名單,根據(jù)這個名單,BT客戶端會自動連接網(wǎng)絡(luò)中其他節(jié)點進行下載。所以***步要啟動一個Tracker:
# ./bttrack.py --port 8760 --dfile dstate > /dev/null 2>&1 &
推薦使用普通用戶權(quán)限來啟動這個服務(wù),這樣更加安全。這個命令會在當前目錄生成一個dstate的文件,并打開8760端口。
制作種子(Seed)
BT服務(wù)器的track服務(wù)并不提供下載服務(wù),提供下載的是它的種子(seed),就是一個已經(jīng)下載完成或正在下載的客戶端。因為一開始沒有這樣的種子,所以你得先自己生成一個,如果要為/home/cjh.avi制作種子,相關(guān)命令是:
# ./btdownloadheadless.py --max_allow_in 200 --max_upload_rate 100 --minport 8888 --maxport 8888 /home/mp3.vio.torrent http://www.bittorrent.com:8760/annouce
相關(guān)參數(shù)說明如下:
- --max_allow 200:指明這個種子最多可以接受200個連接。
- --max_upload_rate 100:指這個種子***的可以接受下載的帶寬100 KB(byte)/s,這樣可以控制下載帶寬。
- --minport 8888 --maxport 8888:設(shè)置***最小監(jiān)聽端口號碼,這樣寫就是說種子只監(jiān)聽8888端口,這樣方便在防火墻上開端口。
- mp3.vio.torrent:是制作的種子文件名稱。
設(shè)置Apache服務(wù)器
配置Web服務(wù)器讓種子(.torrent)文件和application/x-bittorrent相關(guān)聯(lián)。不久Apache配置文件:/etc/httpd.conf,加入一行:
AddType application/x-bittorrent .torrent
然后,我們需要重新啟動Web服務(wù)器,并且打開防火墻6888端口:
將制作的種子放到Web服務(wù)器的文檔目錄中,讓用戶可以訪問,啟動一個最原始的共享源。
#iptables -A INPUT -i eth0 -p --dport 6888 -j ACCEPT #iptables -A OUTPUT -i eth0 -p --dport 6888 -j ACCEPT #./btdownloadheadless.py http://www.mydomain.com/cjh.avi.torrent
其中http://www.mydomain.com/cjh.avi.torrent是種子的URL地址,這樣用戶通過瀏覽器訪問 cjh.avi.torrent即可實現(xiàn)Web下載。
#p#
2、配置BitTorrent客戶端
到此為止,我們建立了一個BitTorrent服務(wù)器,如果要下載別人的BT資源,還要安裝一個客戶端。
1.使用Azureus(Vuze)軟件
(1)下載一個Bit Torrent客戶端軟件:Azureus,其官方網(wǎng)址為:http://azureus.sourceforge.net/。
(2)安裝Java虛擬機
由于Azureus是使用Java語言編寫的,所以運行它需要Java虛擬機。下載***的JDK(Java Development Kit)開發(fā)包:j2sdk-1_4_2-linux-i586.bin,這是一個J2SE V1.4.2 SDK Linux自解壓的二進制的文件。
(3)安裝BitTorrent客戶端軟件Azureus
這是一個綠色軟件只要解壓即可運行不必編譯,操作如下:
#bunzip2 Azureus_4.5.1.0_linux.GTK.tar.bz2 #tar vxf Azureus_4.5.1.0_linux.GTK.tar
(4)運行軟件
#cd azureus #./azureus
(5)配置軟件
***次運行azureus時要進行簡單的配置:
◆配置接入互聯(lián)網(wǎng)的方式:根據(jù)你的具體情況設(shè)置鏈接互聯(lián)網(wǎng)方式(ADSL、Modem等),***上傳速度、***下載文件、每個Torrent***上傳速度。然后用鼠標按“Next”按鈕進行服務(wù)器端口配置。
◆配置NAT/Server 的端口:使用NAT(Network Address Translation)的好處是:連接Internet,但不讓網(wǎng)絡(luò)內(nèi)的所有計算機都擁有一個真正的Internet IP地址。通過NAT功能,可以將申請的合法的Internet IP地址統(tǒng)一管理,當內(nèi)部的計算機需要上Internet時,動態(tài)或靜態(tài)地將假的IP轉(zhuǎn)換為合法的IP地址。另外,如果不想讓外部網(wǎng)絡(luò)用戶知道網(wǎng)絡(luò)的內(nèi)部結(jié)構(gòu),可以通過NAT將內(nèi)部網(wǎng)絡(luò)與外部Internet隔離開。這里強烈建議把NAT/Server 的端口設(shè)為:***6881、***6889。如果讀者對計算機網(wǎng)絡(luò)比較熟悉的話,也可以用鼠標點擊“Test”按鈕測試一下,選擇別的端口。注意千萬不要和某些系統(tǒng)已經(jīng)使用的端口沖突。然后用鼠標點“Next”按鈕進行下載的文件存放目錄的配置。
配置結(jié)束后就可以使用它下載,點擊“File”主菜單的“Creat a Torrent”然后輸入要下載的Torrent文件的鏈接即可開始工作。
2.使用命令行CTorrent軟件
CTorrent是國人用C/C++實現(xiàn)的一個小型的BitTorren的CUI客戶端,它對希望了解BitTorrent網(wǎng)絡(luò)的朋友們提供了一個很好的模板。程序只有5000多行,使用了openssl/sha庫。它主要實現(xiàn)了下列功能:
- 高速緩沖,缺省大小cfg_cache_size(btconfig.cpp)
- 帶寬限制
- 解析Bencoding編碼,可以用'-x'選項查看.torrent文件信息而不下載
- 快速緩沖,使用'-b'選項
- 制造.torrent文件
下載地址:http://www.rahul.net/dholmes/ctorrent/ctorrent-dnh3.3.2.tar.gz
下載后,我們可以使用如下命令對其進行安裝:
#tar zxvf ctorrent-dnh3.3.2.tar.gz #cd ctorrent-dnh3.3.2 #./configure #make #make install
安裝完成后,使用下述命令對其運行即可,具體的命令行使用參數(shù)本文不再贅述,讀者可自行了解使用:
#ctorrent 1.torrent
#p#
3、其他軟件
除了上面介紹的BitTorrent之外,aMule是一種支持ED2K網(wǎng)絡(luò)的P2P軟件,它基于wxWindows并且類似于eMule。是在遵循E-Donkey的網(wǎng)絡(luò)協(xié)議基礎(chǔ)上發(fā)展而來,它相當于e-Donkey(驢子)的一個Mod,而且源代碼是完全公開的。而且aMule比e-Donkey配置更為簡單,界面、圖標和按鈕更美觀,突出了其立體和半透明的感覺?,F(xiàn)在大家?guī)缀醵嫁D(zhuǎn)向用e-Mule。aMule軟件可以算是Linux網(wǎng)絡(luò)環(huán)境下的e-Mule。
aMule的每個用戶端都既是文件下載者又是上傳者,既索取又給予。在你正在下載但還沒下載完整文件時,你已經(jīng)把已下載的部分共享給別人了。aMule是同時從很多文件上傳者(稱之為“源”,跟BT的種子差不多)那里下載所需的文件***再拼成整個文件的,而且aMule對沒在下載隊列中的文件共享很方便,不用像BT 那樣要很麻煩地制作種子,再上傳到服務(wù)器,只需指定一個共享目錄,aMule會自動將其共享。這個共享目錄在運行aMule就開始強制共享,即使在下載欄未下載任何文件。這點比BT做得好,可以防止大家好逸惡勞,只下載不上傳。而BT在運行時只上傳自己正在下載或已下載完畢的東西,不能共享目錄,甚至有人把BT的下載設(shè)置為無限制,而把上傳調(diào)至幾KB/s甚至0KB/S。而在使用aMule中如果你把上傳速度設(shè)為一個小于10 的值,aMule也會自動限制你的下載速度。
aMule安裝相當困難,它對一些鏈接庫文件的依賴性特別強,另外它還需要GTK的支持。軟件下載安裝詳細步驟如下:
#cd /usr/local #wget http://jaist.dl.sourceforge.net/sourceforge/wxwindows/wxGTK-2.6.1.tar.gz #wget http://jaist.dl.sourceforge.net/sourceforge/wxwindows/wxBase-2.6.1.tar.gz #wget http://jaist.dl.sourceforge.net/sourceforge/amule/aMule-2.1.0.tar.bz2
需要特別注意安裝順序:先裝wxBase再裝wxGTK,***裝aMule,安裝wxBase后要執(zhí)行一下ldconfig命令,wxGTK編譯參數(shù)為./configure --with-gtk:
#cd wxBase-2.6.1;./configure;make;make install; /sbin/ldconfig;cd .. #cd wxGTK-2.6.1;./configure --with-gtk;make;make install;make clean;cd .. #cd aMule-2.1.0;./configure;make;make install
如果aMule的下載速度太慢,比如只有2KB/s~3KB/s,那一定是沒有端口映射。只需映射4662 TCP 和4672 UDP 兩個端口即可。不需要像使用BT那樣映射一堆端口。如果打開了4771 TCP 端口就可遠程控制。aMule下載跟Azureus不一樣,要多添加些文件下載。如果系統(tǒng)裝有Linux防火墻,需要在防火墻中打開以上相應(yīng)的TCP、UDP端口。
另外,如果你正在尋找Linux下功能全面的GTK+ BitTorrent下載軟件,那么Deluge是一個不錯的選擇。Deluge的開發(fā)非?;钴S,時常更新以滿足用戶的需要。經(jīng)過近一個月的開發(fā),Deluge于日前發(fā)布了1.3.0版。新版本為一些常用功能綁定了快捷鍵,引入了內(nèi)置瀏覽器,并對某些插件進行了增強。
4、需要注意的問題
上面我們詳細介紹了BitTorrent服務(wù)器和客戶機的配置,以及一些實用的P2P軟件。從本質(zhì)上來說,P2P軟件是為資源共享服務(wù)的,然而,他有一個比較大的特點就是在資源共享同時帶來比較高的資源消耗,P2P下載軟件對于網(wǎng)絡(luò)的負面影響還是非常大的,然而它卻是資源共享的一個非常有效的方式。那么,在此,我們給出幾條合理使用P2P軟件的建議,僅供參考使用:
- 保護主機和網(wǎng)絡(luò)資源,控制上傳和下載速率:實踐證明,合理地設(shè)置P2P軟件的上傳和下載速率,可以有效地提高資源共享率,同時最重要的是能夠使得自己的主機和網(wǎng)絡(luò)資源不致于因為P2P的使用而受到影響甚至阻塞;
- 合理分配使用時間:對于企業(yè)用戶來說,合理地分配時間是非常必要的。用戶應(yīng)當選擇在上班之間之外的時間進行下載和共享,以防止由于眾多使用者而導致的網(wǎng)路速度變慢影響正常的工作,這個是非常重要的。
- 注意資源的安全性:目前,發(fā)現(xiàn)有很多共享資源中存在病毒,尤其對于P2P這種傳播速度極快的應(yīng)用來說,病毒的傳播速度是非??斓?,所以建議各位用戶在文件下載后首先通過病毒掃描軟件進行安全掃描后方能進行正常使用,以避免由于病毒影響而帶來的損失。
去作者的博客交流:http://patterson.blog.51cto.com
【編輯推薦】