Bearbeiten · Veränderungen zeigen · Druckansicht ·

Wir wollen uns nun der Installation und der Konfiguration eines IRC-Servers (Wir benutzen den UnrealIRCd in der Version 3.2.6, Homepage, stand 21.02.07) widmen, solltest du nicht wissen, was ein IRC-Server ist, dann sorry, aber: Du bist hier falsch!

Der Sinn eines IRC-Servers ist klar, man könnte ihn auch als Chatserver bezeichnen. Viele Leute haben die Möglichkeit sich per IRC-Client (mIRC, X-Chat, und andere) auf deinem Server einzuloggen und in Echtzeit miteinander zu reden. Du hast nun hier die Möglichkeit deinen eigenen Server aufzumachen, just for fun, für deine Freunde oder deine Schule, oder vielleicht für deinen Clan, der dort regelmäßig Meetings abhält oder einfach dort rumidlet ;-)

Aber fangen wir an, was brauchen wir? Um es kurz zu machen, wir benötigen eine Unix/Linux-Shell (die mindestens einen Hintergrundprozess erlaubt.. Die meisten erlauben dies, wenn nicht anders in einem Vertrag o. Ä. beschrieben!!), einen Compiler (am besten gcc, sollte jede Shell von vornherein mitbringen), make und das ganze Zeug.

Okay, wir stürzen uns mal direkt ins Gewühl. Wir loggen uns auf unserer Shell ein, dabei ist zu beachten, dass wir zur Installation und zum Laufenlassen eines Chat-Servers niemals, und wenn ich niemals sage, dann meine ich auch niemals, den root-Benutzer einer jeden Linux-Kiste benutzen. "Ich wollt nur mal testen!!" ist genau so eine schlechte Entschuldigung! Solltet ihr root benutzen seid ihr nicht nur leichtsinnig (da jemand, der Kontrolle über den IRC-Server erlangt, auch Kontrolle über euer GANZES System haben würde) sondern überzeugt den Rest der Welt auch von eurer Dummheit.. Ich weiß es klingt hart und fies, aber manche lernen es nie und fallen dann ganz bös auf die Fresse... ;-)

So, genug gemeckert.. Wir loggen uns mit einem Login ein, in meinem Fall heißt mein Username hendrik, nach dem Login befinden wir uns in meinem Homeverzeichnis /home/hendrik/ (bei dir heißt es natürlich anders.. Herausfinden kannst du es, indem du "cd ~ && pwd" eingibst) ... Wir legen gleich mit der Installation und den einzelnen Arbeitsschritten los. Bevor du aber hier blind die Befehle befolgst bitte ich dich um zwei Dinge: Erstens, bitte schalt dein Hirn ein, zweitens, bevor du das Quellcode-Archiv herunterlädst, geh doch mal bitte auf der Homepage von UnrealIRCd vorbei und schau nach, ob die in diesem Tutorial verwendete Version die Aktuellste ist. Wenn nicht lädst du dir natürlich die aktualisierte Version herunter und arbeitest mit ihr entsprechend weiter! Los gehts:

Den Quellcode herunterladen:
$> wget http://www.unrealircd.com/downloads/Unreal3.2.8.1.tar.gz

Den Quellcode entpacken, das Quellcodeverzeichnis ist jetzt Unreal3.2/:
$> tar xfz Unreal3.2.8.1.tar.gz

Wir wechseln in das Verzeichnis mit dem Quellcode drin:
$> cd Unreal3.2

Wir starten sofort den Konfigurationsvorgang, der für uns die Einstellung
der speziellen Optionen zum Kompilieren des Quellcodes vornimmt..:
$> ./Config

Okay, jetzt wirds stressig, dieses ./Config-Programm (eigentlich ist es ein Script) fragt uns jetzt einige Einstellungsoptionen für den Quellcode ab.. Beispielsweise werden wir gleich gefragt ob wir den Traffic verschlüsseln wollen, usw.. Alle Fragen, bei denen ihr hinter dem "->" keine Antwort finden könnt, werden durch einen einfachen Druck auf die ENTER-Taste bestätigt. Damit übernehmt ihr den Standard-Wert, der in der eckigen Klammer steht!! Andernfalls gebt ihr einfach das Zeug ein, was für euren Server zutreffen soll oder muss oder was dort steht. Achtet darauf, dass /home/hendrik/ nur mein Verzeichnis ist, nicht eures! Also, wie gesagt, Hirn einschalten! ;-) Und los:

