ARK: Survival Evolved linux サーバーの立て方

2020年3月18日

linux上でARK: Survival Evolvedのサーバーを構築してのでメモ

arkserverがsteamで0/0で入れないとき

追記

2020/03/15から2020/03/17の現在にかけて、steamの障害によるせいか、サーバーは起動することができません。Steamのサーバー一覧でプレイヤー数が0/0と表示される場合は諦めてください vpnに接続して起動すれば動きます

追追記

arkserverがsteamに認識されないのはsteamのせいではなく、プロバイダーが原因であることが原因でした。

arkserverは起動時に155.133.245.37に対して通信を行います。これが失敗していました。

経路確認をしてみますと、

 .\TRACERT.EXE  155.133.245.37
155.133.245.37 へのルートをトレースしています。経由するホップ数は最大 30 です
  1    <1 ms    <1 ms    <1 ms  *** [***.***.***.***]
  2     6 ms     6 ms     7 ms  r225.ngnont01.ap.so-net.ne.jp [219.98.226.133]
  3     7 ms     7 ms     7 ms  tn03gi3.ngnont01.ap.so-net.ne.jp [210.132.216.97]
  4     *        *        *     要求がタイムアウトしました。
  5     *       37 ms    15 ms  note-ag1-ET102.net.so-net.ne.jp [202.213.193.149]
  6    14 ms    14 ms    15 ms  202.213.194.61
  7    14 ms    14 ms    14 ms  ote-01Po8.net.so-net.ne.jp [202.213.193.66]
  8    14 ms    14 ms    14 ms  218.100.6.160
  9    13 ms    15 ms    14 ms  192.168.143.2
 10    87 ms    14 ms    14 ms  192.168.144.39
 11     *        *        *     要求がタイムアウトしました。
 12     *        *        *     要求がタイムアウトしました。
 13     *        *        *     要求がタイムアウトしました。
 14     *        *        *     要求がタイムアウトしました。
 15     *        *        *     要求がタイムアウトしました。
 16     *        *        *     要求がタイムアウトしました。
 17     *        *        *     要求がタイムアウトしました。
 18     *        *        *     要求がタイムアウトしました。
 19     *        *        *     要求がタイムアウトしました。
 20     *        *        *     要求がタイムアウトしました。
 21     *        *        *     要求がタイムアウトしました。
 22     *        *        *     要求がタイムアウトしました。
 23     *        *        *     要求がタイムアウトしました。
 24     *        *        *     要求がタイムアウトしました。
 25     *        *        *     要求がタイムアウトしました。
 26     *        *        *     要求がタイムアウトしました。
 27     *        *        *     要求がタイムアウトしました。
 28     *        *        *     要求がタイムアウトしました。
 29     *        *        *     要求がタイムアウトしました。
 30     *        *        *     要求がタイムアウトしました。

ファッ!9と10が何故にローカルIP!?

試しにvpngateから経路探索

PS C:\Windows\system32> .\TRACERT.EXE  155.133.245.37
155.133.245.37 へのルートをトレースしています。経由するホップ数は最大 30 です
  1    16 ms    18 ms    16 ms  public-nat-out.vpngate.open.ad.jp [10.235.254.254]
  2    91 ms    17 ms    18 ms  gw2.vpngate.v4.open.ad.jp [219.100.37.253]
  3    17 ms    17 ms    16 ms  igp1.green.v4.open.ad.jp [202.222.12.190]
  4    15 ms    17 ms    16 ms  bgp4.openospf2.v4.open.ad.jp [202.222.12.41]
  5    26 ms    19 ms    18 ms  tokyo1-GM-AE10-2901.s5.sinet.ad.jp [150.99.184.33]
  6    46 ms    19 ms    17 ms  150.99.91.223
  7    17 ms    16 ms    17 ms  as32590.ix.jpix.ad.jp [210.171.224.232]
  8     *        *        *     要求がタイムアウトしました。
  9     *        *        *     要求がタイムアウトしました。
 10     *        *        *     要求がタイムアウトしました。
 11     *        *        *     要求がタイムアウトしました。
 12     *        *        *     要求がタイムアウトしました。
 13

