ゲームサーバーが VPN 上にあり、誰も参加できない
トンネルは内向きの経路ではない。プレイヤーが使う入口を選び、応答が同じ道で戻ることを確かめてから、バインドアドレスに触れる。
サーバーは起動し、VPN は接続済みなのに、外からは誰も参加できない。トンネルの内側にいる全員は参加できるので、アクセス規則のように見える。足りないのは許可ではなく経路であり、プレイヤーが到達できるアドレスとポート、そして応答が同じ道で戻るルートが必要になる。VPN の出口アドレスは内向きのホスティング機能ではない.
プレイヤーがサーバーに到達する四つの方法
本当の選択は、誰が観客か、そのパケットがどう入るかであり、名付ける価値のある四つの形がある。
| Design | Who can join | What it costs |
|---|---|---|
| Private VPN players | Only members of the tunnel | Every player needs a profile and identity |
| Provider public mapping | Anyone with the assigned address and port | Depends on supported protocol and mapping lifetime |
| Your own public relay | Anyone who can reach the relay | You run and secure the relay |
| Deliberate direct entry | Anyone who can reach your line | Split routing has to stay coherent |
非公開の設計は最も単純で最も不便であり、許可されたプレイヤーが制限されたネットワークに参加し、ゲームの非公開アドレスに到達する。与えるべきはゲームサービスへのアクセスであり、所有するすべてのホストを渡り歩ける共有 ID ではない。
中継の設計は軽視されやすい。到達可能なゲートウェイが公開トラフィックを受け取り、非公開トンネルでホストへ転送するので、プレイヤーがバックエンド VPN に参加することはない。中継はゲームのトランスポートを運ぶ必要があり、HTTP プロキシは汎用の UDP 中継ではない。
到着と同じ注意深さで応答を追う
変換する入口ごとに、外部アドレス、プロトコル、ポート、内部の宛先の四つを記録する。ポート転送のリファレンスは、人がつまずく区別、つまり宛先変換と、その先の通過を許すファイアウォール規則の違いを示している。片方だけ設定すると、正しく見えて何も通さないマッピングができる。
次に戻りを確認する。転送された要求は完璧に届いても、ホストが別の出口から応答するために失敗することがある。中継はバックエンドの流れを送信元変換するか、送信元を保ってルーティングに頼るかで、どちらも別の設計であり、ゲームのホストがプレイヤーのアドレスとして見るものを変える。
暗号化は壊れた戻り経路を救わない。守るのは区間であり、トポロジーではない。
トンネルが非公開にしないもの
ゲームの認証、更新、参加ポリシーは今も独自に働く。非公開のバックエンドトンネルは、意図的に公開した入口を非公開にはせず、プレイヤーから公開入口までの区間をまったく暗号化しない。これは二つの異なる跳躍と二つの異なる露出であり、ゲームは VPN 越しに動くと書いた設計メモは、その一方だけを説明している。
アドレスを誰かに告知する前に、どちらの区間が保護され、どちらがそうでないかを書き留める。
アドレスより先に観客を選ぶ
誰が参加できるべきかを決め、それに合う設計を選ぶ。友だちだけなら非公開トンネルか、許可リスト付きの中継だ。公開コミュニティなら中継か、実際に露出する直接入口にモデレーションを加える。それが決まったら、ゲームの文書化されたポートと告知アドレスの挙動を選んだ設計の中で使う。
テストが通るまで VPN アダプターを並べ替えない。それをすると、次の更新後に誰も再現できない未文書の経路を持つ、動くサーバーができる。
テストはプレイヤー二人、一人はトンネルの内側、一人は外側で、どちらも参加と通信の一巡を完了する。それ未満では入口が機能する証明にならない。