はじめに
マインクラフトのサーバを立てる場合、ポート開放が必要になってきます。ですがマンションなどの共有回線を利用している場合、ルータのポート開放ができないことが多いです。そこで ngrok
というソフトウェアを用い、ポートフォワーディングすることで、内部のポートを外部に開放することを試したのでまとめてみました。
導入
ngrok アカウントの作成
まずは ngrok
のアカウントを作成しましょう。ここから ngrok
のサイトに飛び、[Sign up for free] ボタンをクリックして下さい。この時、GitHub や Google のアカウントでも連携できるので、お好きなようにアカウントを作成して下さい。
ngrok でポートフォワーディングを行う
アカウントが作成できたら、以下の手順に従って設定を行って下さい。
- Windows の場合
-
[Download for Windows] ボタンをクリックする。
-
ダウンロードしたファイルを解凍する。
-
解凍してできた
ngrok.exe
ファイルをマイクラサーバがあるディレクトリかデスクトップ等に移動する(使いやすい場所に移動して下さい)。 -
ngrok.exe
ファイルがあるフォルダに移動し、アドレスバーに "cmd" と入力しコマンドプロンプトを起動。 -
ダウンロードサイトの
2. Connect your account
にあるコマンドを実行(トークンは自分のものに置き換えて下さい)。
ngrok add-authtokenG:\MineCraft\MineCraft Server> ngrok config add-authtoken 2LZjNmm8EtSNTXUMgjA3K1cOMs7_4HNp4KftdBGHZCSL7W5gs Authtoken saved to configuration file: C:\Users\hoge\AppData\Local/ngrok/ngrok.yml
-
ngrok
の設定ファイルngrok.yml
を編集するために、コマンドプロンプトの結果のC:\Users\hoge\AppData\Local/ngrok/
に移動。 -
ngrok
でアクセスするサーバの地域を変更する。ngrok.yml
をテキストエディタで開き、"region: jp" と追加(以前はデフォルトだとアクセスするサーバは us であったが、いつからか近くにあるサーバを自動的に選ぶ仕様になった? "region: jp" と設定しなくても jp が選ばれた。一応明示的に設定しておこう)。 -
ngrok
コマンドの実行。ngrok の起動G:\MineCraft\MineCraft Server> ngrok tcp 25565
Sesstion Status
が online
と表示されていれば問題ない。Forwarding
欄にあるアドレスがマイクラでサーバに接続する際の、サーバアドレスになる(ここでは "0.tcp.jp.ngrok.io:19992")。なお、無料版だとサーバアドレスを固定することはできないため、サーバ起動のたびにサーバアドレスを他の人に伝える必要がある。
9. マイクラサーバとマイクラを立ち上げ [マルチプレイ] > [ダイレクト接続] から 先程のサーバアドレスを入力し、[サーバに接続] を実行。
なお、サーバを立てている自分自身は ngrok
経由でサーバにアクセスする必要はなく、"localhost" と入力することでログインできる。
10. いちいちコマンドプロンプトから ngrok
を立ち上げるのは面倒なので簡単なバッチファイルを作成する。
ngrok tcp 25565
pause
以降はこのバッチファイルを実行するだけで、マイクラサーバにアクセスすることが可能となる。
- Linux の場合
-
wget
コマンドで対応するアーキテクチャのngrok
をダウンロードする。 -
tar -xf ngrok*.tgz
コマンドでダウンロードしたファイルを解凍する。 -
解凍してできた
ngrok
ファイルを適当な場所に置く(~/bin
など)。 -
以下のように
ngrok
コマンドを実行(トークンは自分のものに置き換えて下さい)。add-authtoken[web@localhost ~]$ ~/bin/ngrok config add-authtoken 2LZjNmm8EtSNTXUMgjA3K1cOMs7_4HNp4KftdBGHZCSL7W5gs Authtoken saved to configuration file: /home/web/.config/ngrok/ngrok.yml
-
ngrok
でアクセスするサーバの地域を変更する。~/.config/ngrok/ngrok.yml
を開き、"region: jp" を追加ngrok.ymlversion: "2" authtoken: 2LZjNmm8EtSNTXUMgjA3K1cOMs7_4HNp4KftdBGHZCSL7W5gs region: jp
-
ngrok
コマンドの実行。ngrok の起動[web@localhost ~]$ ~/bin/ngrok tcp 25565
Sesstion Status
が online
と表示されていれば問題ない。Forwarding
欄にあるアドレスがマイクラでサーバに接続する際の、サーバアドレスになる(ここでは "0.tcp.jp.ngrok.io:17128")。なお、無料版だとサーバアドレスを固定することはできないため、起動のたびにサーバアドレスを他の人に伝える必要がある。
以降は Windows と同様になります。マイクラサーバとマイクラを立ち上げ [マルチプレイ] > [ダイレクト接続] から 先程のサーバアドレスを入力し、[サーバに接続] を実行して下さい。
注意点
注意点として、この方法では 0.tcp.jp.ngrok.io:<port>
とマイクラサーバのポート(25565)とを繋げます。この時、ポート番号が分かりさえすれば誰でもサーバに入れてしまいます(実際に知らない人がサーバに入ってきたことがありました)。そのようなことを防ぐためにも、マイクラサーバのホワイトリスト機能などを使って対策して下さい。
最後に
友達とマイクラをやりたくなった時に、ポート開放をどうしようと試行錯誤していました。その時、そういえば ngrok
でローカルサーバを外部に公開できることを思い出し、検索してみたら ngrok
を使ってマイクラサーバを公開する方法を見つけました。その時の設定方法についてまとめてみました。
また、リスクもありますがngrok
を利用することで、外部に公開していないローカルサーバにアクセスすることが可能になり便利です(研究室のローカルサーバに自宅からアクセスできるようにしていました)。VPN などのややこしい設定も不要なのでセキュリティを問題視しないのであれば、ありかなと思います。