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