Do you have an insecure operating system and therefore want to use the server anti-spoof protection?
[No] -> Yes


What directory are all the server configuration files in?
[/home/hendrik/Unreal3.2] ->
(Achtung!! Hier sollte dein Verzeichnis stehen!)


What is the path to the ircd binary including the name of the binary?
[/home/hendrik/Unreal3.2/src/ircd] ->


Would you like to compile as a hub or as a leaf?
Type Hub to select hub and Leaf to select leaf.
[Hub] ->


What is the hostname of the server running your IRCd?
[hendrix.mine.nu] ->

(Achtung, hier sollte der genaue Wortlaut deines Hostnames rein,
du erfährst diesen Wert, wenn du auf deiner Shell "echo $HOSTNAME" eingibst!)


What should the default permissions for your configuration files be? (Set this to 0 to disable)
It is strongly recommended that you use 0600 to prevent unwanted reading of the file
[0600] ->


Do you want to support SSL (Secure Sockets Layer) connections?
[No] -> yes
(Achtung, dieser Teil ist wichtig, solltest du es erwägen in Zukunft eine verschlüsselte
Verbindung auf deinem Server anbieten zu wollen antwortest du hier mit "yes", andernfalls
mit "no"!)


If you know the path to OpenSSL on your system, enter it here. If not leave this blank
[] ->
(leer lassen um Config selbst danach suchen zu lassen. Frag deinen Systemadmin, ob und
wo die OpenSSL-Bibliothek installiert wurde, wenn sie nicht installiert ist, kannst du
keine Verschlüsselung verwenden und es kann zu Fehlern kommen, da du vorhin mit "yes"
geantwortet hast!)


Do you want to enable IPv6 support?
[No] ->


Do you want to enable ziplinks support?
[No] -> yes
(Ziplinks bedeutet, dass die Verbindung zwischen zwei Unreal-Servern (wenn sie
miteinander vernetzt wurden) komprimiert wird. Dies spart Traffic)


If you know the path to zlib on your system, enter it here. If not leave this blank
[] ->
(Hier gilt das selbe wie oben bei der OpenSSL-Library, leer lassen um Config suchen
zu lassen oder Pfad selbstständig eintragen!)


Do you want to enable remote includes?
[No] ->


Do you want to enable prefixes for chanadmin and chanowner?
This will give +a the & prefix and ~ for +q (just like +o is @) Supported by the
major clients (mIRC, xchat, epic, eggdrop, Klient, PJIRC, etc.) with the notable
exceptions of irssi, KVIrc and CGI:IRC.
This feature should be enabled/disabled network-wide.
[No] -> yes


What listen() backlog value do you wish to use? Some older servers have
problems with more than 5, others work fine with many more.
[5] ->


How far back do you want to keep the nickname history?
[2000] ->


What is the maximum sendq length you wish to have?
[3000000] ->


How many buffer pools would you like? This number will be multiplied by MAXSENDQLENGTH.
[18] ->


How many file descriptors (or sockets) can the IRCd use?
[1024] ->


Would you like any more parameters to configure?
Write them here:

Okay, nun läuft der eigentliche Konfigurationsprozess, der Quellcode wird mit den speziellen Optionen versehen, damit nachher beim eigentlichen Übersetzen des Quellcodes in Maschinensprache alles glatt läuft! Okay, jetzt noch schnell dies: Wenn du oben bei der SSL-Frage mit "yes" geantwortet hast, dann werden dich gleich einige Fragen erwarten. Die Antworten hierdrauf werden benötigt um ein sogenanntes Zertifikat für deine Verschlüsselung zu erstellen.. Weiteres dazu ist nicht von besonderem Interesse, wichtig ist allerdings, dass du die Fragen richtig und korrekt beantworten solltest (die Location DEINES Servers, DEINE Domain, etc...)! Fragen, die du nicht beantworten möchtest oder kannst, kannst du mit einem einfachen "." (Punkt) beantworten..

Generating certificate request ..
/usr/bin/openssl req -new \
-config src/ssl.cnf -out server.req.pem \
-keyout server.key.pem -nodes
Using configuration from src/ssl.cnf
Generating a 1024 bit RSA private key
.++++++
.........++++++
writing new private key to 'server.key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name [US]:DE
State/Province [New York]:.
Locality Name (eg, city) []:MeinOrt
Organization Name (eg, company) [IRC geeks]:.
Organizational Unit Name (eg, section) [IRCd]:GA GA Chat-Netz
Common Name (Full domain of your server) []:irc.irc-guide.de
Generating self-signed certificate ..

