友達とマイクラをやろうとして、サーバーは立てられたのに外から入ってもらえない、という経験はないでしょうか。
私はあります。しかもルーターの設定画面を開いても、ポート開放の項目が見当たらない。調べてみたら、そもそもうちの回線ではポート開放ができないという話でした。
同じところで詰まっている人はかなり多いはずです。というわけで、ポート開放できない回線でもサーバーを公開できるツールを自分で作り始めました。今回はその話です。
そもそもポート開放ができない回線が増えている
まず前提の話から。ここ数年で増えた接続方式では、そもそもポート開放という操作ができません。
該当するのはこのあたりです。
| 呼び方 | よくある提供元 |
|---|---|
| v6プラス | JCOM、So-net、BIGLOBE など |
| OCNバーチャルコネクト | ドコモ光 など |
| transix / DS-Lite | IIJmio、@nifty など |
| CGN(キャリアグレードNAT) | 一部のケーブルテレビ、モバイル回線 |
理由はざっくり言うと、IPv4アドレスが足りないので、1つのアドレスを複数の家庭で分け合っているからです。
分け合っている以上、「このポートは自分のところに届けてほしい」という要求は通りません。自分専用のポートというものが存在しないので。v6プラス系だと使えるポートが決まった番号だけ割り当てられる方式もありますが、マイクラが使う25565や19132を自由に選べるわけではないので、実質的に詰みます。
しかもこの方式、速度が速いので回線側は積極的に勧めてきます。普通にネットを見ている分には快適なんですよね。サーバーを建てようとした瞬間だけ壁になる。
だから「昨日までできてたのに」ではなく、最初から一度もできない人が増えている。これが今の状況です。
「MiRm」が好きだった話
ここで思い出したのが MiRm です。
一昔前にあった、マインクラフト(統合版・PE)のサーバーを無料で建てられるサービスでした。何が良かったかというと、
- スマホだけで完結する。PCが要らない
- 専門知識も要らない
- 登録にメールアドレスすら要らなかった
- UIが独特で、触っていて楽しかった
サーバーを建てるって本来かなり面倒な作業なんですが、それを「アプリを触ってたらできてた」くらいの体験に落とし込んでいたのがすごかった。当時、友達に「これ使って」と投げるだけで済んだ記憶があります。
MiRm は現在はサービスを終了しています。復活の動きもあったようですが、今から使えるものではありません。
当時の使い方を詳しく書いている記事が残っているので、どんなものだったか気になる方はこちらを。
で、あの体験がもう一度欲しくなったので、作ることにしました。
作っているもの
仕組みとしては中継(トンネル)方式です。図にするとこうなります。
[あなたのPC] マイクラサーバー :25565
↓ アプリが自動で繋ぐ
[中継サーバー] 公開アドレス example.com:20001
↑
[友達] ここに繋ぐ
ポート開放ができないなら、開放できる場所を経由すればいいという発想です。あなたのPCから中継サーバーへ「内側から」接続を張るので、ポート開放は要りません。内側から外に出る通信は、どんな回線でも通るので。
目指しているのはこのあたりです。
- アプリを起動して、ポート番号を入れて、開始を押すだけ
- 表示されたアドレスをコピーして友達に送れば終わり
- Java版と統合版の両方に対応する
3つ目が地味に重要で、理由は次に書きます。
現状はPCが必要です
先に正直に書いておきます。MiRmの「スマホだけで完結する」という一番いいところは、今の時点では再現できていません。
管理コンソールはスマホでも見られるように今後のアップデートで調整予定ですが、現状はPC必須になります。
そもそもサーバー本体を動かすPCが要る、という前提もあります。MiRmはサーバーごと預かってくれるサービスだったので、そこは設計思想から違うところです。まずはPCで確実に動くものを作って、スマホ対応はそのあとに回しています。
統合版のために「UDP」が要る
マイクラは版によって通信方式が違います。
| 版 | 方式 | ポート |
|---|---|---|
| Java版 | TCP | 25565 |
| 統合版(BE) | UDP | 19132 |
ここが落とし穴で、世の中の中継ツールにはTCPしか通さないものがそこそこあります。
そういうツールを使うと、Java版は動くのに統合版だけ繋がらない。しかも「繋がらない」以外の情報が出ないので、原因にたどり着くのがかなり難しい。
なので今回は、1つの枠でTCPとUDPを同じポート番号で出す設計にしています。利用者に「TCPはこっち、UDPはこっち」なんて説明させたくないので。
作ってみて、ぶつかった問題
ここからが本題かもしれません。作り始めてから「あ、これは想定してなかった」となった話です。
1. ウイルス対策ソフトに消される
これが一番きつかったです。
中継ツールの中身には、こういう用途で定番のソフトを使う予定でした。ところが、ダウンロードした瞬間にWindows Defenderが削除する。
「Trojan(トロイの木馬)」判定です。もちろん公式の配布元から取っていますし、ファイルのハッシュ値も公式のものと一致することを確認しました。誤検知です。
なぜ誤検知するかというと、やっていることが「外から中へ通信を通す」なので、悪用されたときの動きと見分けがつかないからなんですよね。実際、この手のソフトは軒並み引っかかります。
しかも調べてみると、同じジャンルの有名な無料サービスもまったく同じ問題を抱えていました。ユーザーが「ウイルス扱いされるんだけど」と質問しているのが普通に見つかります。つまりこのジャンル全体の宿命ということです。
さらに厄介なのが、コード署名(開発者の身元を証明する電子署名)を買っても解決しないこと。署名が答えているのは「誰が作ったか」であって、「危険な動きをするか」の判定はまた別のレイヤーなんです。年に数万円かかるものなので、これで解決すると思って買っていたら大損でした。
ここは今も方針を検討中です。使う部品を変えると回避できる見込みが出てきたので、そちらを試しています。
2. 中継サービスは必ず悪用される
汎用の中継サーバーは、100%踏み台に使われます。 これは「かもしれない」ではなく、そういうものだと思っておいたほうがいい。
そして怒られるのは、中継している側のIPアドレスです。
なので最初から、
- 通報を受け付ける窓口を用意する
- 問題のあった枠をすぐ止められるようにする
- 止めた枠は二度と誰にも配らない
というのを組み込んでいます。後付けだと絶対に間に合わないので。
3. 「無料でいいのでは?」問題
これは技術じゃない話ですが、正直いちばん悩んでいます。
似たことができる無料のサービスは既にあります。じゃあ何を作っているのかというと、
- 日本語で、日本の回線事情に合わせた説明があること
- 統合版がちゃんと通ること
- 困ったときに日本語で聞けること
このあたりで差を出せないなら、そもそも作る意味がありません。遅延(ラグ)が無料サービスと変わらないなら勝ち目がないので、ここは実測して確かめるつもりです。
現状と、これから
正直に書くと、まだ完成していません。
- アプリの画面と、枠を配る仕組み → できた
- 実際にトンネルを張って通信が通るかの確認 → まだ
ウイルス対策ソフトの件で足止めを食っていて、肝心の「本当に繋がるか」がまだ検証できていない状態です。ここが通らなければ設計から見直しになります。
進捗はまた書きます。同じところで困っている人がいたら、参考になれば嬉しいです。
よくある質問
自分の回線がポート開放できるかどうか、どう確かめる?
契約している接続方式を見るのが早いです。「v6プラス」「OCNバーチャルコネクト」「transix」「DS-Lite」「IPv6 IPoE」といった名前が契約書やマイページにあれば、基本的にポート開放はできません。
ルーターの設定画面に「ポート開放」「ポートフォワーディング」の項目自体が見当たらない場合も、ほぼ確定です。
PPPoE接続に切り替えれば解決する?
解決することが多いです。 多くの回線はPPPoE接続も併用でき、そちらならグローバルIPが割り当てられてポート開放ができます。
ただしPPPoEは夜間に混雑して速度が落ちるのが弱点で、速度を取るか自由度を取るかの選択になります。プロバイダによっては追加料金がかかったり、そもそも選べないこともあります。
スマホだけで使える?
現状はPCが必要です。
管理コンソールのスマホ対応は今後のアップデートで調整予定ですが、今の時点ではPCから操作してもらう形になります。加えて、マイクラサーバー本体を動かすPCも別途必要です。
「スマホだけでサーバーが持てる」というMiRmと同じ体験は、まだ提供できていません。
中継ツールを使うとラグは増える?
増えます。 通信が中継サーバーを経由する分、確実に遅延は乗ります。
どのくらい乗るかは中継サーバーの場所次第で、国内にあれば体感できないレベルに収まることもあります。私も今まさに実測しようとしているところです。遅延がシビアな遊び方をするなら、最初からVPSを借りたほうが確実です。
それでも自前サーバーを立てたい人へ
ちなみに、中継を挟まず最初からグローバルIPを持つという選択肢もあります。VPSを借りる方法ですね。
- 中継が要らないので遅延が増えない
- 自分のPCを起動しっぱなしにしなくていい
- ポート開放の悩みが最初から発生しない
月額はかかりますが、人数が増えてきたら結局こっちのほうが快適です。このあたりは別記事にまとめています。
自宅で気軽にやりたいなら中継ツール、本格的にやるならVPS、という住み分けかなと思っています。


コメント