眾所周知,eD2k伺服器在eMule整個運行過程中有著非常重要的作用,尤其是在找源與搜索方面,eD2k伺服器暫時無法被Kad網路完全取代;eD2k伺服器可以鑒別虛假與惡意文件,維繫eMule與其它不支持Kad協議的eD2k兼容客戶端之間的聯繫。有了eD2k伺服器,eMule才能更好的運行。
最早編寫eD2k伺服器軟體的是創立eD2k協議的MetaMachine(eDonkey2000.com),稱為dserver,版本一直發展到16,然後轉交給法國的Lugdunum小組維護,現在發展到最新的17.15。 Lugdunum也稱eserver。目前已知的所有知名eD2k伺服器,包括 eDonkey Server,TVU,UseNext在 內全部使用Lugdunum軟體搭建架設。
Lugdunum這一單詞是法國城市裡昂的舊稱。
由於考慮到位於北美大陸的惡意與虛假伺服器對eD2k網路的威脅,Lugdunum是免費但不開源軟體,伺服器版本是否最新是判斷一個伺服器好壞的重要特徵。
(2006年3月16日,由於法國通過了新的法律,禁止開發任何有助於侵犯版權的伺服器軟體或客戶端軟體,Lugdunum宣布停止開發。——uralhan注)
架設環境
Lugdunum主要設計用於Linux平台運作,支持多核心與64位運行,但也有面向Win32,solaris與FreeBSD平台的版本。
警告:Lugdunum 17.15 Win32版已經被證實無法正常運作(不論客戶端的情況,所有連接上的客戶端均會被分配為LowID),請放棄在Windows下使用Lugdunum的想法。(Windows版Lugdunum下載,不推薦)
Lugdunum的主頁已經失效,這裡提供針對32位Linux與x86-64Linux的17.15版本。需要2.6或以上版本內核才能支持NPTL:
下載 lugdunum 17.15 x86-64 linux
配置Lugdunum
基礎設置
下載與你的系統和CPU對應的Lugdunum,然後解壓到任意文件夾中,再去下載ip-to-country.csv與ipfilter.dat,把他們放在Lugdunum存放的位置,這時就可以編寫Lugdunum的配置文件——donkey.ini。
這是核心部分:eD2k伺服器的每一個變數都被寫在這個文件里。eserver開始運行時會讀這個文件。
警告:伺服器軟體沒法接受語法錯誤(書寫時的錯誤),伺服器不能明白某個命令它就不會工作,或者它會忽略寫得不對的命令(以及後面的任何東西);大小寫也是非常重要的;所有單獨條目均不能有注釋。
[server]
這個命令啟動控制進程。它必須被寫在方括弧里。在最後的那個方括弧後面沒有空格,這一點非常重要。否則的話這將使伺服器無法理解 ——也許它沒法工作了。接下來的條目只是例子而已!
name=LUCK
伺服器的名字,就象你在客戶端看見的那個。你可以用任何你想用的的文字數字組合。
desc=社區 http://www.ied2k.com/
伺服器描述信息,跟「name=」格式是一樣的。可以用任何文字。
thisIP=61.152.93.254
請注意大小寫!(IP「61.152.93.254 」只是個例子而已)。這將告訴伺服器你自己的,公開的公網IP。程序開始時,伺服器會把它工作的IP發送到其他的伺服器。請注意程序開始時所顯示的IP,它是你當前真正的,公開的IP,用戶會通過你提供的這個IP連接到你的伺服器。
port=4242
在這裡你要指定可以跟伺服器建立聯繫的埠。一般情況下這個埠是TCP:4661,如果你想用4661,那麼這個條目可以空著。如果由於某些技術原因該埠不可用的話,你可以用其他的埠。當然如果是這樣的話你就得給出這個條目了——如果可能的話,盡量不使用4661,因為某些無良ISP封鎖了4661與4662。埠預設是TCP:4661
seedIP=212.63.206.35
注意大小寫!(IP地址「212.63.206.35」只是個例子而已)
這一項,就象名字示意的那樣,是指伺服器從哪裡連接到網路其他部分,它代表一個正在運行的ED2K伺服器,這樣你的伺服器才能夠找到它 ——它是你的伺服器首先建立連上的那個伺服器。 首先,你的伺服器發送自身的IP地址和埠號——然後他就會獲得種子伺服器所知道的所有的IP地址。
seedPort=4242
注意大小寫!(埠「4242」只是個例子而已)
如果「種子伺服器(Seed-Server)」的埠號不同於預設的TCP:4661,就必須有這個條目。許多伺服器使用4661埠「seedPort」的預設設置是4661。
logFile=true/false
注意大小寫!
你可以把日誌寫到硬碟里,而不是把它們顯示出來——這也就是說把顯示輸出關閉掉——這樣的話伺服器不會在屏幕上顯示任何輸出! 「true」表示「激活該功能」,「false」表示「關閉該功能」。如果你不想顯示輸出而想用日誌文件的話的話——寫true,否則寫false——請不要寫both(兩者都要),否則你的伺服器會發癲的,或者將引起你的電腦爆炸!! 「logFile」的預設設置是「false」——關閉……
verbose=true/false
如果你想看所有的系統顯示的注意信息,你應該把「verbose」激活(把它設成「true」)——一般來講如果所有的東西你都看看的話是很煩人的,因為「普通的」信息顯示得太快了。不要感到驚訝:即使是「verbose=false」,伺服器仍然會打出「ERROR: unknown type MetaTag::MakeTag() 72」或者類似的信息 ——別管它,伺服器會工作的。為什麼會顯示這個信息呢?我不知道!總之別理它就行了…… 「Verbose」預設是設成false——關閉……
public=true/false
這個條目決定了你的伺服器是否把自己的IP發送到其他伺服器去。把這個條目設置為「true」對網路來講是非常重要的,因為一般你要運行的都是公開伺服器,只有設置為「public=true」你的伺服器才能夠登陸到網路上去!
注意:「public」預設是設成「false」的,把它更改為true.
threads=10 (integer)
這個條目定義能夠同時處理的任務的數目,目前Lugdunum中此值為10且不可更改。
tableSize=3089 (integer)
注意大小寫!
這裡的table就是包含了文件名和客戶的資料庫。這一定是一個素數。其技術背景(快速搜索次序)就不深入探討了。這個值的大小看起來並沒有什麼太大區別。在默認的ini文件里這個值是「3089」——這實際就是一個素數。設為其他素數也沒有任何影響。如果不去設定,伺服器會自動生成一個素數取代。
maxClients=100000
注意大小寫!
這裡是多少客戶可以同時連接到伺服器的數目。如果「maxClient(最大客戶數目)」——達到了峰值時,客戶端在嘗試連接到該伺服器的的時候會出現「Can´t connect to…(無法連接到……)」這樣的信息。
你必須試試才能知道你的伺服器的最佳值,Lugdunum支持運行中更改可容納客戶端數目,更改後也無需重新啟動程序。
type=key/substring (key 或者 substring)
注意大小寫!
「type」預設被設置成「key」,也就是快速模式;「substring」是老式方法,速度慢。
console=true/false
這個值決定伺服器是否工作在控制台(命令行提示符)狀態下。當伺服器自動開始運行並且你不想使用「屏幕」命令的時候,這樣做還是有用的。
如果「console=true」的話,你就必須在控制台下運行伺服器,如果「console=false」則不必非要如此,但這時就不能用鍵盤給出任何命令了,並且不能顯示任何東西。嗯,其實這兩樣都不是必需的,但是我喜歡時不時察看一下它在幹什麼並加以控制,以及看看它知道多少可用的伺服器(敲「vs」)。 「console」預設是設置成「true」
minVersion=57
注意大小寫!
這定義低於v.57的版本不能連接到伺服器。當有客戶端軟體的更新版本出現時,改改這個值是有用的,但請注意當時的形勢,比如說,由於一個安全方面的bug,新版本v.61沒法支持ed2k-links,因此沒有很多用戶升級到它,還有linux的版本可能比windows版本老很多……
如果沒有設置「minVersion」值的話,所有版本的客戶端都會被伺服器接受。
maxVersion=9999
注意大小寫!
這定義了伺服器可接受的最大版本號。測試版的客戶端程序往往有一個很高的值(比如1060)——因此這個值應該留為空白,否則的話你得常常更新這個值並且很容易忘記——正在測試新客戶端的用戶就被請出去了……:-( 設為9999就保險了。
如果「maxVersion」沒有被設置的話,任何高於「minVersion」的版本均會被接受。
welcome[0]=Welcome to TheDonkeyNetwork welcome[1]=share your Files and your upload Bandwith |
這是歡迎信息,在登陸到伺服器時被顯示出來。設定時你要注意,[]裡面的數字是變化的,每行的不一樣。歡迎信息不應該太長,否則的話它們將需要許多帶寬——每個字母1位元組!當出現1000客戶時,平均每分鐘會有5-50個連接……
一個完整的可以使用的donkey.ini文件看起來像這樣:
[server] name=LUCK desc=http://www.ied2k.com/ thisIP=61.152.93.254 port=4242 seedIP=212.63.206.35 seedPort=4242 verbose=false public=true threads=10 type=key tableSize=3089 maxClients=100000 minVersion=57 maxVersion=9999 logFile=false welcome[0]=歡迎登錄LUCK welcome[1]=*************************** welcome[2]=建立華語世界最大的P2P資料庫 |
其它擴展選項設置
LOWIDenable (integer)
如果為 1, LOWID 用戶可以登錄。預設值為 1
LOWIDpercent (integer)
最大的 LOWID 用戶比率。建議不要超過33%,預設值為20
autoservlist (pathname)
如果設置了,伺服器會每225秒將已知的其他伺服器列表寫入server。預設值為none
auxportslist (list of ports values)
輔助監聽埠列表,16.45版的新特性
例子:auxportslist=80,443,25,21
blacktime (integer)
黑名單時限。即將客戶端ip列入黑名單保留的時限.預設值為3600
bverbose (boolean)
如果為真,eserver會記錄下黑名單ip。預設值為false
connIP (IP address)
當伺服器有多ip時,指定輔助監聽的ip。和ftpd的virtual host不同,這裡還有防止Hash Stealers的功能
filter[ ] (filter expression)
濾鏡,防止共享某些不合法或不完整文件,有需要的話我會另外一個帖子介紹一下詳細用法
例子:
filter[0]=(.part.met) filter[1]=(.part.stats) filter[2]=(#FORMAT met) filter[3]=(#FORMAT part) filter[4]=(#FORMAT dll)|(#FORMAT sys) |
hardLimit (integer)
共享文件數目硬性限制,為避免某些用戶共享過度的文件數浪費帶寬而設置,擁有超過此數目共享文件的用戶將被踢出伺服器,默認值為4000
login_timeout (integer)
登陸時限,在時限內檢驗客戶端獲取 HighID 或 LowID。默認值為20
max_clients_per_ip (integer)
限制同一IP連出的客戶端數量,默認值為12。
可以防止某些蠕蟲/病毒/機器人發起太多連接以填滿伺服器的資源,但是容易使國內一些寬頻的用戶進入黑名單。
maxSearchCount (integer)
從以連接客戶中搜索返回結果最大數,默認值為200
maxUDPSearchCount (integer)
從非連接客戶中搜索返回結果最大數,默認值為20
maxservers (integer)
伺服器被加入伺服器list的最大值,避免拒絕服務攻擊。預設值為4096
maxstrangers (integer)
最大陌生用戶的數目,預設為1000000
minEVersion (integer)
可登入伺服器的Emule的最小版本,預設值為0x26
註:EMULE的版本數字為16進位,範圍從00到FF
minkeylength (integer)
搜索時關鍵字的最小長度,預設為3
nbuserIP (IP address)
如果使用了nbuser來監聽,在這裡設置監聽機器的ip,預設為127.0.0.1
nbuserport (integer)
nbuser監聽的埠,默認為5656
ncpus (integer)
設定主機可用的CPU的數目。
nickcommunity (string)
非陌生客戶認證的標誌,也就是登錄伺服器需要的TAG,比如POPGO伺服器需要的EDTOON,預設值為空
noudpslowsearches (boolean)
拒絕複雜搜索,即拒絕關鍵字搜索,預設值為false
ping_delay (integer)
ping延遲時間,伺服器會在一定的間隔獲取用戶總數和每一個用戶共享的文件,這個過程叫做ping。預設值為400
softLimit (integer)
共享文件數目軟性限制,為避免某些用戶共享過度的文件數浪費帶寬而設置,用戶超過此數目的共享文件將被伺服器忽略,默認值為1000
tcpthreads (integer)
用於接受客戶端請求的TCP請求的線程數目,默認值為當前主機的可用CPU數目
trackbademule (integer)
拒絕虛假版本EMULE的登入,要與minEVersion配合使用,默認值為30
trackemule (integer)
此項如果被激活(設為1),伺服器程序將跟蹤EMULE的版本,默認值為1
udpsearchers (integer)
為UDP搜索動作準備的線程數目,在單CPU機器上請設為1,多CPU機器上請設為2
warnfakes (integer)
惡意文件提示,當用戶持有或正在下載fakes.txt中已知的虛假或惡意文件時,伺服器發給該用戶的警告信息的數目,默認值為0(不發送)
附:fakes.txt的格式
純文本格式,每行只寫入一個虛假或惡意文件,以該文件的32位MD4 HASH值開頭,後面是對於該文件情況的描述。
伺服器命令
vc
查看當前伺服器中用戶登錄情況
vs
查看種子伺服器的運行情況
vo
查看當前伺服器的一些選項的值,比如IP,埠,軟硬限制等
name=valve
更改選項的值,比如鍵入 maxClients=30000 就是將最大客戶端數目設為30000
print name
顯示該選項的當前值,比如建入 print maxClients,伺服器就會顯示 maxClients=30000
g | stats
顯示伺服器當前的用戶情況,搜索狀況,埠信息,連接情況。
wel
顯示伺服器的歡迎信息
filters
設置伺服器中的文件名過濾
slab
顯示當前的內存使用情況
debug
顯示伺服器的調試信息
reload
重新載入配置文件
m message
向客戶端廣播信息,message指代廣播內容。
在Linux下的一些特別提醒
對於大型伺服器,修改/etc/sysctl.conf中的fs.file-max將其值改為 16384
官網推薦使用腳本啟動伺服器,腳本內容如下:
# script.sh file ulimit -n 100000 while : do ./eserver sleep 1 done |
28條評論隱藏
ied或者誰搭建一個伺服器吧~ 😀
呵呵,索菲的想法……
Lugdunum伺服器對硬體有何要求?
內存?
cpu佔用?
多核?
CPU雙核是可以的,不過關於Lugdunum的硬體要求好像網路上都沒有什麼資料……不過,一般只要伺服器的網路好,對硬體的要求是不高的,一般的HTTP伺服器應該都可以勝任
對網路帶寬有什麼要求?
@chengr28
lugdunum的最新版是2007年的,當年的伺服器主流配置和現在的基本應該是一樣的
@yegle
貌似現在已經沒有繼續開發了
法國佬不知道在eserver里放了什麼後門,但是開源的伺服器又太容易被任何人利用放後門,真是矛盾呀。
Lugdunum的老版本主頁好象這有了:http://lugdunum.shortypower.org/
Lugdunum 17.13 Win32的沒問題,官方網站已經更新了,WIN32平台最高就是 17.13版本
@robinzhen
17.13 貌似不支持模糊協議 😳
能不能用cygwin跑?
請問一下win7系統可以用嗎? 我想自己搭建一個eb2k的伺服器
@追風箏的人
你自己下個Lugdunum 17.13試試不就知道了?不過「17.13 貌似不支持模糊協議「,所以還是用GNU/linux跑吧。
@犟騾子
額 謝謝
請問下 只要是linux 就可以是不是 像ubuntu之類的 還是對紅帽什麼的支持的好?
@追風箏的人 linux都是一樣的
虛擬主機能能搭建么?
@ied2k.cc 肯定不能吧,對硬體要求太高了
vpn可以搭建么?如果購買vpn搭建電裸伺服器,vpn需要達到什麼樣的標準,流量是否有限制,要多少合理些, emule有什麼限制.比如連接數等等. 搭建這樣的伺服器在國外的vpn 會不會受到國外的什麼法律影響.比如版權什麼的.在國內呢?有什麼限制和其他的法律問題.
難道必須是獨立主機,?這樣成本太高了.不知道自己在家,能不能搭建,但沒有固定ip啊!
@ied2k.cc
模仿verycd用域名聲明自己也是可以的,你的話可以使用動態域名。
@ied2k.cc VPN可以搭建,如果不公開,就幾個人內部用用的話。
但VPN在國外有版權問題。國內版權問題倒不大。
這個怎麼設置才能支持亂序加密?
我私下架設了一個 lugdunum伺服器,是用ssh遠程連接的,我執行腳本後 伺服器開始正常工作了,令我興奮不已,用電騾軟體也可以查得到,可是我進入了命令行狀態,我按下ctrl+c 退出命令後,或者把遠程連接斷開後 lugdunum伺服器就停止工作了,請問我如何讓我的lugdunum伺服器一直在線工作呢? 麻煩您回復我的QQ郵箱,萬分感謝
@小李 使用crontab一直監測伺服器程序,如果發現程序沒有啟,則把它啟起來即可。
搭建一個eMule伺服器試試,暫時使用eserver.eMoogle.info:8080
@小李
用screen
2條Trackback/Pingback顯示