jcmick

http://jcmick.free.fr/

Counter Strike 1.6 Linux (A11- Créer son serveur)

Installation de GNU /Linux

 Que ce soit pour la Mandrake ou la Debian, je ne vais malheureusement pas pouvoir détailler l’ensemble de l’installation. Globalement les étapes sont toujours les mêmes :

- Partitionnement du disque dur
- Choix des paquetages, décompression et installation de ceux-ci
- Configuration finale : choix du mot de passe administrateur et création de comptes annexes

Attention tout de même , il faut près de 1.5 Go au serveur dédié pour fonctionner, d’autre part, il se décompresse par défaut dans la partition qui accueille le point de montage /usr, veuillez donc laisser au moins 2 Go pour avoir une marge de manoeuvre en cas d’erreur ...

Pour l’installation d’une Debian, je vous conseille l’excellent didacticiel d’Alexis Delattre :

http://www.via.ecp.fr/~alexis/formation-linux

Installation du serveur Dédié HLDS

La première étape consiste à le télécharger :

wget ftp://ftp.freenet.de/pub/4players/halflife/server/linux/hlds_l_1120_full.bin

Passez ensuite root :

su
Password:

votrepass

Il faut ensuite le rendre éxecutable pour pouvoir le décompresser et aussi créer un répertoire d’installation par défaut sans quoi vous vous verrez recevoir une erreur à l’installation:

mkdir /usr/steam

création du répertoire

chmod +x hlds_l_1120_full.bin

passer le en executable (flag x)

./hlds_l_1120_full.bin

tapez yes

Vous devez attendre que l’archive se décompresse dans le répertoire : /usr/steam

extracting /usr/steam/hlds_l_1120_full.tgz...done

Ensuite décompressez l’archive:

cd /usr/steam
tar zxvf hlds_l_1120_full.tgz

Une fois que c’est terminé, déplacez votre dossier vers une partition qui possède plus d’espace libre, si vraiment vous avez peur que ça pose un problème plus tard, à priori, sauf si vous rajoutez des cartes sur votre serveur, il y a peu de chance qu’il "gonfle".

Ex :

mv /usr/steam/hlds_l /home/

C’est un exemple comme un autre.

Configuration firewall et routeur

Si vous souhaitez forwarder votre serveur counter-strike. Soit vous avez un routeur hardware (configuration par interface web), dans ce cas, notez bien les ports suivants à faire suivre:

En entrée et sortie

UDP/1200

UDP/27000 à 27015 (si le serveur tourne sur ce port)

TCP/27030 à 27039

Faites bien attention, car ces ports ont été changés depuis Steam

La plupart des routeurs, ont par défaut tous les ports en sortie d’ouverts