Wenn du fertig bist, dann kannst du dies mit [Enter] bestätigen! Jetzt sollten wir bald wieder zu unserem Eingabeprompt zurückgekommen sein, wir untersuchen den Output auf Fehler, wenn wir nichts finden können steht uns nichts weiter im Wege, wir können num mit dem Kompilieren des Quelltextes beginnen:

$> make

Hoffentlich gibt es jetzt keinen Fehler beim Kompilieren, wenn doch, solltet ihr eventuell mal eure Einstellungen beim ./Config überprüfen, wenn alles geklappt hat, sollte euch folgende Nachricht angezeigt werden:

 __________________________________________________
| Compile is now complete.                         |
| You should now read the documentation and learn  |
| how to configure your IRCd.                      |
|                                                  |
| If you really like UnrealIRCd, and would like to |
| make a donation, please read the Donation file in|
| this archive. :)                                 |
|                                                  |
| Thanks for using Unreal IRCd! If you are in need |
| for any kind of help regarding the IRCd please   |
| read the Unreal.nfo file.                        |
|__________________________________________________|

So, damit ist das Kompilieren des Programmes abgeschlossen, man würde es prinzipiell mit "./unreal start" starten können. Es ist jedoch noch nichts eingestellt, wir müssen uns erst noch bemühen dem IRC-Server zu sagen, was er machen soll!

Der Unrealircd holt sich alle seine Informationen aus einer Einstellungsdatei namens unrealircd.conf, diese müssen wir aber erst erstellen. Ich habe mir mal die Freiheit genommen um euch eine Beispieldatei zu erstellen, die ihr dann übernehmen könnt.

ABER natürlich müsst ihr diese Datei an euren Server anpassen, sonst geht nix!!!

Diese Beispielskonfigurationsdatei findet ihr im Artikel UnrealIRCd Beispielkonfigurationsdatei

Jetzt sind wir fast fertig.. Wir müssen nur noch dafür sorgen, dass die Message-of-the-day- und Rules-Dateien existieren, das erledigen wir schnell mit:

$> touch motd.conf
$> touch rules.conf

So.. Eigentlich sind wir jetzt mehr oder weniger fertig, jetzt können wir versuchen den Unrealircd zu starten:

$> ./unreal start

Starting UnrealIRCd
 _   _                      _ ___________  _____     _
| | | |                    | |_   _| ___ \/  __ \   | |
| | | |_ __  _ __ ___  __ _| | | | | |_/ /| /  \/ __| |
| | | | '_ \| '__/ _ \/ _` | | | | |    / | |    / _` |
| |_| | | | | | |  __/ (_| | |_| |_| |\ \ | \__/\ (_| |
 \___/|_| |_|_|  \___|\__,_|_|\___/\_| \_| \____/\__,_|
                           v3.2.1
                     using OpenSSL 0.9.6c 21 dec 2001

                     using zlib 1.1.3

* Loading IRCd configuration ..
* Configuration loaded without any problems ..
* Loading tunefile..
* Initializing SSL.
* Dynamic configuration initialized .. booting IRCd.
---------------------------------------------------------------------

Wenn das bei euch auch steht, dann läuft der Server erstmal ohne Probleme. Jetzt könnt ihr mal versuchen zum Server zu verbinden:

/Server die-server-IP-oder.hostname.de

Geht's? Na dann: Herzlichen Glückwunsch! Geht's nicht? Dann check mal die Fehlermeldung.. Steht dort ein [error] beim Starten? Kannst du den vielleicht selbst lösen? Meistens ist es ein Tippfehler in der unrealircd.conf, da steht auch in welcher Zeile ihr suchen müsst. Wenn nicht, ist dann hier im Tutorial ein Fehler? (Wenn ja bitte Forum melden oder den Fehler gleich selbst berichtigen!)

Bei sonstigen Fragen und Unklarheiten bitte im Forum rumfragen.

Viel Spaß mit dem eigenen Server!

Bearbeiten · Veränderungen zeigen · Druckansicht ·
Page last modified on July 05, 2010, at 12:18 AM