🕌

IPv4 over IPv6(DS-Lite)環境でARK: Survival Evolvedの非公式サーバを立てた話

5 min read

一時期Nitoradoでサーバをレンタルしたこともあったけど、やっぱり自分で立てたかったので。
基本的には各所のドキュメント、ないしネット上で公開頂いている記事の組み合わせだがそこに辿り着くまでの試行錯誤期間が大分長かった。

そのためZenn記事作成練習+備忘録としてまとめておく。

DS-Lite問題の対処

DS-Lite問題とは

そもそもIPv4 over IPv6(DS-Lite)環境でのIPv6回戦ではARKサーバの公開に必須なポート開放ができない[1][2]
いや正確にはやり方はあるのだろうけれど、自分の理解の範疇では苦しかった。

DS-Lite問題回避策

YAMAHAのルータであればDS-Lite接続とIPv4接続を併用することも可能[3]とのことだが、今回はこれらサイト[4][5]を参考にルータをもう1つ購入することで対応した。

メインのデスクトップマシン含め基本的なインターネット利用はIPv6回線を利用し、サーバをセットアップするマシンのみIPv4回線用として別途購入した上記ルータに有線接続した。

結論から述べるとこれでうまくいったのだが、既知の通りIPv4は回線が混雑しているため時間帯によっては非常に不安定になった。この副作用については現状解決できていない。

サーバ機の選定

ARK Survived Evolved Wikiを始めとする幾つかの記事を参考に、メモリ8GBのLinuxマシンを用意することを考えた。

選定したマシンはMINISFORUMのミニPC(ベアボーンモデル)。コンパクト+そこそこパワー持ち+クラウドファウンディングで有名だったのでお試しに良いかなという理由[6]

Minisforum UM300/UM250

とあっさり書いているがマシン選定の段階までであまりにも多くの試行錯誤[7][8][9]があった…。

ARKサーバのセットアップ

OSのインストール

本来サーバ用途であればUbuntu Serverを導入するところだが、ssh接続設定が面倒なのとGUIでやりたい操作があったのでUbuntu Desktop 20.04 LTSを選定[10]

Ubuntuでの諸設定

箇条書きでまとめる。

  • IPアドレスの固定
  • ポート開放
    • 本来はufwかiptablesで設定すべきところ
    • 自信がないのでTP-Linkルータの管理画面から実施[11]
  • 各種ツールのインストール
    • サーバセットアップ関連については次々項を参照のこと

Ubuntuセットアップ時の副産物

余談項。いままでRaspberry PiやUbuntuマシンでセットアップを進める際、いちいちHDMI/DPでモニタを切り替えて出力するのが面倒だったのだが、USBキャプチャデバイス + HDMIケーブルをデスクトップPCに接続し、デスクトップPC側でOBS等のキャプチャソフトを利用することで「デスクトップPC内の1ウィンドウとして」Ubuntu画面を取り込むことができるようになった。

これは別PCに限らずPS4などでも利用可能(音声も出力可)なので、PS4用モニタに投影せずともPC内の1ウィンドウでゲームができる。勿論数msの遅延があるのでfpsなどには向かない。

USB capture device

ark-server-toolsのインストール

ARKサーバのセットアップに当たってはARK: Survival Evolved Linux Server Toolsを採用。

詳細なREADMEや紹介記事が既に沢山あるので敢えてここでコマンドを記載することはしないが、基本的には

  • 実行用ユーザの追加
  • steamcmd+付随パッケージのインストール
  • ark-server-toolsのインストール
  • ゲーム設定ファイルの編集

などの対応が必要。

ARKサーバのバランス周りに関しては余りに設定する項目が多かったので基本的にはにじさんじARK鯖の設定[12][13]を参考にさせて貰いつつ、その他に替えたい箇所に関してはサーバ設定に関するドキュメント[14]を幾つか参照した。

Steam側での設定

上記のセットアップにより立ち上げたARKサーバのIPアドレスを、表示 > サーバー > サーバーを追加 に登録する必要がある。

ここまでのセットアップがすべてうまくいっていれば、IPアドレスを登録後にゲームを起動しサーバーの検索 > お気に入りに進むことで立ち上げたサーバが検索にヒットする。

稼働後の問題

毎度Steamでサーバを検索するのが面倒問題

