MLDonkey 是一個相當好用的 P2P 工具,可以架設成伺服器,提供遠端控制下載的服務,還有內建的文字和網頁操作介面,隨時在任何地方連進來,都可以要求這個服務幫你做 P2P 的下載。而且一套工具,不但支援 eDonkey (& emule)、標準 HTTP 和 FTP 下載,甚至連 BT 也可以整合在一起,算是支援最廣、最方便,而且又相當強大的下載工具(可以參考各種檔案分享工具比較)。要安裝 MLDonkey,記得先更新 Package List,然後直接安裝:
apt-get update
apt-get install mldonkey-server
安裝過程中可以將 MLDonkey 設定為開機啟動(執行身分為新增的使用者 mldonkey、屬於 mldonkey 這個群組)、預設程式目錄為 /var/lib/mldonkey,安裝過程也會要你設定上下傳頻寬限制(之後可以再改,可以都用預設值),裝完也會詢問是否要直接啟動。可以先啟動看看有沒有安裝錯誤,順利起來沒錯誤的話,因為要進行設定檔的修改,所以要停掉剛執行 MLDonkey Server (mlnet) :
/etc/init.d/mldonkey-server stop
由於如果 MLDonkey 在執行中,停止後會寫入設定檔 (/var/lib/mldonkey/downloads.ini),因此如果要更改設定檔,切記 MLDonkey 已經停止,不然中途改的設定都會在 MLDonkey 停止時被還原蓋掉。MLDonkey 所有組態檔包括 /etc/init.d/mldonkey-server (啟動指令檔)、/etc/default/mldonkey-server (啟動參數檔) 和 /var/lib/mldonkey (組態檔路徑),在組態路徑下還有預設的暫存 (temp/) 和下載分享 (incoming/) 路徑,MLDonkey 開始下載後這兩個目錄下面就有會有檔案了,如果你不打算把下載和暫存的東西放在像是 /var/lib/mldonkey/temp, /var/lib/mldonkey/incoming 下面,也要一併去修改設定檔。接下來在服務啟動前,我們來進行設定檔的修改:
nano /var/lib/mldonkey/downloads.ini
我修改的地方大致如下(請找檔案中符合名稱的變數來修改):
...
allowed_ips = [
"127.0.0.1";
"192.168.1.0-192.168.1.255";]
...
max_hard_upload_rate = 100
max_hard_download_rate = 0
...
temp_directory = "/tmp/mldonkey"
...
create_file_mode = 664
create_dir_mode = 775
...
shared_directories = [
{
dirname = "/home/ftp/P2P"
strategy = incoming_files
priority = 0
};
{
dirname = "/home/ftp/P2P"
strategy = incoming_directories
priority = 0
};]
第一行最重要,是用來限制能夠連進 MLDonkey 伺服器的 IP 位址,預設是 127.0.0.1(只有本機可以連),後面補的那一行 192.168.1.0-192.168.1.255 代表的是在 192.168.1.* 同一個網段內的機器都可以連得進去(也可以用 192.168.1.0/24),為了安全起見,請依照自己的需求去更改。接下來兩行是限制最大上傳和下載的流量(單位 KB,安裝時也有設過)。再來是下載時暫存檔的位置(預設是 temp,代表的是 /var/lib/mldonkey/temp,請改成自己想放暫存檔的地方,範例改到 /tmp/mldonkey 去),以及檔案和目錄下載後預設的檔案存取權限(644 & 755 的意思是,該檔案目錄的擁有者 mldonkey 和同一個群組的使用者,都擁有完整讀寫刪除的權限)。最後一段,顧名思義是設定你下載的檔案和目錄放置位置 (incoming_files, incoming_directories),如果有其他目錄願意開放分享給別人搜尋和下載,可以再加一筆記錄(在右中括號 ']' 號之前,放在 {}; 裡面),把 strategy 設成 all_files 就可以了。改完設定後存檔,設定檔的部分就完成了。啟動伺服器之前,要確定上述的目錄都建立了(/tmp/mldonkey, /home/ftp/P2P)、權限都設定正確,不然實際讀寫可能會有問題。
我的規劃是,所有能分享的資料都在 /home/ftp 下面,包含網路芳鄰 Samba、FTP,而為了這些服務都能夠相互支援(建檔、殺檔),所以這些服務所需要的工作帳號都屬於同一個群組 (users),只要把目錄和檔案建立的權限都改成 755 & 664,這樣的話 MLDonkey 下載的檔案,完成後放到 /home/ftp/P2P 目錄,透過網路芳鄰存取或 FTP 登入也可以搬移砍檔。一開始提到安裝 MLDonkey 時如果設做開機啟動,服務會自動建立一個虛擬使用者 mldonkey(不能實際登入使用),它屬於 mldonkey 這個 Group,因此會發現後來下載的檔案和目錄權限都是屬個這個使用者和群組。我們要做的修改很簡單,就是把 mldonkey 這個使用者指定到 users 群組:
usermod -g users mldonkey
並且手動建立上述需要用的目錄、把權限都改成 mldonkey 這個使用者、群組改成 users:
mkdir /tmp/mldonkey
mkdir /home/ftp/P2P
chown -R mldonkey /tmp/mldonkey
chgrp -R users /tmp/mldonkey
chown -R mldonkey /home/ftp/P2P
chgrp -R users /home/ftp/P2P
chgrp -R users /var/lib/mldonkey
這樣我們就可以確定,MLDonkey 下載暫存和分享的檔案會在我們設定的路徑下,而檔案權限和其他服務也可以一併共用,未來系統裡面的某個檔案,也可以透過 Owner 知道是怎麼來的。還有一個地方被寫死要改的:
nano /etc/default/mldonkey-server
這裡的群組要改成 users、檔案權限要從 0022 改成 0002 才可以:
MLDONKEY_USER=mldonkey
MLDONKEY_GROUP=users
MLDONKEY_UMASK=0002
設定都完成,就可以啟動 MLDonkey Server 了(服務模式啟動):
/etc/init.d/mldonkey-server start
服務啟動正常的話,就可以連進伺服器測試看看。可以用 Telnet 連進去 (telnet 機器IP位址 4000),或是用瀏覽器連網頁操作介面 (http://機器IP位址:4080)。如果兩個都連不進去,有可能是服務沒跑起來(ps -aux | grep mlnet 沒紀錄),可以用執行檔模式來跑跑看,有沒有錯誤訊息:
/usr/bin/mlnet
這是前景模式的執行方法,啟動有錯誤的話訊息都會顯示在螢幕上。如果不是設定的問題,通常啟動失敗、都是因為一些暫存檔沒被砍掉導致,砍光再試試看:
rm -f /var/lib/mldonkey/*.tmp
如果前景模式跑得起來,那麼服務模式應該也沒問題,可以用 Ctrl+C 中斷前景模式,重新用服務模式啟動就行了!上面提到 download.ini 裡面的設定,其實也可以透過 Telnet 進去的文字介面或是瀏覽器連進去的網頁介面來做,所以改 download.ini 設定檔算是伺服器沒啟動時的改法,一旦伺服器啟動,用服務啟動後提供的介面來調整,也可以即時變更和儲存。另外,除了預設提供的這兩個介面,還有很多其他搭配的 Client 程式(不過要另外安裝),詳細的說明和工具可以參考這裡。
我碰到的這個版本預設管理者帳號是 admin,但沒有密碼,所以不管怎麼登入都不會問帳號密碼(如果安裝過程有問,就可以用命令 dpkg-reconfigure mldonkey-server 來重設)、預設就用 admin 登入,為了登入安全,建議還是要設定一下密碼。設定密碼建議用 telnet 比較簡單,直接 telnet localhost 4000 登入服務,進去後敲命令 whoami 會顯示你登入的帳號是誰(如果有設定密碼,會秀 'Command not authorized'),如果跑出預設帳號 admin,可以下命令 'passwd 密碼' 來設定密碼,只要密碼被設定起來,不管怎麼登入要使用就會被問密碼了。
最後說明一下 MLDonkey 的用法。如果是用網頁介面,一連進去會要求你填登入帳號和密碼。登入後畫面相當簡單,左上有幾個按鈕,右上則是讓你輸入 MLDonkey 指令的命令列。如果要開始下載,只要去複製 P2P 的下載網址(eDonkey - ed2k://files,BT - http://xxx//files.torrent,或是標準的 http:// 或 ftp://),貼進命令列,在前面加個 dllink 的下載命令 (Download Link 的意思),壓下 Input 按鈕就完成了,如果有大批網址,也可以先用用 DL 按鈕叫出介面、通通剪貼進去批次下載。下面貼幾個官網示範的命令範例(如果是 ed2k:// 開頭的下載網址,dllink 命令其實可以省略):
dllink ed2k://|file|SuSE_V8.1_CD1.iso|648416|250C684D459|/
dllink http://www.open-bits.org/download.php/Openoffice_1.1.4.tar.gz.torrent
http http://67.84.8.14:88/beethoven/karajan.rar
http ftp://xdonkey.macdk.net/dl/XDonkey.dmg
我喜歡用 Web 介面來看所有載點的下載狀況,壓下第一個 Transfer 按鈕會顯示所有正在下載的工作,包括檔案名稱、大小、完成度和載點的情形。像是剛剛修改 download.ini 設定的部分,也可以用 Options 按鈕做詳細的各項設定,此外,像是檔案搜尋 (Search)、伺服器連結狀況 (Servers) 和統計資料 (Statistics),所有功能都可以在網頁界面上顯示和操作。文字介面的操作速度反應更快,不過一堆的命令就比較不友善了。Telnet 進去後其實什麼操作都不能做,要先手動通過身份認證:
auth admin 密碼
接下來就可以使用各種文字命令了。在提示符號下直接貼上一堆的下載命列(和 Web 介面一樣,如果不是 ed2k:// 開頭的,要加上 dllink 命令),就可以快速批次下載。而命令 vs (view downloads) 可以列出所有正在下載的工作,每個工作前面會有個 Index,像是 [D 1],如果要取消、暫停或繼續某個下載工作,用命令 cancel/pause/resume Index,就可以對特定工作做處理。關於設定的部分,也可以用 options、options section 和 set option value 等命令來查看和修改。所有的命令說明和使用方式,官網這裡也有詳細的說明。
MLDonkey 也許下載的效率比不上訂製專用的軟體,但是在使用上的便利性、支援性和操作彈性都是其他下載工具難以望其項背的,它並不是單純的一個下載工具,而是一個可以提供遠端登入使用、允許不同使用者帳號操作的下載服務(可以建立該服務自己的多個使用者帳號,和作業系統無關,提供不同使用者操作),有了這項服務,LinkStation 才能變成名符其實的專門分享的「動物機」,丟入載點網址機器就會乖乖幫你一個個拖回來,即使多人共用,也有便利的權限區隔,這真是 Linux 平台上必裝不可的好東西啊!
補充:預設 MLDonkey 有支援網頁介面登入,但問題是需要特別的連接埠 4080,偏偏這種特別的 Port 很容易被一般防火牆擋住不准用。如果有安裝網頁伺服器,一般不擋的 Port 80 又會被佔用,想用 Port 80 同時跑網頁服務和用 MLDonkey 的網頁介面就相互衝突了!不過如果跑的網頁伺服器是 Apache,網路上有一篇文章提到可以透過 Apache 來做 Redirection、將 Apache 的特定目錄流量直接轉到 Port 4080,這樣就可以用 Port 80 直接使用 MLDonkey、又不會和網頁伺服器衝突啦!(原文請參考:ApacheRedirection)
首先,要先啟動 Apache2 的 Proxy & Rewrite 模組,不然會認不得設定檔裡的命令(導致啟動 Apache 時跑出 Invalid command 的錯誤):
ln -s /etc/apache2/mods-available/proxy.conf /etc/apache2/mods-enabled/proxy.conf
ln -s /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enabled/proxy_http.load
ln -s /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enabled/proxy.load
ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
接下來修改 Port 80 預設的網站設定檔:
nano /etc/apache2/sites-available/default
在設定後面、結束標籤(</VirtualHost>)前面加入下面這一段:
# Allow port 4080
<Proxy http://localhost:4080>
Allow from all
</Proxy>
# Redirection
RewriteEngine On
RewriteRule ^/mldonkey$ /mldonkey/ [R]
RewriteRule ^/mldonkey/(.*) http://localhost:4080/$1 [P]
存檔後重新啟動 Apache:
/etc/init.d/apache2 restart
這樣就完成 Port80 的 ApacheRedirection 啦!只要打開瀏覽器直接連:http://機器的IP位址/mldonkey/,Apache 會幫你轉向到本地端的 Port 4080,這樣就可以用瀏覽器直接使用 MLDonkey、不怕被防火牆擋住,也可以和網頁伺服器共用 Port 80,不影響網站運作啦!(不過有兩點要注意的,第一,開放出去後,為了安全性 MLDonkey 最好一定要設密碼。第二,因為是靠 Apache 直接用 localhost 轉向連線要求,所以對 MLDonkey 服務來說所有連線都是從 localhost 來的,本來那個 allowed_ips 的限制連線設定就沒效啦!要特別注意相關的安全問題。)
回應: 40