Контра под Линукс

Денис Колисниченко, dhsilabs@mail.ru

Как еще можно использовать твой домашний Линукс? Неужели ты просто его будешь показывать, когда кто-то приходит к тебе в гости: мол, смотри какой я хакер, у меня Линукс установлен :) Использовать Линукс просто для доступа к Интернету или в качестве печатной машинки – не интересно – зачем тогда Линукс нужно было устанавливать? У меня есть к тебе несколько предложений: домашний Линукс можно использовать как игровой сервер для какой-то сетевой игрушки, его также можно использовать как твое персональное хранилище файлов, то есть сделать его FTP-сервером и при наличии выделенного канала ты можешь получить доступ к твоим файлам из любой точки мира, где есть Интернет. Сегодня мы поговорим как раз о первом – как превратить Линукс из печатной машинки в сервер для игры Counter Strike. Что это тебе даст? Во- первых, твоя машина, которая обычно используется в роли сервера Counter Strike, когда ты играешь со своими соседями в эту игру уже не будет периодически подтормаживать. Ведь подумай: твоей бедной машинке приходится не только выполнять Counter Strike, но еще и обслуживать всех твоих соперников. А так у тебя будет выделенный сервер для игры – тебе еще и спасибо скажут. Конечно, играть тебе придется уже на другом компьютере, на котором будет установлена Windows.

Самое замечательное заключается в том, что с помощью Линукс и игрового сервера Counter Strike ты можешь дать второе дыхание своему старенькому компьютеру, а на новом запускать сам CounterStrike. Игровой сервер не требует какого-нибудь специфического железа и также он не требует ничего сверхъестественного от твоего железа.

Установка игрового сервера

Установку Линукс и настройку сети я описывать не буду – будем считать, что у тебя до этого все настроено и все работает. Чтобы убедиться в этом запустить программу ping и пропингуй какой-то компьютер. Если принг прошел, значит, сеть у тебя работает. А если нет??? Не паникуй: может, тот компьютер, который ты пингуешь просто выключен. Проверь это. Проверяется очень просто - пропингуй другой компьютер. Если эти компьютеры включены, а пинг не проходит, значит нужно проверять настройки сети. Если ты точно помнишь, что сеть настраивал, а она не работает (случай, что ты нерпавильно ее настроил не рассматривается :) ), запусти программу ifconfig - она тебе расскажет все. На современных дистрибутивах (если не отключена одна одна замечательная опция), сетевой интерфейс не поднимается, если повреждена физическая среда передачи данных, например, сетевой кабель или просто этот кабель не подключен к компьютеру. Если у тебя модемное соединение, проверь сначала сигнал в линии, а потом уже настройки модема. Если же витая пара, проверь не поврежден ли кабель, также нужно проверить его обжимку - возможно ты неправильно его обжал. Что-либо конкретное посоветова не могу, поскольку все зависит от ситуации - вариантов море.

Ping

ifconfig

Для контры версии 1.3 тебе понадобятся следующие файлы:


hlds_l_3108_full.tar.gz 
hlds_l_3108c_perf.tar.gz 
cs_13_full.tar.gz 

Первый файл – это выделенный сервер Half Life версии 3.1.0.8. Второй – это патч- оптимизатор для этого сервера. Третий файл – это выделенный сервер Counter Strike. Надеюсь, ты понимаешь, что устанавливать придется все три эти файла.

Скачать файлы можно по адресу server.counter-strike.net. Я рекомендую качать отсюда, поскольку на этом сервера постоянно выкладывают самые новые версии.

Заходим под пользователем root, создаем в корне каталог /halflife, помещаем туда эти файлы:


su root
cd /
mkdir halflife
cd halflife

После того, как ты скопируешь в этот каталог все эти файлы, их нужно будет распаковать:

tar xvzpf hlds_l_3108_full.tar.gz

По окончании работы архиватора, выполни следующие команды:


move cs_13_full.tar.gz hlds_l/
cd /halflife/hlds_l
tar xvzpf cs_13_full.tar.gz

Первая перемещает сервер CounterStrike в каталог hlds_l, вторая переходит в этот каталог, а третья распаковывает файл cs_13_full.tar.gz в каталог hlds_l. Архив будет распакован в каталог cstrike.

Настройка сервера

Теперь приступим к настройке сервера. Первым делом открываем файл hlds_l/cstrike/motd.txt и пишем в нем сообщение для соседей, в котором напоминается, что за настройку сервера вам полагается много пива.

Затем можно подправить файл настроек сервера hlds_l/cstrike/server.cfg. Но пока я бы не стал этого делать. Просто открой его и посмотри, какие служебные переменные используются (обращай внимания также на их значения).

В файле hlds_l/cstrike/mapcycle.txt прописываются карты, которые будут включены в mapcycle.

В общем, на этом, собственно, настройка и заканчивается. Во всяком случае пока. Ясное дело, ты еще не раз вернешься к этим файлам.

Запуск сервера

Приступим к самому интересному: запуске нашего сервера. Перейди в каталог /halflife/hlds_l/. Затем создай файл cstrike_server_start в любом текстовом редакторе.

Содержание этого файла будет таким:


#/bin/bash/
export LD_LIBRARY_PATH=/halflife/hlds_l:$LD_LIBRARY_PATH
./hlds_run -game cstrike +ip your.ip.here +maxplayers 12 +map cs_assault

Вместо your.ip.here нужно вставить твой IP-адрес. Но это только в том случае, если ты хочешь, чтобы твой сервер был доступен через Интернет. Для локальной сети опция +ip не используется. Теперь разрешим этому файлу запускаться:

chmod +x cstrike_server_start

Вот теперь можно запускать:

cd /halflife/hlds_l/

./ cstrike_server_start

После запуска ты должен увидеть:


Host_Init
Added packfile /halflife/hlds_l/valve/pak0.pak (985 files)
Protocol version 45
Exe version 4.1.0.8
Exe build: 15:09:28 Sep 17 2001 (1789) WON Auth Server
couldn't exec language.cfg
Server IP address 192.168.20.1:27015
PackFile: /halflife/hlds_l/valve/pak0.pak : models/w_battery.mdl
…

Для проверки состояния сервера используй команду status.

Статус сервер

Если у тебя игровой зал...

Как правило, домашний игровой сервер не требует никаких особых требований. Не думаю, что он будет "подтормаживать", если у тебя с десяток клиентов - твоих соседей. А вот если у тебя игровой зал, количество клиентов резко возрастает. Плюс ко всему сюда же могут подсоединяться другие игроки - из дружетсвенных игровых залов. Перед тобой постанут два основных вопроса:
* Как сделать сервер быстрее?
* Как защитить его?

Сделать быстрее сервер можно за счет оптимизации самого сервера CounterStrike и за счет оптимизации операционной системы Linux.

Для оптимизации самого сервера тебе нужно установить патч оптимизации hlds_l_3108c_perf.tar.gz. Сначала распакуй его, а потом разберешься - там все просто :)

Оптимизация Linux уже рассматривалась (см. предыдущие выпуски журнала), но если ты эту статью не прочитал и у тебя нет такой возможности, остановимся на основных моментах. Прежде всего отключи все ненужные сервисы (команда redhat-config-services в Red Hat и drakxservices - в Mandrake). Твой игровой сервер должен использоваться только как игровой сервер! Он не должен быть "по совместительству" и Web- и FTP-сервером, почтовиком тоже ему не стоит быть. Все, что на нем должно быть установлено, это только Linux, game-сервер и файрвол - iptables или ipchains. По возможности систему X Window тоже отключи. Как отключить X Window? Для этого не обязательно удалять ее: просто в файле /etc/inittab выбери уровень запуска 3:

id:3:initdefault:

После того, как ты отключишь ненужные сервисы можно попытаться перекомпилировать ядро. При повтороной сборке ядра обрати внимание на тип используемого процессора - установи именно тот тип процессора, который у тебя установлен. Также нужно пройтись по всем опциям и отключить ненужные - чтобы они "не кушали" ни оперативку, ни дисковое пространство.

Следующий шаг - создание дополнительного своп-пространства. Хотя я бы порекомендовал просто купить еще 128-256 Мб оперативки - какие-то 15-30 долларов, а сервер будет работать быстрее. Вообще сервер на то он и сервер, чтобы на нем было установлено 256-512 Мб оперативки - это необходимый минимум. После этого можно попытаться "разогнать" твой винт. Для этого читать man: man hdparm. В зависимости от настроек твоего дистрибутива прирост в производительности может быть более, чем ощущаемый. Чуть не забыл. Скорее всего, на машинах клиентов твоего игрового зала установлена ОС Windows XP. Не забудь отключить QoS. Для этого запусти программу gpedit.msc, перейди в раздел Конфигурация компьютера, Административные шаблоны, Сеть, Диспетчер пакетов QoS. Выбери Ограничить резервируемую пропускную способность, далее выбери Включен и установи 0%.

Если ты выберешь выключен, по умолчанию, QoS будет "отъедать" от твоего канала 20%. А это очень ощутимо.

Групповая политика

Параметры QoS

Теперь перейдем к защите сервера. А именно, нам нужно чтобы никто чужой не использовал наш игровой сервер. Если ты просто установишь максимальное количество клиентов (пусть 50), то какая вероятность того, что все 50 подключенных клиентов - это "твои" клиенты. Вдруг кто-то захотел проиграть, просканил порты и занял "место" твоего клиента, в результате чего тот не может подключиться к серверу. Конечно, можно вычислять того кто, подключается, но если ты хочешь сохранить свое время и свои нервы, настрой нормальный firewall. Информации в Сети - море. Можно использовать iptables или ipchains. Предпочтительнее, конечно, iptables - у него бОльшие возможности. Описывать возможности iptables я не стану, поскольку в 2-3 Кб не уложишься, а если больше, то это уже будет статья не про игровой сервер, а про iptables.

На этом настройку сервера можно считать завершенной. Если тебе понадобились дополнительные карты, тебе нужно их поместить в каталоги /halflife/hlds_l/cstrike/ и /halflife/hlds_l/cstrike/maps/. В первый каталог помещаются wad-файлы, а во второй - bsp и txt.

Все твои вопросы можешь задать по адресу dhsilabs@mail.ru.


Linux coutner