お気に入りに登録したとはいえ、毎度上記ステップ(+設定している場合はパスワードの入力)を実行するのは面倒…という場合はSteam側で起動オプションを設定することで一発ログインが可能となる。

Steam > ライブラリ > ARK: Survival Evolved > プロパティ > 一般の起動オプション箇所に下記を入力すればOK。

+connect XXX.XXX.XXX.XXX(接続先IPアドレス) +password PASSWORD(設定したパスワード)

ただこの起動オプション、IPアドレスを次項で言及するDDNSに書き換えると接続が失敗する。
何かうまい方法を知っている方がいれば教えて頂けると幸いです。

IPアドレス可変問題

サーバを再起動するたびにIPアドレスが変わり、ログインしている人たちにIPアドレスを伝えるのが面倒という問題(実際面倒だった)。

この問題に関してはこの辺り[15][16]を参考に、

  • MyDNS.jpでDDNSを取得
  • crontabを用いて現在のIPアドレスを定期的に更新

することで対応した。
 
 
 
雑多にまとめたが、既存ドキュメントの組み合わせで実現できることが伝われば幸い。
時間泥棒のARKが自分の設定で無限にできてしまうの、恐ろしい…。

脚注
  1. という問題を特定するまでにしばらく掛かった。着手当初はIPv4 over IPv6に幾つかの手法・方式(MAP-EやDS-Liteなど)があること、それ以前にIPv6 over IPv4とIPv6の違いも分かっていなかった。そのためポート公開設定で何を選定すべきか(下記4. を参照)もだいぶ迷走した。 ↩︎

  2. ARKに限らずマルチプレイタイプのゲームサーバは同じ問題を抱えるのでは… ↩︎

  3. サーバー公開もできる。YAMAHAルータで自宅回線をIPv6 IPoEとDS-Lite化する手順 | https://tabikumo.com/ipoe_dslite_conf/ ↩︎

  4. IPv6プラス環境におけるIPv4ポート公開設定 | https://qiita.com/nbhr/items/2850ccaa3456a8553bbf ↩︎

  5. IPv6とIPv4を共存させ同時接続する方法 | https://www.archlinux.site/2018/12/ipv6ipv4.html ↩︎

  6. 余談だがMINISFORUMのサポート窓口はとても手厚い。チャットサービス、問い合わせ窓口どちらも利用したが返信が早い、説明が丁寧、お礼の一言のための追加メールが来るというハートフル体制。 ↩︎

  7. 実はここに辿り着くまでに5台以上で試している。 ↩︎

  8. Raspberry Pi 8GBモデルも購入したがARM CPUアーキテクチャが対応していないと後から知り断念した。同様の問題はバージョン管理システムPerforceを導入しようとした際にも発生。ARMアーキテクチャは重たいサーバ運用ツールには基本的に対応してないと知った瞬間。 ↩︎

  9. 一時しのぎ的にARK Server Managerを利用したこともあったが、サーバ専用機に出来そうなWindowsマシンがなかったため採用していない。 ↩︎

  10. ベアボーンモデルのためメモリ、SSDは別途用意。SSDに関してはM.2タイプだと届いてから知ったので別途購入したが、MVNe/SATAの違いを知らず最初MVNeモデルを購入してしまった。これも勉強代ということで後日SATAモデルを買い直し。 ↩︎

  11. ポート開放の方法 | https://www.tp-link.com/jp/support/faq/2799/ ↩︎

  12. ARKにじさんじサーバーまとめ | https://wikiwiki.jp/nijisanji/ARKまとめ/にじさんじサーバーまとめ ↩︎

  13. 解説『ARK:ホロ鯖&にじさんじ鯖のサーバー設定』まとめ | https://www.tp-link.com/jp/support/faq/2799/ ↩︎

  14. サーバー設定(ARK_Survival_Evolved Wiki*) | https://wikiwiki.jp/arkse/サーバー設定 ↩︎

  15. Minecraft(統合版)を自宅サーバーで遊んでみた!Ubuntuによる構築に挑戦 | https://www.aizulab.com/blog/minecraft-server/ ↩︎

  16. 無料の DDNS である MyDNS.jp を使う|Ubuntu18.04.2 | https://www.jacepark.com/use-mydns-jp-on-ubuntu-18-04-2/ ↩︎