Si vous utilisez un routeur qui est une machine Linux (la syntaxe BSD ne doit pas être très différente, modifiez vos règles iptables de la manière suivante :

Attention, bien veiller à ce que les ports suivants soient ouverts en entrée/sortie

$­­­­EXTINF = Votre interface externe (Internet)
$­­­­INTINF = Votre interface au réseau local (LAN, WLAN)

iptables -A INPUT -i $­­­­EXTINF-p udp --dport 1200 -j ACCEPT

iptables -A OUTPUT -o $­­­­EXTINF -p udp --sport 1200 -j ACCEPT

iptables -A INPUT -i $­­­­EXTINF -p udp --dport 27000:27015 -j ACCEPT

iptables -A OUTPUT -o $­­­­EXTINF -p udp 27000:27015 -j ACCEPT

Si le serveur tourne sur le 27015

iptables -A OUTPUT -p tcp --sport 27030:27039 -j ACCEPT

iptables -A INPUT -p tcp --dport 27030:27039 -j ACCEPT

si vous souhaitez ne pas faire de filtrage en sortie, tapez :

iptables -A OUTPUT -o $­­­­EXTINF -p tcp -j ACCEPT

iptables -A OUTPUT -o $­­­­EXTINF -p udp -j ACCEPT

Ces règles sont valables pour un serveur qui est lui même passerelle vers internet. Pour un routeur, il faut rajouter les lignes de port forwarding (Destination Network Address Translation)suivantes:

IP_SERVEUR = "Adresse IP du serveur"

iptables -t nat -A PREROUTING -p udp --dport 1200

-j DNAT --to-destination $­­­­IP_SERVEUR:1200

iptables -t nat -A PREROUTING -p udp --dport 27000:27039 -j DNAT
--to-destination $­­­­IP_SERVEUR:27000:27039

iptables -t nat -A PREROUTING -p tcp --dport 27000:27039 -j DNAT
--to-destination $­­­­IP_SERVEUR:27000:27039

L’avantage énorme de forwarder un serveur, c’est qu’on est pas obligé d’utiliser les ports ouverts sur le routeur et de le faire correspondre avec les ports ouverts sur le serveur de jeux. Par exemple, si le routeur n’autorise que le port 80 d’ouvert, il est tout à fait possible d’héberger un serveur de jeux tournant (du côté internet) sur le port 80. (En fait il va manquer des ports pour l’interrogation via les serveurs d’authentification, mais il est possible qu’il soit joignable.

Haute disponibilité

On peut aussi, en changeant le paramètre IP_SERVEUR basculer facilement d’un serveur à un autre en cas de panne, de réparation ... On peut même le faire d’une manière dynamique : si le serveur ne répond plus au ping, alors le paramètre IP_SERVER change pour une IP où un serveur de secours fonctionne. Les règles iptables sont ensuite redémarrées instantanément. Ca s’appelle du Fail Over Services, mais c’est un peu plus compliqué.

Voici une idée pour le faire :

#! /bin/sh
if test $­­­­(telnet $­­­­IP_SERVEUR 27015 < /dev/zero 2> /dev/null | grep -c
Connected) -eq 0; then
    iptables -t nat -A PREROUTING -p udp --dport 1200

-j DNAT --to-destination $­­­­IP_SERVEUR2:1200

iptables -t nat -A PREROUTING -p udp --dport 27000:27039 -j DNAT
--to-destination $­­­­IP_SERVEUR2:27000:27039

iptables -t nat -A PREROUTING -p tcp --dport 27000:27039 -j DNAT
--to-destination $­­­­IP_SERVEUR2:27000:27039
fi

Nous allons effectuer à présent les manipulations suivantes :

Création d’un compte FTP & Shell qui peut lancer et vous permettre d’uploader vos fichiers de configuration et vos maps

Installation du serveur Samba pour pouvoir modifier depuis le voisinage réseau Windows les fichiers de configuration

Création du compte

adduser hlds

Choisissez un mot de passe, répetez le. Ensuite il faut donner accès au répertoire HLDS Linux :

chown -R hlds /usr/steam/hlds_l
chmod -R 755 /usr/steam/hlds_l
ln -s /usr/steam/hlds_l /home/hlds/hlds_l
chown -R hlds /home/hlds/hlds_l
chmod -R 755 /home/hlds/hlds_l

Note: les répertoires ont été passés en lecture/écriture/execution pour l’utilisateur hlds et en lecture/écriture pour les autres. Cela afin qu’ils soient accessibles depuis Samba

Si vous avez un serveur FTP (ProFTPd d’installé, vous pourrez vous en servir pour uploader vos fichiers de configuration en vous loggant en tant que :

ftp://hlds:votrepass@ipserveur/hlds_l

Maintenant nous allons configuré le dossier sous Samba, pour qu’il soit accessible depuis le voisinage réseau

Editez le fichier de configuration

vim /etc/samba/smb.conf

Et insérez-y ces lignes de configuration :

[hlds]

comment = Serveur dédié HLDS Linux

path = /usr/steam/hlds_l

guest ok = yes

browseable = yes

writeable = yes

Sauvegardez et quittez, puis relancez le démon Samba

/etc/init.d/samba restart

Mise à jour du serveur Dédié

Les serveurs de Valve, grâce à la toute nouvelle et performante plate-forme Steam (oui oui je tartine pas mal) vous permettent de faire des mises à jour. La première est manuelle, les autres seront automatiques :)

/usr/steam/hlds_l/steam -update utilisateur@adresse ****** Y

La syntaxe de mise à jouer à été modifiée dans les versions suivantes de steam, voir la crontab

1ere mise à jour

Checking bootstrapper version ...

Getting version 4 of Steam HLDS Update Tool

Downloading. . . . . . . . . . .

Steam Linux Client updated, please retry the command

2ème mise à jour

Checking bootstrapper version ...

Updating Installation

Logging in as 'nkvd@nkvd.net'

Updating 'Linux Server Engine' from version 0 to version 7

Downloading: /usr/steam/hlds_lcore_i386.so

Downloading: /usr/steam/hlds_lengine_amd.so

Downloading: /usr/steam/hlds_lengine_amd64.so

Downloading: /usr/steam/hlds_lengine_i486.so

Downloading: /usr/steam/hlds_lengine_i686.so

Downloading: /usr/steam/hlds_lfilesystem_stdio_amd64.so

Downloading: /usr/steam/hlds_lfilesystem_stdio_i386.so

Downloading: /usr/steam/hlds_lhlds_amd

Downloading: /usr/steam/hlds_lhlds_amd64

Downloading: /usr/steam/hlds_lhlds_i486

Downloading: /usr/steam/hlds_lhlds_i686

Downloading: /usr/steam/hlds_lhltv

Downloading: /usr/steam/hlds_llibSteamValidateUserIDTickets_amd64.so

Downloading: /usr/steam/hlds_llibSteamValidateUserIDTickets_i386.so

Downloading: /usr/steam/hlds_lproxy_i386.so


Updating 'HL base content' from version 0 to version 4

Downloading: /usr/steam/hlds_lvalvedllshl.dll

Downloading: /usr/steam/hlds_lvalvedllshl_amd64.so            
                                                    Downloading: /usr/steam/hlds_lvalvedllshl_i386.so

Downloading: /usr/steam/hlds_lvalveliblist.gam


Updating 'cstrike content' from version 0 to version 7

Downloading: /usr/steam/hlds_lcstrikecl_dllsclient.dll

Downloading: /usr/steam/hlds_lcstrikedllscs_amd64.so

Downloading: /usr/steam/hlds_lcstrikedllscs_i386.so

Downloading: /usr/steam/hlds_lcstrikedllsmp.dll

Downloading: /usr/steam/hlds_lcstrikesoundeventsenemy_died.wav

Downloading: /usr/steam/hlds_lcstrikesoundeventsfriend_died.wav

Downloading: /usr/steam/hlds_lcstrikesoundeventstask_complete.wav

Downloading: /usr/steam/hlds_lcstrikesoundeventstutor_msg.wav

Downloading: /usr/steam/hlds_lcstrikesprites640hud7.spr

Downloading: /usr/steam/hlds_lcstrikespritesshadow_circle.spr

Downloading: /usr/steam/hlds_lcstrikeautobuy.txt

Downloading: /usr/steam/hlds_lcstrikerebuy.txt

Downloading: /usr/steam/hlds_lcstrikespectcammenu.txt

Downloading: /usr/steam/hlds_lcstrikesteam.inf

Downloading: /usr/steam/hlds_lcstriketitles.txt

HLDS installation up to date

Ensuite nous ferons les mises à jour tous les 2 jours par exemple :

crontab -e

* * */2 * * /usr/steam/hlds_l/steam -command update -game cstrike -dir /usr/steam/hlds_l -username utilisateur@adresse -password ****** remember_password

Premier lancement "test" du serveur

Tapez la commande suivante : /usr/steam/hlds_l/hlds_run -game cstrike +maxplayers 12 +map de_aztec

Auto detecting CPU

Using Pentium II Optimised binary.

Auto-restarting the server on crash


Console initialized.
scandir failed:/usr/steam/hlds_l/./valve/SAVE

scandir failed:/usr/steam/hlds_l/./platform/SAVE

Protocol version 47

Exe version 1.1.2.4/Stdio (cstrike)

Exe build: 14:14:09 Feb  4 2004 (2659)

STEAM Auth Server

couldn't exec language.cfg

Server IP address 10.44.1.34:27015

Downloading Security Module from Speakeasy.net ...

Completed downloading Security Module from Speakeasy.net

Server is in Secure Mode.

scandir failed:/usr/steam/hlds_l/./valve/SAVE

scandir failed:/usr/steam/hlds_l/./platform/SAVE

Server logging data to file logs/L0225000.log

L 02/25/2004 - 14:32:54: Log file started

(file "logs/L0225000.log") (game "cstrike")

(version "47/1.1.2.4/Stdio/2659")

couldn't exec listip.cfg

couldn't exec banned.cfg

Adding auth server 65.73.232.251:27040

Adding auth server 65.73.232.253:27040

Adding master server 207.173.177.11:27010

Adding master server 207.173.177.12:27010

L 02/25/2004 - 14:32:55: Server cvar "sv_region" = "255"

L 02/25/2004 - 14:33:03: World triggered "Round_Start"

Il est important de voir si la version est bien > à la 1.1.20 qui a été téléchargée.

Configuration du serveur

Ici nous commençons vraiment à nous occuper de la partie serveur de jeux.

Edition des paramètres du serveur

Le premier fichier à éditer est : server.cfg

Modifiez les paramètres comme suit :

// Use this file to configure your DEDICATED server.

// This config file is executed on server start.

// disable autoaim

sv_aim 0

// disable clients' ability to pause the server

pausable 0

// default server name. Change to "Bob's Server", etc.

hostname ".: Team #KV CS 1.6 - http://nkvd.net"

// maximum client movement speed

sv_maxspeed 320

// 20 minute timelimit

mp_timelimit 20

sv_cheats 0

mp_logmessages 1

log on

// load ban files

exec listip.cfg

exec banned.cfg

Modifiez également le fichier motd.txt

Comme nous sommes sous la CS 1.6 le MOTD (Message Of The Day) peut être écrit en mettant du HTML et du CSS

Par exemple ici je redirige le MOTD vers la page d’accueil du site de notre team (waoou !!)




Edition du fichier liblist.gam

Ce fichier est relativement important puisqu’il renseigne le serveur dédié sur la manière d’utiliser les modules (Dynamic Loadble Librairy ou Shared Objects)

vim /usr/steam/hlds_l/cstrike/liblist.gam

Repérez la ligne qui contient:

gamedll_linux "dlls/cs_i386.so"

et remplacez la par:

gamedll_linux "addons/metamod/dlls/metamod_i386.so"

Création du répertoire addons

cd /usr/steam/hlds_l/cstrike

mkdir addons

mkdir addons/metamod

mkdir addons/metamod/dlls

Téléchargez la dernière version de Metamod (1.17) pour Linux :

cd addons/metamod/dlls
wget http://metamod.org/dl/dlls/metamod_i386.so.gz
gunzip metamod_i386.so.gz
cd ..
vim plugins.ini

Appuyez sur la toucher insertion, puis tapez cette ligne

linux addons/amx/dlls/amxx_mm_i386.so
linux addons/hlguard/dlls/hlguard_mm_i586.so

Metamod est un meta mod. Plus généralement, du fait qu’il soit "méta", il vient au dessus des autres, c’est à dire qu’il fournit un langage pour écrire les autres modules : amx, statsme, hlguard.

Téléchargez la dernière version d’AMX Mod X

cd /usr/steam/hlds_l/cstrike
tar zxvf amxmodx-version-steam.tar.gz

L’arborescence d’AMX Mod X à quelque peu changé, mais globalement on s’y retrouve toujours:

 configs
-custom
-dlls
-documentation
-logs
-modules
-modules.ini
-plugins
-plugins.ini
-scripting

Détail de la configuration

Fichier configs/amxx.cfg

Ce fichier contient les paramètres globaux de configuration. Il n’y a que très peu de choses à modifier . Ci -dessous les lignes à modifier:

amx_default_access "z"

// Center typed colored messages (last parameter is a color in RRRGGGBBB format)

amx_imessage "Bienvenue sur %hostname%" "000255100"

amx_imessage "Serveur de la team #KVnhttp://nkvd.net" "000100255"

L’accès "z" signifie que les joueurs sont des utilisateurs normaux, c’est ce qu’il nous faut.