logo

 
logo2
Vielen Dank an lugdunum master und an Norman, ohne deren freundliche Unterstützung diese Seite jetzt nicht hier wäre.
Das deutsche Forum zum eserver findet Ihr im
http://www.ed2k-serverboard.de/
http://www.ed2k-serverboard.de/

Aufsetzen eines effizienten Edonkeyservers unter Linux/FreeBSD/Win32  

©2002-2004 by Lugdunum                  [http://lugdunum2k.free.fr/kiten.html]

Übersetzung:
Norman                       [http://www.rechenkraft.net]
IhmSelbst



Hier gibt es nützliche Informationen über den Lugdunum-eDonkey/eMule-Server.
Die alte Seite enthält Informationen über Lugdunums vorherige Patches des dserver.

Die aktuelle Version des eservers ist die 17.14. - Serverbetreiber sollten ihre Serverversion auf den neuesten Stand bringen: Wir leben in einer feindlichen Welt...

Momentan erhältlich für Linux, Windows und verschiedene Unixe.
Besten Dank an bluecow vom Emuleentwicklerteam für die Zusammenarbeit:
emule 0.30b verwendet das neue Serverprotokoll (zlib, jumbo UDP frames).
eMule0.30d bündelt mehrere GetSources in einer TCP message.
eMule0.42e verwendet 'alle' Features der Version 16.45
eMule0.44a ist bereit für Unicode
eMule0.46a verwendet das erweiterte getsources-Protokoll, um Fehler durch falsche Filegrößenangaben zu vermeiden.
eMule0.46b wurde um den Befehl 'related search' erweitert.
eMule0.47a sollte FILERATING-tags an die Server schicken können.
eMule0.47a kann mit großen Dateien (>4GB) umgehen.

Der eDonkey von Metamachine wurde in der Version 1.4.3 aktualisiert, um nun ebenfalls all diese neuen Goodies zu beherrschen. (Aber keine großen Dateien.)



Runterladen und installieren:
$ wget http://lugdunum2k.free.fr/files/eserver-17.14.i686-linux.gz
$ wget -O ipfilter.srv http://lugdunum2k.free.fr/files/ipfilter.srv
$ gzip -d eserver-17.14.i686-linux.gz
$ chmod 755 eserver-17.14.i686-linux
$ rm -f eserver
$ ln -s eserver-17.14.i686-linux eserver

Optionen:
Falls eine ipfilter.dat verwendet wird, sollte man auch darauf achten, diese regelmäßig zu aktualisieren.
$ wget -N http://emulepawcio.sourceforge.net/nieuwe_site/Ipfilter_fakes/ipfilter.dat
$ wget -N http://ip-to-country.webhosting.info/downloads/ip-to-country.csv.zip
$ unzip ip-to-country.csv.zip

Der eserver braucht eine Konfigurationsdatei namens donkey.ini, die im gleichen Verzeichnis wie der eserver liegen muß.

Diese Konfigurationsdatei ist kompatibel mit der des originalen dserver. Schauen Sie sich dahingehend mal die Seite von MetaMachine an.

Die 'nackte' donkey.ini sollte mindestens folgendes enthalten:
[server]
name=Der Name des Servers
desc=Eine kurze Beschreibung des Servers
thisIP=81.12.34.56 # Die öffentliche IP des Servers
port=4232 # der TCP-port (Standard ist 4661, aber es wird angeraten, einen anderen Wert zu wählen.)

Zum Betrieb des eServers kann ich den Befehl screen empfehlen, weil der Server eine Textkonsole hat, in der die Befehle ausgeführt werden können.

Der Server kann nicht als Dienst (daemon) betrieben werden.

Um ihn automatisch wieder zu starten, z.B. bei einem Fehler, empfehle ich, ein Skript in der Art wie dieses hier zu benutzen:
# script.sh file
ulimit -n 100000
while :
do
./eserver
sleep 1
done

Wenn die script.sh-Datei fertig ist, führt man, um sie ausführbar zu machen, in einer Konsole einmalig "chmod +x script.sh" aus.

Dann, um den Server zu starten:
screen -d -m ./script.sh

Zur Bedienung gibt man ein:
screen -r


new Neu in Version 17.14 (21. Oktober 2006):

  • Einige Änderungen bei der Kommunikation zwischen den Servern. (weniger Traffic)
  • Änderungen in Grössenkonflikten (wenn gleiche Prüfsummen, aber verschiedene Dateigrössen vorliegen)
  • "Related Searches" wurde erweitert. Ein Client kann mehrere Dateiprüfsummen bei der "Related Search"-Anfrage angeben.
  • Eine neue Höchstpuffer-Einstellung wurde eingeführt, um den Speicherverbrauch bei Netzwerküberlastung zu begrenzen.

Neu in Version 17.13 (10. September 2006):

  • Verschleierungsprotokoll (von eMule0.47b): Nicht wirklich ein Geheimkode, aber schonmal... Beide TCP-Sitzungen und UDP-Nachrichten können verschleiert werden, um Filterung und Schnüffeleien zu umgehen.

Neu in Version 17.12 (5. August 2006):

  • Fehlerkorrekturen
  • "Related Searches" versagten in 17.11
  • Ein böser (aber seltener) Fehler (wurde mit den grossen Änderungen in 17.11 eingeschleppt) konnte zu Abstürzen führen.
  • Verbesserte Unterstützung von "ed2khistory"

Neu in Version 17.11 (29. Mai 2006):

Neu in Version 17.10 (12. April 2006):

  • Hotfix: Unter gewissen Umständen konnte ein Publish-Paket einen eServer-Core-Dump herbeiführen. (Aus verständlichen Gründen können darüber keine genaueren Einzelheiten mitgeteilt werden.)
  • Ein neues Indexaussehen kann etwa 12 Bytes Speicher pro Datei einsparen. Ausserdem wird dadurch die Suche beschleunigt.
  • gcc-4.1.0

Neu in Version 17.9 (20. Januar 2006):

  • Hotfix: ein Suchfehler wurde in 17.8 eingeschleppt

Neu in Version 17.8 (19. Januar 2006) :

  • Unterstützung für große Dateien im eD2k-Netzwerk (Größe > 4GB), aber Clients brauchen emule 0.47a. Alte Clients werden immer noch unterstützt.
  • Übergeht alte eserver (Versionen < 17.6)

Neu in Version 17.7 (16. September 2005):

  • Unterstützt Suchanfragen nach mehreren Dateiendungen, unterstützt die Operatoren not or ! in den Dateiendungen (wie "zip,rar,cbz,cbr" oder "!wme,!wma" or "not wme")
  • Netzwerkbandbreite: Es werden weniger Pings an die Clients geschickt. (berücksichtigt die von den Clients empfangenen Daten, über die sie uns mitteilen, daß sie noch auf dem Socket vorhanden sind.)
    berücksichtigt ebenfalls, daß an Low-ID-Clients eine Lowidnachfrage geschickt wird: huckepack im gleichen TCP-Paket ein 'ping'-Paket)
  • Ignoriert alte eserver (Versionen < 17.5)
  • zlib-1.2.3

Neu in Version 17.6 (5. August 2005):

  • Unterstützung des features FILERATING (Bewertung einer Datei). Die User können nun jedes File nach einer Skala von 1 (sehr schlecht) bis 5 (außergewöhnlich gut) bewerten. Die Server sind in der Lage, Durchschnittswerte für die FILERATINGS in den Suchergebnissen auszugeben. Die nächsten Versionen von emule und shareaza sollten dieses Feature verwenden.
  • Wegen des FILERATINGs ist der Speicherverbauch in etwa um den Faktor 4% höher, als in den vorherigen Versionen. Serverbetreiber sollten die user/file limits beachten.
  • AMD64 Spezial 64bit Version (Verwendung von !3DNOW Befehlen zur Leistungssteigerung), läuft nicht auf EMT64 Intel cpus.
  • Ignoriert alte eserver (Versionen < 17.4)
  • edonkey lowid clients müssen mindestens edonkey 1.4.3 (oder neuere Versionen) verwenden.
  • gcc 4.0.1 compiler.
  • Ein country tag wurde zur server.met hinzugefügt (kosmetisch)

Neu in version 17.5 (10. Juli 2005):

  • Die Fähigkeit, 'related searches' (Eine Suche nach ähnlichen, 'artverwandten' Dateien.) auszuführen. - Die Syntax ist:
    related::<Filehash> oder related:<Größe>:<Filehash>, oder ab emule 0.46b Rechtsklick auf das File, und dann -> 'related search'.
  • Eine 'related search' gibt die Dateien aus, die neben derjenigen, die man gerade von den anderen Clients runterlädt, am häufigsten von ihnen angeboten werden. Sie kann sowohl zum Auffinden ähnlicher Dateien, als auch zum Erkennen von Unregelmäßigkeiten in der Dateiverteilung benutzt werden.
  • Unterstützung des in emule 0.46b vorgestellten Filetyps 'emulecollection'.
  • Sicherheitsfix: zlib 1.2.2.2 (Patch, um den Bug CAN-2005-2096 zu beheben.)

Neu in Version 17.4 (18. Mai 2005):

  • Die Fähigkeit, genaue Suchen durchzuführen: Clients können Worte in ' oder " enthalten. (für " wird eine Folgeversion des emule benötigt). Beispiel: 'blank & john' OR 'the the'
  • Geringhalten der verfügbaren Filedescriptoren, um die Filedescriptorzuordnung unter Linux zu beschleunigen.
  • Zur Speicherersparnis werden einige zu oft verwendete Worte nicht indiziert.
  • Ignorieren alter eserver (Versionen < 17.3)
  • gcc 4.0 compiler
  • Einige bugfixes (in seltenen Fällen konnte eine segmentation violation auftreten)

Neu in Version 17.3 (15. Februar 2005):

  • ZLIB auf zlib-1.2.2 aktualisiert: Frühere Versionen sind verwundbar (Denial Of Service-Zustand).
  • Überprüfung, ob ein angebotenes File mit der bekannten Filegröße übereinstimmt. Etliche schadhafte oder böswillige Clients versuchen, das Netzwerk zu schädigen.
  • Änderung des eD2k-Protokolls, damit die Clients uns die Größe des Files mitteilen, das sie runterladen, und nicht nur den Filehash.
  • Das Semikolon ; ist ein Worttrenner in Filenamen.
  • Etwas Code (für x86, 32bits und 64bits) zur Beschleunigung der Suchfunktion.
  • Schickt ein CT_EMULE_VERSION tag im Hello-Frame, um ein von eMule versendetes Paket einzusparen (EMULEINFO).

Neu in Version 17.2 (5. Januar 2005):

  • Einige Würmer und anti-p2p-Robots öffnen *viele* Verbindungen zu den Servern, um deren Speicher mit nutzlosen Daten zu fluten. Wir begrenzen nun die Anzahl von Clients mit der gleichen IP. Dies erfolgt über den neuen Parameter max_clients_per_ip
  • Fehlerkorrektur bei der Suche nach Video- und Audiodateien (nicht irgendwelche)
  • Fehlerkorrektur im community-feature

Neu in Version 17.1 (1. Dezember 2004):

  • Unicodeunterstützung: Die Mehrzahl der Clients verwendet UTF-8-kodierte Filenamen bei deren Bekanntgabe. - Es ist demnach an der Zeit, auf Unicode umzustellen.
  • Unicodeunterstützung: Begrenzte Unterstützung füür Groß- und Kleinschreibung & accents (#U00C0 to #U00FF).
  • Unicodeunterstützung: Echtzeitumwandlung von CP949-kodierten Strings (Koreanische Codepage/locale) auf UTF-8
  • Unicodeunterstützung: Unterstützung für Groß- und Kleinschreibung des Kyrillischen Zeichensatzes (#U0410 to #U044F)
  • Suchergebnisse können ein neues tag verarbeiten: #LASTSEEN, das die letzte komplette Sichtung des Files auf dem Server in Sekunden angibt.
  • Unterstützung des ip-to-country.csv-Files, um statt eines einheitlichen Willkommenstextes für alle Clients (welcome[]-Message) einen länderspezifischen Willkommenstext (welcome.xx) senden zu können. Man kann das File mit dem eServerkommando "loadipcountry ip-to-country.csv" neu laden.
  • Unterstützung des neuen ed2khistoryservices. (Der Server behält einen #ASKED-counter für jedes File.)
  • Spart ein TCP-Paket für den High-ID-Test beim Verbinden mit dem Client.
  • Fängt HTTP-Anfragen ab, die an den eServerport gesendet werden. (Anzeige einer userfreundlichen Seite, auf der die IP angezeigt wird.) Siehe dazu auch den Parameter http_trace.
  • Razorback2 kann mehr als 900.000 Clients versorgen.

Neu in Version 16.49 (30. August 2004) :

  • Fehlerkorrektur der ia32 linuxversionen (32bits). Einige Suchanfragen wurden nicht richtig ausgeführt. Dieser Bug trat in 16.46 auf.

Neu in Version 16.48 (20. August 2004):

  • Wenn eine Verbindung in die blacklist geriet, wurde die Meldung "ERROR : Connection refused. Your IP is currently blacklisted." nicht richtig verschickt.
  • Fehlerkorrektur bei der Verarbeitung der ipfilter.dat. Einige Netzbereiche wurden nicht berücksichtigt.
  • A flush of socket buffers was added to save some kernel memory for sockets in CLOSE-WAIT state.

Neu in Version 16.47 (19. Juli 2004):

  • Verbesserungen der Suchfunktion.
  • Schutz gegen Servermißbrauch durch Shareaza. Shareazauser sollten mindestens auf die Shareazaversion 2.0.0.5 aktualisieren.
  • Schutz gegen veraltete amule/xmule/edonkey-Programme, die zwar vorgeben, zlib zu verwenden, allerdings unkomprimierte Daten zum Server schicken. edonkey-user sollten auf Version 0.53.21 oder höher aktualisieren.
  • Schutz gegen Fakeclients. Wenn Du wissen willst, wie Fakeclients Deinen Server infizieren, tippe folgendes Kommando in der Serverkonsole ein: "vc 38.0.0.0/8"
  • ipfilter.dat-Unterstützung, um den Server von den bekannten IP-Bereichen freizuhalten, die von anti-p2p-Gesellschaften benutzt werden. Dazu kann der Serveradmin im aktuellen Verzeichnis entweder seine eigene ipfilter.dat, oder die von Pawcio verwenden:
    http://emulepawcio.sourceforge.net/nieuwe_site/Ipfilter_fakes/ipfilter.dat
    Die ipfilter.dat kann mit diesem Kommando neu geladen werden: "loadipfilter ipfilter.dat"

Neu in Version 16.46 (26. April 2004):

  • Protokollerweiterung: Tags compression. Sollte von eMule 0.42f verwendet werden, um Bandbreite und Kompressionsanforderungen einzusparen.
  • Unterstützung von Suchen über den Filehash. Akzeptiert verschiedene Links (ed2k://|file|name|Filegröße|Hash), (ed2k:Filegröße:Hash), (magnet:?xt=ed2k:Hash), ...
  • Suchoptimierung: Suchanfragen verbrauchen die Hälfte der CPUleistung gegenüber der Vorgängerversion.
  • Bugfix: Ein Bug, der in der 16.45 auftrat, ist nun beseitigt.

Neu in Version 16.45 (31. März 2004) :

  • Tuning für Multiprocessormaschinen (SMP) : TCP worker threads (see tcpthreads param) and fine grained locks to reduce lock contention.
  • Portierung auf x86_64 Linux (für AMD64, sowie vielleicht auch demnächst für Intel IA32E ). Der eserver ist von Haus aus ein 64bit-Programm, das 32GB RAM verwenden kann.
  • Razorback (Dual Opteron, 6GB Speicher) verwaltete mit dieser Version 600.000 Clients.
  • Um Speicher zu sparen, werden einige zu allgemeine Suchbegriffe nicht mehr indexiert (avi,jpg,the,avi,zip,rar,mpg), während die Suche weiterhin wie bisher klappt.
  • Zum Quellenspeichern wird ein neues Schema (chunks) verwendet (10 bytes pro 'file' statt 16). (Besten Dank an tecinv & Lobuz vom Emuleforum für diesen Hinweis.)
  • Ein neues Speichermanagement, um eine Fragmentationshäufung zu vermeiden, sowie der neue Parameter hugefile2.
  • Ein neues Feature: COMPLETE file. Aktuelle Clients (eMule 0.42e) können während des Publizierens mitteilen, ob ein geshartes File komplett ist, oder nicht. Die Suchergebnisse enthalten diese neue Information.
  • In Suchanfragen ist der Buchstabe ñ ein Alias für den Buchstaben n. Bei einer Suche nach 'espana' wird demnach auch 'españa' gefunden.
  • Der Server kann auf weiteren TCP-'Hilfs'ports lauschen, um die durch einige Internetprovider betriebene Filterung zu umgehen. Siehe dazu auch den Parameter auxportslist.
  • Die Standard-IP für jigle wurde in 62.2.249.5 geändert. (ja, wir wissen, daß jigle momentan off ist.)
  • Der neue Parameter opIP gestattet es nun auch Serverbetreibern, einen eD2k-Clienten laufen zu lassen.
  • ZLIB wurde auf Version 1.2.1 aktualisiert.
  • Portierung auf die IBM S390-Architektur. (linux powered).

Neu in Version 16.44 :


  • Parameter zur Einrichtung von TCP_QUICKACK und TCP_DEFER_ACCEPT unter Linux hinzugefügt, s. dazu quickack und defer_accept.
  • Der Parameter maxnozlib kann zlib-Clients etwas mehr Priorität beim Login zukommen lassen.
  • Ein neuer, extra dafür hinzugefügter thread übernimmt die Unpublish operations, wenn der Client sich vom Server trennt. Netzwerkfehler lassen den Server nicht mehr "einfrieren".
  • Bessere Multiprozessor use. (aber noch nicht perfekt: wird in 16.45 beseitigt sein.)
  • Erkennen schlechten Verhaltens von LOWIDclients, die Rückfragen an andere LOWID clients senden. (emule BUG, beseitigt in 0.30d)
  • Implementierung der OVERNET BACKCALL die an UDP port 4661 gesendet wird.
  • Erkennen schlechter frames, die an falsche Ports geschickt werden. (UDP 4669). (shareaza bugs, mldonkey, ...)
  • Erkennen eines shareazabugs, der btih und ed2k-Protokoll falsch mischte.
  • Support für UDP LOWID-Anfragen hinzugefügt.
  • Speicherersparnis (keine Indexierung von Schlüsselwörtern mit einer Länge < 3, s. dazu den Parameter minkeylength)
  • Einige Optimierungen der Suchfunktion und in anderen Bereichen.
  • Portierungen auf Maschinen, die nur select() und nicht poll(),epoll,kqueues,/dev/poll haben. ( MAC OS X, Darwin 6)
  • Bugfixes.
  • Der neue Parameter connIP kann verwendet werden, um ausgehende TCP sockets an eine einzelne IP zu binden.
  • Der Server kann automatisch eine server.met schreiben, s. dazu den Parameter autoservlist.
  • Einige Neuigkeiten über Razorback: Die durchschnittliche framegröße beträgt 27.2 bytes. Der Server kann nun 340000 Clients verwalten.

Neu in Version 16.43 :


  • Ein weiterer Bugfix für Unixrechner ohne epoll/poll/kevent, wo standard poll() verwendet wird.

Neu in Version 16.42 :


  • Bugfix für Unixrechner ohne epoll/poll/kevent, die den standard poll() verwenden.

Neu in Version 16.41 :


  • Einige Neuigkeiten von Razorback: 25% seiner Clients benutzen zlib-Kompression, und die durchschnittliche UDP-Framegröße beträgt 20,2 Bytes statt 17,8 Bytes vor einer Woche.
  • Ein Performanceproblem für Rechner ohne Epoll wurde behoben. Danke an Tim French für den Problembericht und den ssh-Zugriff auf seinen Server.
  • Ein Blackholefeature wurde integriert, und kann einen externen Daemon verwenden, um einige Firewallregeln hizuzufügen oder zu löschen: Einige Clients versuchen, sich einmal pro Sekunde auf einem Server einzuloggen. Ich habe mehr als 10000 Versuche innerhalb einer Stunde beobachtet, die alle von einem einzigen Client kamen.
  • Ein Whitelistfeature, um einige IPs oder Netzbereiche zuzulassen, die von einigen bedauernswerten NAT-Usern verwendet werden... Dieses ist kombiniert mit einer 'lowid only' Liste, um Backdoortests bereits bekannter IPs/Netzbereiche zu verhindern.
  • Durch den neuen Parameter (msgrandomport=true) kann den Server Mitteilungen an Clients senden, die den Standardport 4662 verwenden.

Neu in Version 16.40 :


  • Komplett, von Grund auf, in der Programmiersprache C neu geschrieben. Sehr hohe Performance, wie erwartet (280.000 Benutzer auf einer Linux-Maschine mit 4Gig RAM).
  • WIN32 port (Verwendet native asynchronous winsock calls : sollte ebenfalls hohe Performance bringen.
  • 64 bit Zielrechner (IBM AIX V5.1, Tru64 5, HPUX 11, Solaris, linux x86_64, ...)
  • Erweiterung des UDP-Protokolls, um den Clients das Anfragen von vielen MD4 Hashwerten aufeinmal zu erlauben, anstatt für jeden MD4-Hash ein UDP-Paket zu senden. (Sollte den UDP-Datenverkehr um den Faktor 2 oder 3 senken). Die Erweiterung des UDP-Protokolles um viele Suchanfragen auf einmal zu senden.
  • Die Erweiterung des UDP-Protokolles um viele Suchanfragen auf einmal zu senden.
  • zlib Unterstützung, um große frames, welche zwischen den Clients ausgetauscht werden, zu komprimieren.(Shareliste, Suchergebnisse...)
  • Unterstützung von Dateien > 2Gig.
  • Unterstützung von FreeBSD kqueue (FreeBSD vergleichbar mit Linux epoll)
  • Unterstützung von Solaris/HP /dev/poll
  • Möglichkeit eine MD4 Hashsuche durchzuführen. (um zusammengehörende tags einer Datei zu empfangen( Name, Größe, Typ,...)).
  • Besseres Serverlistenhandling.
  • Erkennung von veralteten Emuleversionen.
  • keepalivepings sind meist in anderen Dienstnachrichten enthalten: kleinere TCP Bandbreite (benutzt weniger IP-Pakete).
  • Adaptative Pingverzögerungen um NAT Benutzern evtl. helfen zu können. (Die zu niedrige idle timeouts haben.)
  • ...viele andere Sachen...

Dokumentation der donkey.ini:


Sie können alle verfügbaren Parameter und deren aktuelle Werte auflisten, wenn Sie folgenden Eserverbefehl benutzen:
print
Alle diese Parameter können Sie in der donkey.ini verändern, und viele davon sogar auch dynamisch in der Serverkonsole.
Anmerkung: boolsche Werte können false, true, 1, oder 0 sein.

LOWIDenable (boolean = TRUE/FALSE)
Wenn true , können LOWID-Benutzer sich einloggen. Vorgabe: true

LOWIDpercent (integer = Ganzzahl)
Maximaler Prozentwert von Clients mit LOWID. Warnung: Zuviele LOWID-Benutzer einloggen zu lassen, ist eine sehr schlechte Idee, weil niemand von denen Quellen bekommt. Es wird empfohlen, nicht mehr als 33% zuzulassen. Vorgabe: 20.

autoservlist (pathname)
Wenn gesetzt, kann der Server (etwa) alle 225 Sekunden eine server.met der ihm bekannten working Servers schreiben.
Vorgabe : nichts

auxportslist (eine Liste von Portwerten))
Neu in 16.45
Der Server kann auf tcp-auxports (tcp-Hilfsports) lauschen. Dieses Feature wurde eingebaut, um einigen Usern das Umgehen der möglicherweise von ihren Providern verwendeten Filtern zum Blocken bekannter Standardports (4661, 4242) zu ermöglichen. Standardwert: keiner
Nur aktuelle Clients sollten diese auxports verwenden, weil wir sie bitten, die auxports nicht an andere Clients weiterzugeben, da wir keinen zusätzlichen UDP-Traffic empfangen wollen.
Diese Liste kann dynamisch erweitert werden.
Beispiel:
auxportslist=80,443,25,21

blacktime (integer)
Die Anzahl in Sekunden der Blacktime (=Bannzeit): Wenn ein Client blacklisted ist (weil er zu viel Suchanfragen an den Server gestellt hat), steht er für die Dauer in der Blacklist. Vorgabe: 3600 .

blocsize (integer)
Die Anzahl von Bytes der Speicherbelegungseinheit. Verändern Sie diesen Wert nicht, weil es die Größe der HugeTLB-Seite ist (4Mo). Vorgabe = 4194304.

bverbose (boolean)
Wenn true, loggt der Eserver (in der Konsole und/oder in der Logdatei) die geblacklisteten IP´s und "doppelten Verbindungen" mit: Vorgabe: false .

connIP (IP-Addresse)
Wenn ein Server mehr als eine IP hat, können Sie eine zweite IP benutzen, um die ausgehenden sockets zu bündeln. Diese benutzt der Server, um den LOWID/HighID Test bei neuen Clients durchzuführen. Benutzung von unterschiedlichen IP?s kann einige schlechte Clients abwehren, welche falsche Informationen übermitteln (Hash-Klauer / Hash-Stealers).

console (boolean)
Wenn der Eserver eine Nachricht ausgibt, wird diese in der Konsole angezeigt, aber nur wenn der Wert "true" ist und/oder wenn bei der logFile ein "true" steht. Standard: true   Wenn ein Server mehr als eine IP hat können Sie eine zweite IP benutzen um die ausgehenden sockets zu bündeln. Diese benutzt der Server um den LOWID/HighID Test bei neuen Clients durzuführen. Benutzung von unterschiedlichen IP?s kann einige böse Clients abwehren, welche falsche Informationen übermitteln (Hash-Klauer / Hash-Stealers).

dcache_line (integer)
Diese kontrolliert die Ausrichtung der Speicherblöcke die der Eserver benutzt, um Dateibeschreibungen zu speichern. Versucht die Größe des L1 Caches auszunutzen um die Performance zu unterstützen, kann aber mehr RAM verbrauchen. Die Größe des L1 Cache von PII und PIII ist 32 Byte. Für Athlons und P4 sind es 64 Byte. Vorgabe: Systemabhängig.

defer_accept (integer)
Der Linuxkernel hat ein DEFER_ACCEPT-Feature, das den accept() eines neuen TCP stream verzögert. Die horchende Anwendung wird nicht eher über eine neue Verbindung benachrichtigt, bis nicht einige Daten darüber empfangen wurden. Der Parameter defer_accept ist die maximale Verzögerung zwischen Verbindungsaufbau und den ersten Daten.
Vorgabe = 10 Sekunden.

desc (string)
Das ist die Serverbeschreibung. Diese wird an die Clients gesendet. Vorgabe: eserver .

filter[] (Filterausdruck) Aufstellung von Filterregeln welche sich auf die freigegebenen Dateien der Clients wenden. Bitte beziehen Sie sich für mehr Details auf die Dserverdokumentation.
Beispiel von Filtern:
filter[0]=(.part.met)
filter[1]=(.part.stats)
filter[2]=(#FORMAT met)
filter[3]=(#FORMAT part)
filter[4]=(#FORMAT dll)|(#FORMAT sys)

fwcommand (Pfadname)
Dieser Parameter, erstmalig in Version 16.40 vorgestellt, gibt einen Filenamen an. Dieses File wird aktualisiert, wenn der eserver feststellt, daß ein Client in einer Endlosschleife von Permanent-Logins hängt.
Wenn eine IP in die 'bad list' aufgenommen wurde, wird eine Zeile ähnlich dieser hinzugefügt:
Wed Oct 8 16:07:06 2003 DENY 172.16.0.156
Wenn der Server meint, daß der Client wieder akzeptiert werden kann:
Wed Oct 8 16:07:06 2003 ACCEPT 172.16.0.156

Dieses File kann von einem Daemon, der die Neueinträge darin ausliest, verwendet werden, um einige iptables/ipfw/oderandere-Befehle auszuführen.

Beispiel für iptables bei Linux:

Zu Beginn (firewall setup) initialisiere die SYN-chain und füge sie in die INPUT-chain ein, und zwar nur für SYN TCP Pakete.
iptables -N SYN
iptables -I INPUT -p tcp --dport 4661 --syn -j SYN

Nach Neustart des eservers oder des Daemons die Regel in der SYN-chain löschen:
iptables -F SYN
Dann, wenn ein 'DENY' vom Server verschickt wurde, eine Regel in die chain einfügen:
iptables -I SYN -s the_IP -j DROP
Wenn ein 'ACCEPT' vom Server gesendet wurde, die Regel entfernen:
iptables -D SYN -s theIP -j DROP
Man kann auch clevere iptables-Module, wie RECENT, ausprobieren, die bei höherer IP-Anzahl schneller sind. (Hashtable statt Liste).

hardLimit (integer)
Wenn ein Client versucht mehr Dateien freizugeben als im hardlimit erlaubt sind, wird der Server ihn trennen ( bevor er die ganze Liste von ihm empfängt). Das ist so um mehr Bandbreite einzusparen, weil einige faule Leute íhre ganze Festplatte freigeben. Vorgabe: 4000 .
Schauen Sie in die softLimit Parameterbeschreibung.

http_trace (boolsch) (Neu in eserverversion 16.50)
Wenn auf true gesetzt, schreibt der eServer HTTP-Anfragen in das File "loghttp". Standard = false

hugefile (string = Zeichenkette)
(Linux 2.5/2.6 ausschließlich) : Der Pfad der Datei innerhalb des hugetlbfs-Systems. Dieses erlaubt dem Server 4Mo Seiten zu  belegen, um hardwarebedingte TLB Verluste zu reduzieren. Die normale Seitengröße auf einem ia32 ist 4kbyte, welche viel zu wenig für ein Programm ist welches sehr viel Speicher nutzt.
Beipiel der Benutzung:
 
Überprüfen Sie ihre Kernelkonfiguration. Sie sollten haben:
CONFIG_HUGETLB_PAGE=y
CONFIG_HUGETLBFS=y
Dann können Sie hugetlbfs mounten : (in der Startdatei, gewöhnlich /etc/rc.d/rc.local)
mkdir /huge
mount -t hugetlbfs none /huge
echo 100 >/proc/sys/vm/nr_hugepages

Dann in der donkey.ini einfügen :
hugefile=/huge/eserver


Anmerkung : Bei HPUX, Solaris, Windows2003, versucht der Eserver automatisch große Seiten zu reservieren.
Bei Windows2003, muss das SE_LOCK_MEMORY Privileg durch den Benutzer gewährleistet sein, BEVOR er den Server startet. Wenn nicht wird der Server auf die Benutzung von normalem Speicher zurückgreifen (keine 4Mo große Seiten).

hugefile2 (string) Since 16.45, the HugeTlb pages may be used for the heap storage too. (linux 2.5/2.6 only) : The path of a file located in a hugetlbfs file system.

jigleIP (IP address)
Die IP Adresse von jigle um blacklisting zu vermeiden http://www.jigle.com/. Vorgabe: 62.2.249.5

listenIP (IP address)
Der Server kann die TCP Verbindungen einer bestimmten Adresse abhören, anstatt alle IP´s des Hosts.
Vorgabe: jede Adresse (0.0.0.0)

listen_backlog (integer)
Der abgehörte Backlog. Der Eserver hat einen sehr hohen Wert, ist aber geeignet für jeden Server geeignet. Sie können den Wert aber abändern. Vorgabe: 1024 .
Anmerkung: Bei Linux sollten Sie /proc/sys/net/ipv4/tcp_max_syn_backlog überprüfen: globales Systemlimit.

logFile (boolean)
Wenn true gesetzt ist speichert der Server alle Ereignisnachrichten in die "log" Datei die im selben Verzeichnis liegen wird. Vorgabe: false

login_timeout (integer)
Die Zeit in Sekunden, welche der Server mit dem Backfoortest wartet, um ihn dann erfolgreich auszuführen. Der Backdoortest ist eine bestehende Verbindung vom Server zum Clienten auf Port 4662, um zu checken, ob dieser eine HighID oder ein LOWID hat. Vorgabe: 20  

maxClients (integer)
Die maximale Anzahl von Benutzern auf diesem Server. Vorgabe: 1024

max_clients_per_ip (integer)
Begrenzt die Anzahl der Clients, die auf der gleichen IP reinkommen. - Standardwert = 12
Der Sinn dieses Parameters ist es, einige Würmer, Viren und Robots, die zu viele Verbindungen öffnen, vom Server fernzuhalten, um ihn nicht noch unnötig zu belegen.

max_frame_size (integer)
Wenn ein Client einen Rahmen (frame) mit mehr als in max_frame_size eingetragen ist sendet, dann trennt der Server die Verbindung zu ihm. Vorgabe: 250000

max_slimit_nb_cell (integer)
Dies begrenzt die maximale Anzahl von IP´s, die die slimitmodule verwalten können. Vorgabe: 262144

maxnozlib (integer)
Eine Neuerung, die in Version 16.44 eingeführt wurde. Erreicht die Anzahl der Clients den Höchstwert maxnozlib, können sich nur noch zlibunterstützende Clients einbuchen.
Vorgabe = 250000

max_string_size (integer)
Dieses ist die maximale Größe einer Zeichenkette. Einige Clients senden sehr lange Dateinamen. Die Server stutzen zu lange Zeichenketten. Vorgabe : 140

maxSearchCount (integer)
Dies ist die maximale Anzahl der Antworten die zurückgegeben werden , welche von einer Suchanfrage angefordert wurden (von einem verbundenen Clienten). Vorgabe: 200

maxSearchCountz (integer)
Das ist die maximale Anzahl der Antworten, welche eine Suchanfrage angefordert hat (verbundener zlib Client). Vorgabe: 300

maxUDPSearchCount (integer)
Dies ist die maximale Anzahl der Antworten, welche eine Suchanfrage angefordert hat ( von einem nicht verbundenen Clienten). Vorgabe: 20

maxVersion (integer)
Eine Clientsoftware hat eine Versionsnummer. Clients die eine Versionsnummer haben, die größer ist, als der Wert, der in maxVersion steht, können sich nicht einloggen. Vorgabe: 2000

maxservers (integer)
Legt die maximale Anzahl der Server fest, die der Server in seine Serverliste aufnehmen darf. Um sich vor Denial Of Service Attacken zu schützen. Vorgabe: 4096

maxstrangers (integer)
Zusammen mit dem nickcommunity Parameter genutzt. Nicht mehr als 'maxstrangers' Benutzer (fremde) die nicht der Gemeinschaft (Community) angehören sind berechtigt sich einzuloggen. Vorgabe: 1000000

minEVersion (integer)
Zusammen mit dem trackemule Feature genutzt. Die älteste Emuleversion die der Server erlaubt. Die Emuleversion ist ein Hexadezimalwert zwischen 00 und FF. Vorgabe: 0x24

minVersion (integer)
Eine Clientsoftware hat eine Versionsnummer. Clients, die eine Versionsnummer haben, die kleiner ist, als der Wert, der in minVersion steht, können sich nicht einloggen. Vorgabe: 59

minkeylength (integer)
Vorgabe = 3. Dies ist die Mindestlänge eines Schlüsselwortes. Der Server bildet Indexe aus den in den Dateinamen enthaltenen Schlüsselwörtern, um eine schnellere Suche durchführen zu könnnen.
Da Indexe viel RAM benötigen, kann der Server 16.44 kurze Worte ignorieren.

mmap_hint (integer)
Ein Hinweis für den Server um 4Mo Seiten im virtuellen Speicher zu reservieren. Vorgabe: 0 (no hint). Bei einer ia32 Linuxversion kann man mmap_hint=0x80000000 benutzen. Razorback benutzt 0x78000000 .

msgrandomport (boolean)
Einige Provider (ISPs) filtern Port 4662. Um den Usern zu helfen, besteht die Möglichkeit, sie darauf hinzuweisen, gegebenenfalls einen anderen Port als 4662 zu verwenden.
Bei der Einstellung msgrandomport=true verschickt der Server automatisch eine entsprechende Mitteilung an Clients, die den Standardport benutzen. In der Grundeinstellung für MsgRandomport lautet diese Meldung:
WARNING : Please try to use a random port instead of 4662, because a lot of ISP have filters on 4662 port. Any number between 80 and 65530 should be OK. Thanks
(zu deutsch:
WARNUNG: Bitte versuche, einen anderen Port als 4662 zu verwenden, weil viele Provider Port 4662 begrenzen. Irgendeine Portnummer zwischen 80 und 65530 sollte in Ordnung sein. Danke.)

name (string)
Der Name Ihres Servers, der an die Clients gesendet wird. Vorgabe = eserver 16.40

nbuserIP (IP address)
Der Server hat einen speziellen TCP Empfänger an einem Port welcher nbuser erlaubt Informationen zu sammeln. Standardmässig ist der Port an 127.0.0.1 (localhost) gebunden, sodaß sich nur ein lokaler nbuser zum Eserver verbinden kann. Sie können aber auch externen Zugriff erlauben.  Vorgabe = 127.0.0.1

nbuserport (integer)
Der Port des nbuser Empfängers. Siehe oben. Vorgabe = 5656

ncpus (integer)
Dieser Wert ist beim Start des Eservers belegt und gibt die Anzahl der CPU´s des Hosts an. Wird nicht wirklich von dem Programm benutzt. Siehe udpsearchers. Vorgabe = Anzahl der CPU´s des Hosts.

nickcommunity (string)
Bestimmt den string, den ein Benutzer in seinem Nicknamen haben muss, um sich überhaupt beim Eserver einloggen zu können. Wird zusammen mit maxstrangers verwendet. Vorgabe: kein Eintrag (öffentlicher Server)
Achtung: Der Eintrag des communitystrings muß in Kleinbuchstaben erfolgen, um wirksam zu werden!

nickname (string)
Wenn ein Backdoortest am Port 4662 des Clienten durchgeführt wird verkörpert der Eserver einen User. Dieser Parameter ist der Nickname des getäuschten Benutzers. Vorgabe: eserver

opIP (IP address) If the server operator wants to use a ed2k client and connect to his own server, he may have a problem because of a private IP. The opIP parameter asks the server to replace the client'IP by the listenIP/thisIP of the server. That way, when other client want to contact the operator, their incoming connections can be NATed to the operator.

noepoll (boolean)
(Nur Linux) Wenn auf true gesetzt dann benutzt der Server kein epoll Feature. Ich weise Sie streng darauf hin dieses NICHT zu machen, weil Ihre Linuxversion einen Fehler in dieser Funktion hat. Vorgabe = false
Bei Linux-2.4.21 oder Linux-2.4.22, können Sie den Patch von Davide Libenzi versuchen, um das epoll Feature hinzuzufügen.  

noudpslowsearches (boolean)
Sie können den Zugriff auf die komplexe Suchfunktion sperren welche von abgelehnten Benutzern stammen. (Clients oder anderen Servern). Komplexe Suchen scannen die Komplette Dateiliste, anstatt den Schlüsselwortindex (keywords) zu benutzen. Vorgabe = false

ping_delay (integer)
Der Server sendet periodisch ein Frame, welches "ping" aufruft und die Anzahl der Benutzer und Dateien, die er hat enthält, und dieses an alle anderen seiner Benutzer sendet. Das ist zum überprüfen von jedem lebendigen TCP Sockel ( Benutzer die ihre Computer ausschalten ). ping_delay ist die maximale Verzögerung zwischen Suchpings. Vorgabe = 600

port (integer)
Das ist der vom Server verwendete TCP Port. Vorgabe = 4661

public (boolean)
Wenn auf true gesetzt, kündigt sich der Server selbst als öffentlicher (public) Server bei anderen Servern an. Dieser Parameter hatte in der Vergangenheit noch seine Berechtigung, ist aber heutzutage nutzlos, weil der Client automatisch Server in seine Liste aufnehmen kann, sobald sich ein anderer Client zu ihm verbindet. Vorgabe = false

quickack (boolean)
Wenn auf true gesetzt, verwendet der Server die setsockopt(TCP_QUICKACK), um den Linuxkernel zu veranlassen, die TCP ACK-Pakete zu verzögern, statt in den quickackmodus zu gehen. Dies sollte Bandbreite sparen.
Vorgabe = true.

search_trace (boolean)
Wenn auf true gesetzt, listet der Server in der/dem console/log die gehandelten Suchanfragen auf.
Vorgabe = false.

seedIP (IP address)
Die IP Adresse eines anderen Servers. Dies wird benutzt wenn keine "serverList.met" vorhanden ist (oder wenn diese leer ist) um sich eine Serverliste zu beschaffen. Vorgabe: leer  (nix)

seedPort (integer)
Der Port des Seed Server. Vorgabe= 4661

slab Gibt Ihnen weitere (evtl. nützliche) Infos über einige Standardeinstellungen und aktuell benutzte Werte einiger wichtiger Parameter.

slimit_tableSize (integer)
Die Größe der Hashtabelle, welche im Slimitmodul benutzt wird. Vorgabe = 4021

softLimit (integer)
Wenn ein Client versucht mehr Dateien als im softLimit angegeben freizugeben, sendet ihm der Server eine WARNnachricht und ignoriert seine anderen Dateien. Vorgabe: 1000
Siehe auch hardLimitParameterbeschreibung.

tableSize (integer)
Die Größe der Hashtabelle, welche zum speichern der Dateinamen verwendet wird. Sie sollten den Wert aber nicht setzen, weil der eserver den Wert bei Bedarf selbsttätig dynamisch erhöht.

tcpthreads (integer)
Die Anzahl der worker-threads, um tcp-Anfragen (verbundene Clients) zu verarbeiten. Siehe auch ncpus. Kann dynamisch in der eServerkonsole geändert werden.
Vorgabe = Anzahl der CPUs des Hosts.

tcp_rbuffersize (integer)
Der TCP/IP Stack Ihrer Maschine reserviert für jeden Sockel eine maximale Größe um eingehende Nachrichten zu speichern. Sie können den Wert auch ändern.
Vorgabe = 0 (Systemstandard)
(BeiLinux überprüfen Sie bitte /proc/sys/net/ipv4/tcp_rmem)

tcp_xbuffersize (integer)
Der TCP/IP Stack ihrer Maschine reserviert für jeden Sockel eine maximale Größe um ausgehende Nachrichten zu speichern. Sie können den Wert auch ändern.
Vorgabe = 0 (Systemstandard)
(Bei Linux überprüfen Sie bitte /proc/sys/net/ipv4/tcp_wmem)

thisIP (IP address)
Dies ist die IP des Servers.
Anmerkung: Der Eserver kann die IP nicht automatisch finden! Sie MÜSSEN die korrekte IP eintragen, wenn Ihr Server öffentlich ist.

threads (integer)
Überholte Parameter. Die Anzahl der Threads (Fäden) im Eserver ist fixiert.
Ein Thread empfängt UDP Anfragen.
Ein oder zwei Threads handhaben UDP Suchen. (siehe udpsearchers)
Ein Thread akzeptiert neu eingehende Verbindungen.
Ein Thread handhabt die Loginphase von Clients.
Ein Thread übernimmt den Konsolendialog.
Ein Thread bewältigt den gesamten TCP Traffic (Anfragen von verbundenen Clients)
Ein Thread handhabt die "nbuser" Anfragen.

trackbademule (integer)
Eine Bitmaske von flags. Siehe minEVersion Parameter. Vorgabe = 30

trackemule (integer)
Wenn auf 1 gesetzt spürt Eserver die Emuleverion auf. Standard = 1

type (string)
Zwei Werte sind möglich :
key (Standard) : Der Server macht Indexe aus den Schlüsselwörtern der Dateinamen. Suchen sind schnell.
substring : Der Server nutzt keine Indexe. Suchen sind langsamer.

udp_rbuffersize (integer)
Der UDP/IP Stack ihrer Maschine reserviert für jeden Sockel eine maximale Größe, um eingehende Nachrichten zu speichern. Sie können die Größe verändern. Vorgabe = 0 ( Systemstandard).

udp_xbuffersize (integer)
Der UDP/IP Stack ihrer Maschine reserviert für jeden Sockel eine maximale Größe, um ausgehende Nachrichten zu speichern. Sie können die Größe verändern. Vorgabe = 0 ( Systemstandard).

udpsearchers (integer)
Die Anzahl der Threads, die den UDPAnfragen zugeordnet werden. Vorgabe : 1 Einzelprozessormaschine, 2 bei SMP Maschinen.

verbose (boolean)
Wenn auf true gesetzt, logt der Server einige Nachrichten mit ( z.B. Client login/logout). Vorgabe = false

warnfakes (integer) (Neu in 16.50)
Immer, wenn ein Client eine Datei anbietet, die in der fakes.txt steht, schickt der Server eine Warnmeldung mit dem Namen des FakeFiles an den User. Dieser Parameter verwaltet die Anzahl solcher Meldungen. Standard 0.

welcome[#] (string)
Der Begrüßungstext. - Das sind die Nachrichten, die vom Server an jeden Client ausgegeben werden, nachdem er sich eingeloggt hat.
Zum Beispiel:

welcome[0]=Willkommen auf meinem Server.
welcome[1]=Sie sind nun mit dem eD2k Netzwerk verbunden.
welcome[2]=Viel Erfolg!

Neu in 16.50: Falls ip-to-country.csv verwendet wird, prüft der Server, ob im Serververzeichnis eine welcome.xx existiert, (wobei xx der Ländercode des betreffenden Clients ist.) Falls ja, wird deren Inhalt statt welcome [] aus der donkey.ini ausgegeben.
Seit Einführung der ip-to-country.csv-Unterstützung hat man dadurch die Möglichkeit, den Clients angepaßte Begrüßungstexte in ihrer jeweiligen Landessprache senden zu lassen.
Man erstellt sich dazu für jede gewünschte Sprache eine lokalisierte Textdatei namens "welcome.xx" im Serververzeichnis, wobei xx durch das jeweiligs zutreffende zweistellige Länderkürzel aus der ip-to-country.csv zu ersetzen ist.
Für einen deutschsprachigen Begrüßungstext wäre dies demnach die Textdatei "welcome.de". Wird eine für den einbuchenden Client passende, länderspezifische Datei im Serververzeichnis gefunden, so gibt der Server den darin befindlichen Text aus. Wird keine für die IP des einbuchenden Clients passende welcome.xx gefunden, so wird stattdessen wie gewohnt der Standardwelcometext aus der donkey.ini gesendet.

zlib_complevel (integer)
Kompressionslevel welchen der Server gibt. Eine Ganzzahl zwischen 0 (keine Kompr.) und 9 (max. Kompr.). Vorgabe = 9

zlib_enable (boolean)
Erlaubt dem Server zlib Kompression mit eingehenden Clients zu benutzen. Vorgabe = true

Linux Kerneltuning:

Bei großen Servern nicht vergessen, /proc/sys/fs/file-max. zu erhöhen (Vorgabe =  8192).
Sie können diese Zeile an das Ende von /etc/sysctl.conf anhängen (oder wenn sie schon existiert, dann abändern):
fs.file-max=16384
Sie können stattdessen auch echo 16384 > /proc/sys/fs/file-max eingeben. (Allerdings geht der Wert dann nach einem Reboot verloren.)

Bei Linux 2.2 Maschinen bitte nicht vergessen, die /proc/sys/net/ipv4/route/max_size abzuändern, weil ein zu kleiner Wert dort steht und einige Probleme verursachen kann.
echo 32768 > /proc/sys/net/ipv4/route/max_size
Sie sollten ebenfalls die Linux 2.2 VM Einstellungen abändern :
echo "1024 2048 4096" > /proc/sys/vm/freepages
Linux 2.2 hat ein Limit im poll() System Aufruf : Weil es kmalloc(nbhandles*8) Kerneldienst nutzt, es hat eine Begrenzung auf 16384 Dateien die es handeln kann. Also: Ein Eserver, der auf Linux 2.2 läuft kann nicht mehr als 16300 Benutzer haben.

Ein letzter Hinweis noch: Wir empfehlen, das Programm mit einem Skript script.sh zu starten: Es nutzt ulimit -n 8192 um die Anzahl der Dateien, die ein Prozess öffen kann, zu verändern. Wenn Sie einen Server für 10000 Benutzer planen, verändern Sie den Wert auf 16384!

Benutzer, die ihren Eserver als normaler Benutzer laufen lassen wollen (nicht als root), sollten in /etc/security/limits.conf diese Zeilen einfügen:

* soft nofile 32768
* hard nofile 32768

Hinweise bezüglich anderer Betriebssysteme:
Tru64 Unix 5.1 : limit von 65536 file descriptor per Prozess: Ein Server kann nicht mehr als 64k users verwalten.

FreeBSD: prüfe die Limits mit dem Befehl sysctl
# sysctl kern.maxfiles
kern.maxfiles: 5000
# sysctl kern.maxfiles=65000
kern.maxfiles: 5000 -> 65000
# sysctl kern.maxfilesperproc
kern.maxfilesperproc: 4200
# sysctl kern.maxfilesperproc=65000
kern.maxfilesperproc: 4200 -> 65000

EMail an lugdunum

Hier geht es zu Norman´s Seite:
Besuch doch mal www.Rechenkraft.net

Hier geht es zum eD2k-serverboard:
http://www.ed2k-serverboard.de/