0コメント

フレンドにマイクラサーバー立てさせたら構築に五時間もかかった件(localhostトラップ) ポート開放~

こにゃにゃちわ^ω^

昨日の日記書いてない気がするけど、約五時間にわたる格闘記をここに残しておきますねん。

マイクラサーバーを立てるための順序のおさらい

まあサーバーなんで、他人から自身のパソコンにアクセスがあればちゃんと応答し接続、データを返さなければいけないので、その相手側から要求されたパケットを廃棄しないようにするための設定をします。
ポート開放が分からん!!!→うるせえ!!!!この記事を読め!



ルーター側のポートマッピング設定

今回使用したのはAterm RV-440KI。
左のがAterm RV-440KI。なんか、こいつ名前が無駄にかっこいい。
ルーター兼ねてモデムも搭載しているものらしい。
これの上に付いているのが拡張機能で無線を飛ばす奴らしい。が、接続が途切れるため、右のルーターを設置してるって感じみたい。

右のはこれらしい。Aterm WG1800HP4。こちらは構築終盤らへんで「二重LANになってんじゃね!?」って焦ったけどもそんなことはなかった、本当に無線飛ばすためだけにブリッジモードで稼働させているルーター。

というわけで、RV-440KIの方のルーター設定にアクセス。
192.168.1.1だったかな?

しかしログインできない問題が発生。パスワードを忘れたと。
マニュアルから初期化、初期設定をおこない、パスワードは再設定し直させました。

プロバイダからもらったIDとパスワードを記録している資料が必須になるので(無いとプロバイダに問い合わせなければいけない)確認してから初期化しましょう(初期化すると登録するまでネットが使えない)

ログインと初期設定に成功しこの設定画面が表示され。

んじゃ、いよいよポートマッピング設定。
ポートマッピングは詳しいことは覚えてないけど設定したポート番号へ外部からアクセスがあった場合パケットを廃棄せずサーバーに通すための設定・・・と認識している。

サーバーのプライベートIPアドレスは、まあこの場では適当に「192.168.1.80」とでもしておこうか。
これはコマンドプロンプトでipconfigコマンド→リンクローカルIPv4アドレスの欄で確認できるので確認しておこう。
詳細設定→ポートマッピング設定
エントリ1に下記情報を追加
・優先順位:1
・接続インターフェース名:メインセッション
・宛先IPアドレス: 192.168.1.80
・変更対象IPアドレス:デフォルト(WAN側IPアドレスを指定)
・変換対象プロトコル:UDP
・変換対象ポート:25565
で設定。

今回は統合版Minecraftのサーバーを構築します。Java版サーバーの場合はプロトコルをTCP,ポートは19132にして設定してください。
WebサーバーならTCP80番だとか、サーバーによって変わるので各自確認してね。
これでポートマッピング設定は完了。



IPアドレスの固定化

パソコンのコントロールパネルからネットワークと共有センター→左端のアダプター設定の変更
接続してるwifi(イーサネット)の項目を右クリックしてプロパティを開く

・・・あ、そういや今回サーバー構築したのはwifiでの環境ですが、お試しなのでとりあえずこれで解放した物の基本的にはイーサネットの方がいいです。サーバーなら当たり前なんだけどね

そしたらインターネットプロトコルバージョン4の項目をクリックしてプロパティを開く
IPアドレス 192.168.1.80 サブネットマスク 255.255.255.0 ゲートウェイ 192.168.1.1 優先DNS 192.168.1.1 代替DNS 8.8.8.8
で入力し終了
スクリーンショット 2021-06-11 162056.png
これでプライベートIPアドレスの固定化は完了。
固定化しといた方が設定も面倒くさくないしおすすめ。



ファイアウォール設定

現在接続しているネットワークがプライベートネットワークであることを念のため確認してからファイアウォールの設定を開く。
で、無効化。

ファイアウォールを無効化するのはリスクがあるので、今回はお試しなのでこの方法で済ませているけど、ファイアウォールのプロファイルでポート番号を指定して例外設定をすることが出来るので、UDP19132番を例外設定させた方がセキュリティ的には強いです。
まあ、本気でサーバー立てたけりゃこんな記事見ずにサーバー構築特化型のOSを入れて、構築した方がセキュリティ的にも融通が利くだろうしそっちの方をおすすめしておく。



UPnPCJの設定

ここからダウンロードし解凍、UPnPCJ.exeを実行。
と思ったんだけど、このアプリケーションつかわなくてもサーバーとして動かせそうな気がする

まあ、一応ね一応。

WAN_PORTが19132 PROTがUDP
で、Port解放ボタンをクリックする。
おわり。