つまりsteamではなくインターネット接続業者がおかしい事がわかる。

これがわかればあとは簡単に解決策がひらめきます。

  • サーバを動かすPCにVPNを接続する(VPNGATEなど)
  • arkserverを起動する
  • arkserverが完全に起動したらVPNを切断する
  • やったねできるよ

はじめに

素晴らしいコマンドを用意してくれたひとに感謝

FezVrasta/ark-server-tools

動作必要環境

6人がプレイする上で実際に使用したリソースです

  • CPU 第4世代 0.5コア
  • メモリ 5.12GB

環境構築

以下のコマンドをターミナルにコピペすればサーバーは起動します。

(ポート開放は自分でやってね)

パッケージのインストール

sudo apt-add-repository non-free
sudo dpkg --add-architecture i386
sudo apt update
sudo apt upgrade -y
sudo apt install -y perl-modules curl lsof libc6-i386 lib32gcc1 bzip2
sudo apt install -y lib32gcc1 steamcmd 

ファイアウォールの設定

以下のように開けてください。以下のポートが開けられる設定であればiptablesでなくても良いです。

  • 7777 TCP/UDP
  • 7778 TCP/UDP
  • 27016 TCP/UDP
  • 32330 TCP/UDP
sudo iptables -I INPUT -p udp --dport 27016 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 27016 -j ACCEPT
sudo iptables -I INPUT -p udp --dport 7778 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 7778 -j ACCEPT
sudo iptables -I INPUT -p udp --dport 7777 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 7777 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 32330 -j ACCEPT

ついでにルータのポート開放を行ってください

arkmanagerのインストール

インストールにはしばらく時間がかかります。

sudo useradd -m steam
cd /home/steam
curl -sL http://git.io/vtf5N | sudo bash -s steam
sudo sh -c 'echo ark_bRawSockets=\"\" >> /etc/arkmanager/instances/main.cfg'
sudo arkmanager install

これでサーバーのインストールが完了しました。

サーバーパスワードの変更

/etc/arkmanager/instances/main.cfgに存在する以下の値を変更することで設定することができる

  • ark_ServerPassword=""
  • ark_ServerAdminPassword="keyboardcat"

サーバーの起動・停止

サーバーの起動には以下のコマンドで行なえます。起動には5~10分ほどかかります。

sudo arkmanager start

サーバーの停止

sudo arkmanager stop

サーバーに参加する方法

Steamを開きサーバーを選択します。

お気に入りのサーバーを追加を選択します。

ここに例えばサーバーを実行しているローカルIPを打ちます

すると以下のようにサーバーの名前やバージョンが出れば接続できます。

外からのアクセスの際はグローバルIPからアクセスしましょう。

キレ案件

上記の設定ではすでに対策されているので気にしなくて良い

標準のarkサーバーはSteamを経由した接続を行っている。

そして最近になってarkを購入する人が増えたせいなのか、一定時間が経過するとサーバーに接続している人が同時にサーバータイムアウトで切断される。

大体5分経過すると参加者は切断される。

これを対策するためにはSteamを経由せずにクライアントがサーバーに接続する必要がある。

これはサーバーと直接接続するオプションである

?bRawSockets

を ShooterGameServer の起動時引数として渡す必要がある。つまり以下のような状態にする必要がある。

ShooterGameServer TheIsland?MaxPlayers=70?Port=7777?QueryPort=27015?RCONEnabled=True?RCONPort=32330?ServerAdminPassword=pass?ServerPassword=pass?SessionName=name?bRawSockets?listen -log

これを arkmanager に追加するためには以下のどちらかに「ark_bRawSockets=""」を追加すれば良い

  • /etc/arkmanager/arkmanager.cfg
  • /etc/arkmanager/instances/main.cfg

この設定を行っただけで、参加者が切断されることはなくなった。

使い方まとめ

開発元のUsageに全て書いてあります

FezVrasta/ark-server-tools

コンフィグの設定は以下のファイルをいじってください

/home/steam/ARK/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini

ATLAS / ARK GameUserSettings.ini Generatorを使うと楽かもしれません