
PwnAdventure3 Сервер
Добро пожаловать на Остров Пони!
Pwn Adventure 3: Pwnie Island — это ограниченный релиз, шутер от первого лица, настоящая открытая MMORPG, действие которой происходит на прекрасном острове, где может случиться всё что угодно. Потому что эта игра намеренно уязвима для всевозможных глупых взломов! Полет, бесконечные деньги и многое другое — всего в одном клиентском изменении или сетевом прокси. Готовы к хаосу?!
Эта настройка является частью видеосерии, охватывающей различные взломы и задачи в этой игре.
Не считая непринужденного Let's Play в начале, вся серия охватывает все задачи Pwn Adventure 3 менее чем за 4 часа.
Из официального README:
Не менее 2 ГБ ОЗУ; больше ОЗУ позволит запускать больше экземпляров на одной машине
Игровой сервер не требует графического оборудования и работает исключительно в консоли. Известно, что он хорошо работает на Amazon AWS и VPS Digital Ocean.
Игровой сервер требует много ОЗУ для работы, но использует fork и copy-on-write память, чтобы запускать множество экземпляров на одном хосте.
Для сервера с 2 ГБ ОЗУ не рекомендуется запускать более 5 экземпляров, но сервер с 8 ГБ ОЗУ обычно может обрабатывать столько, сколько выдержит ЦП.
Рекомендуется использовать 2-3 экземпляра на ядро ЦП, если у вас достаточно ОЗУ. Вы можете запускать 4-5 экземпляров на ядро, но это может вызвать небольшие лаги.
Файлы для клиента и сервера также превышают 2 ГБ, поэтому требуется несколько ГБ свободного дискового пространства.
Есть несколько способов собрать и развернуть собственный сервер.
Один вариант — скачать официальные файлы и следовать инструкциям из README. Скачать можно с официального сайта здесь http://www.pwnadventure.com/#server.
@Beaujeant создал отличное и простое пошаговое руководство. Оно также послужило основой для создания Docker-образа из Варианта 3. Руководство можно найти здесь: https://github.com/beaujeant/PwnAdventure3/blob/master/INSTALL-server.md.
Этот вариант очень прост, при условии, что на хосте установлены docker и docker-compose. Это позволяет легко запускать и останавливать сервер, не внося изменений в основную систему.
Сначала соберите все необходимые файлы:
git clone https://github.com/LiveOverflow/PwnAdventure3.git
cd PwnAdventure3
wget http://pwnadventure.com/pwn3.tar.gz
tar -xvf pwn3.tar.gz
Для запуска сервера необходимо установить docker и docker-compose. Docker быстро развивается, поэтому рекомендуется следовать текущим официальным инструкциям по установке (которые могут также включать удаление старой системной версии docker):
docker-compose: https://docs.docker.com/compose/install/docker: sudo usermod -a -G docker $USER. Перезагрузитесь или выйдите и войдите заново, проверьте с помощью id, что пользователь в группе docker.Затем просто соберите образ и запустите мастер-сервер и игровой сервер:
docker-compose build
docker-compose up
docker-compose up также можно запустить в фоновом режиме с помощью -d.
Сначала загрузите клиент с официального сайта: http://www.pwnadventure.com/#downloads
Чтобы подключить клиент к новому серверу, необходимо изменить server.ini для клиента. Сервер, запущенный через Docker, ожидает, что используются hostname master.pwn3 и game.pwn3 (Теоретически их можно изменить в docker/файлах настройки).
server.ini для клиента должен выглядеть примерно так:
[MasterServer]
Hostname=master.pwn3
Port=3333
[GameServer]
Hostname=game.pwn3
Port=3000
Username=
Password=
Instances=
Убедитесь, что клиент может достичь этих хостов, например, добавив их в файл /etc/hosts. В этом примере сервер работает на 192.168.178.57, и запись для них будет:
192.168.178.57 master.pwn3
192.168.178.57 game.pwn3
Предупреждение: Использование IP-адреса в качестве Hostname в server.ini не работает! Я потратил 2 часа, пытаясь понять, что не так.
Чтобы остановить сервер, просто введите docker-compose down.
Предупреждение: Файл базы данных не сохраняется — остановка контейнера сбрасывает всё. Поэтому сначала сделайте резервную копию.
$ docker-compose build
Building init
ERROR: Error processing tar file(exit status 1): write /client/PwnAdventure3_Data/PwnAdventure3/PwnAdventure3/Content/Paks/Characters.pak: no space left on device
О: Освободите больше дискового пространства.
$ docker-compose build
Building init
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?
О: Вероятно, ваш пользователь не входит в группу docker или служба docker не запущена. sudo usermod -a -G docker pwn3, проверьте с помощью id. Или service docker restart.
Проверьте, не поврежден ли архив
$ md5sum pwn3.tar.gz
d3f296461fa57996018ce0e4e5a653ee pwn3.tar.gz
$ sha1sum pwn3.tar.gz
022bd5174286fd78cd113bc6da6d37ae9af1ae8e pwn3.tar.gz
Ошибка подключения: Unable to connect to master server
Вероятно, это означает, что MasterServer недоступен.
[MasterServer] в server.ini клиента.master.pwn3 с вашей системы?/etc/hosts?3333?sudo netstat -tulpn
tcp6 0 0 :::3333 :::* LISTEN 31913/docker-proxydocker ps, активны ли два контейнера
880f93374070 pwn3server "/opt/pwn3/setup/mas…" 0.0.0.0:3333->3333/tcp, 5432/tcp pwnadventure3_master_1Waiting in connection queue...
Это означает, что MasterServer доступен и теперь ожидает свободного GameServer, который можно предоставить клиенту. Вероятно, это означает, что ни один GameServer не запущен или не смог подключиться к MasterServer.
3000-3005?sudo netstat -tulpn
tcp6 0 0 :::3000 :::* LISTEN 32160/docker-proxypwnadventure3_game_1? Проверьте с помощью docker ps -a
84343f81034f pwn3server "/opt/pwn3/setup/gam…" 0.0.0.0:3000-3010->3000-3010/tcp, 5432/tcp pwnadventure3_game_1docker-compose up: line 1: 7 Killed ./PwnAdventure3Server; pwnadventure3_game_1 exited with code 137
Эти версии использовались при тестировании на хосте:
$ uname -a
Linux ubuntu 4.4.0-31-generic #50~14.04.1-Ubuntu SMP Wed Jul 13 01:07:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ docker-compose version
docker-compose version 1.19.0, build 9e633ef
docker-py version: 2.7.0
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t 3 May 2016
$ docker --version
Docker version 17.12.1-ce, build 7390fc6
Настоящие герои — это люди, создавшие игру <3
Pwn Adventure 3 — это детище Rusty Wagner. Он отвечает за идею, планирование и почти всю реализацию (программирование, дизайн уровней, квесты и так далее). Без него игры бы не было! Особая благодарность также организаторам Ghost in the Shellcode за их поддержку во время разработки и тестирования.
От Vector35 - https://vector35.com/ (компания, стоящая за популярным дизассемблером Binary Ninja)