サーバーソフトウェア導入

ってのは人によってPMMP入れたりBDS入れたりそれぞれだろうしそれぞれ公式が詳しく説明してるので省きます^ω^

今回はBDS(Bedrock Dedicated Server)を導入。PMMPと違いプラグインに非対応だが極めてバニラワールドに近くコマンドも使えるので、ワールドとして開発したサーバーのファイルをBDSにぶち込むだけでサーバーとして動作させられる。

対して、PMMPは
動物のスポーンはないし、コマンドの互換性もほぼ無いし、地形生成にかなり難がある。
しかし一番の強みが「プラグインの幅広さ」これで代用は出来る。実際、大型鯖はPMMPだよって鯖もある。

まあ、私はコマンドになれているのでBDS1択だが。ただし、functionも使えないのでそれについては注意。
起動させて、既存鯖ワールドファイルを移植して無事起動、私も入ることが出来た。

これでサーバーとしては成り立った。



リンクローカルアドレスへの接続が拒否されていたというトラップ

スクリーンショット 2021-06-11 163611.png
BDSのreadme(how_to)ファイルに、こんな記述があることをご存じだろうか

「BDSなんて、exeファイル起動すりゃいいだけだろぉ?こんなファイル見るまでもないね」
と余裕ぶっこいていると

やらかします。トラップが存在しました。

マイクラサーバーにアクセスするためには、グローバルIPアドレスとポート番号をサーバーのLAN外の人から入力してもらって、それでアクセスできるのだが

LAN内の人は「ローカルループバックアドレス」を利用しなければならない。
127.0.0.1もしくはlocalhostとアドレス欄に入力する。これは、「自身のパソコン(サーバー)」という意味と理解すればいいと思う。

ちなみにプライベートIPアドレスで「自身のパソコン」という指定なので、この場合「192.168.1.80」と入力してもok

しかし・・・入れないのだ。他人が私のサーバーに入ることは出来るのに。
スクリーンショット 2021-06-11 164119.png
ping応答を要求して、伝送路が開通しているかを確認してみるんだが、リンクローカルアドレスにちゃんとpingを返されている。

なのにマイクラでは接続できない・・・何故?

ここでこの記事を見つけた。

「UWPアプリはリンクローカルアドレスへの接続が拒否される」

そんな仕様があるとは・・・初めて知った。
これが最大のトラップ。

そこで最初に添付した画像。how_toファイルのスクリーンショットなのだが、ここに明記されていた。
On some systems, when you wish to connect to the server using a client running on the same machine as the server is running on, you will need to exempt the Minecraft client from UWP loopback restrictions:
翻訳版
一部のシステムでは、サーバーが実行されているのと同じマシンで実行されているクライアントを使用してサーバーに接続する場合、MinecraftクライアントをUWPループバック制限から免除する必要があります。
やってんねえ!!!
というわけで、対処用コマンドがちゃんとありました。
管理者権限でコマンドプロンプトを起動し
CheckNetIsolation LoopbackExempt -a -n="Microsoft.MinecraftUWP_8wekyb3d8bbwe"
これを実行し、成功すればlocalhostで無事アクセスできるようになりましたとさ

「あれ?俺こんなのやったこと無いけどlocalhostで入れてたぞ?」ってのがある。思い当たる節もある。
UWPアプリはWindowsAppsっていう隠しファイル内に保存されていて、WindowsAppsがOWNER権限であってもアクセスを拒否されてしまう。
そのため、アクセスするために権限者を無理矢理書き換えたことがあった。もしかしたらこれによって様々な制限(例えば今回のリンクローカルアドレスへのアクセス拒否)が解除されているのかもしれない

そう考えると、それが想定外のバグや脆弱性になりかねないって考えると結構怖いことしてたな・・・

みんなはマネしないように!!!!!!!!!!!!!!!!!
とか思いつつ、まあ万事解決と言うことで。


まとめ

ルーターの初期化とかいろいろやっていたが、それを含めたら約五時間格闘してました。
しかし、サーバー構築はやはり面倒くさい。どのサイトでも根気よくやらなければ無理だと紹介しているだけあり、分かりにくい原因が連鎖し始めて構築したときはとてつもなく手間取ったものだ。おかげでネットワーク用語もいろいろ調べて、結果ITパスポートでも活用できるような知識が付いてしまうと言う・・・
まあ、この記事が一人でも誰かの役に立てば幸い、というお話でした。

ぐんない!


追記:
今回はdiscordでやりとりをしつつ、AOGメンバーに鯖を立てさせました。私が立てたわけではないのであしからず
0

この記事へのコメント