
PwnAdventure3 Server
Pwnie Islandへようこそ!
Pwn Adventure 3: Pwnie Islandは、限定リリースのファーストパーソン・トゥルーオープンワールドMMORPGです。美しい島を舞台に、どんなことでも起こり得ます。なぜなら、このゲームは意図的にあらゆる種類のばかげたハックに対して脆弱だからです!飛行、無限の資金など、すべてはクライアントの変更またはネットワークプロキシ一つで実現できます。混乱の準備はできていますか?
このセットアップは、このゲームのさまざまなハックとチャレンジを扱った動画シリーズの一部です。
最初のカジュアルな実況を除けば、シリーズ全体でPwn Adventure 3の全チャレンジを4時間未満でカバーしています。
公式のREADMEより:
最低2GBのRAM。RAMが多いほど、1台のマシンでより多くのインスタンスを実行可能。
ゲームサーバーはグラフィックスハードウェアを必要とせず、コンソール上で純粋に動作します。Amazon AWSやDigital Ocean VPSインスタンスで良好に動作することが知られています。
ゲームサーバーは動作に大量のRAMを必要としますが、forkとコピーオンライトメモリを利用して、1台のホストで多くのインスタンスを実行できます。
2GB RAMのサーバーでは5インスタンスを超える実行は推奨されませんが、8GB RAMのサーバーでは通常CPUが処理できるだけのインスタンスを実行できます。
十分なRAMがあれば、CPUコアあたり2~3インスタンスが推奨されます。コアあたり4~5インスタンスも可能かもしれませんが、わずかなラグが発生する可能性があります。
クライアントとサーバーのファイルも2GBを超えるため、数GBの空きディスク容量が必要です。
独自のサーバーを構築・デプロイする方法はいくつかあります。
1つの方法は、公式ファイルのREADMEに含まれる指示に従ってダウンロードすることです。ダウンロードは公式ウェブサイトから行えます: http://www.pwnadventure.com/#server。
@Beaujeant が優れた分かりやすいステップバイステップガイドを作成しました。これはオプション3のDockerイメージ構築の基礎にもなりました。ガイドはこちら: 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で起動したサーバーは、ホスト名 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
警告: server.ini の Hostname にIPアドレスを使用しても機能しません!原因を突き止めるのに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
A: ディスク容量を増やしてください。
$ docker-compose build
Building init
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?
A: おそらくユーザーが 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
接続エラー: マスターサーバーに接続できません
これはおそらくMasterServerに到達できないことを意味します。
server.ini の [MasterServer] エントリを確認master.pwn3 にpingを送信できますか?/etc/hosts ファイルのIPは正しいですか?3333 でリッスンしていますか?sudo netstat -tulpn で確認
tcp6 0 0 :::3333 :::* LISTEN 31913/docker-proxydocker ps で2つのコンテナが起動しているか確認
880f93374070 pwn3server "/opt/pwn3/setup/mas…" 0.0.0.0:3333->3333/tcp, 5432/tcp pwnadventure3_master_1接続キューで待機中...
これは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の主催者にも特に感謝します。
By Vector35 - https://vector35.com/ (人気の逆アセンブラ Binary Ninja の背後にある会社)