CGNAT環境でのゲームプレイ
CGNATとは?
キャリアグレードNAT(CGNAT)は、大規模NAT(LSN)やNAT444とも呼ばれ、インターネットサービスプロバイダー(ISP)がIPv4アドレスを節約するために使う技術です。契約者ごとに固有のグローバルIPアドレスを割り当てる代わりに、複数の契約者を1つの共有グローバルIPの後ろにまとめます。
マンションにたとえるとわかりやすいでしょう。各部屋がそれぞれ住所を持つのではなく、全員が建物1つの住所を共有している状態です。プロバイダーのNAT機器が「フロント」の役目を果たし、通信を正しい部屋(あなたの家のネットワーク)に届けます。
プロバイダーがCGNATを使う理由:
- •IPv4アドレスが枯渇している(全部で約43億個しかない)
- •IPv6の設備をフルに整えるより安い
- •モバイル回線のキャリアはほぼすべて使っている
- •アドレス不足から、家庭向けのプロバイダーでも採用するところがある
CGNATかどうかを見分ける方法
自分がCGNATの環境にいるかわからない?確実な見分け方を3つ紹介します。
方法1:ルーターのIPと外部から見えるIPを比べる
ルーターのWAN側IPを確認
ルーターの管理画面にログインし、WAN/インターネット側のIPアドレスを探します。ふつうは 10.x.x.x、100.64〜127.x.x、172.16〜31.x.x のような形をしています。
外部から見えるIPを確認
whatismyip.com にアクセスするか、Googleで「what is my IP」と検索します。
比べる
2つのIPが違っていれば、CGNAT(または二重NAT)の環境にいます。
方法2:CGNATのIPの範囲を確認する
ルーターのWAN側IPが次の範囲に入っていれば、間違いなくCGNATの環境です。
| IPの範囲 | 説明 |
|---|---|
| 100.64.0.0 – 100.127.255.255 | 公式のCGNAT用の範囲(RFC 6598) |
| 10.0.0.0 – 10.255.255.255 | プライベートの範囲(プロバイダー内部) |
| 172.16.0.0 – 172.31.255.255 | プライベートの範囲(あまり多くない) |
方法3:トレースルートで調べる
どこかの公開サーバーに向けてトレースルートを実行します。公開インターネットに出るまでに、プライベートIPの中継点がいくつも出てきたら、CGNATの環境です。
# Windows
tracert 8.8.8.8
# macOS/Linux
traceroute 8.8.8.8
最初のいくつかの中継点に 100.64〜127 や 10.x.x.x で始まるIPが出てきたら、それは通信が公開インターネットに出る前に通るCGNATの設備です。
CGNATだとポート開放がうまくいかない理由
従来のポート開放では、特定のポートに届いた通信をゲーム用PCに転送するようルーターを設定します。ところがCGNATでは、次のような問題があります。
問題1:二重NAT
ゲームの通信は2つのNAT機器を通らなければなりません。
- •自宅のルーター(自分で管理できる)
- •プロバイダーのCGNAT機器(自分では管理できない)
自宅のルーターで完璧にポート開放を設定しても、プロバイダーのCGNATはそのポートをあなたに転送してくれません。
問題2:グローバルIPの共有
ほかのプレイヤーから見えるグローバルIPはあなただけのものではなく、場合によっては何百人もの契約者と共有されています。外から来た接続が、あなたに狙って届く手段はありません。
問題3:固定IPの選択肢がない
CGNATを使うプロバイダーの多くは固定IPアドレスを提供していないか、専用のグローバルIPv4に割高な料金(多くは月$10〜30の追加)を取ります。
CGNATの場合、プロバイダーに電話して「ポートを開けて」と頼んでも解決しません。プロバイダー側でできる解決策は、専用のグローバルIPを申し込む(提供されていれば)、法人向けプランに切り替える、IPv6アドレスを取得する、のどれかだけです。
MoleTunがCGNATを解決する仕組み
MoleTunは高度なNAT越えの技術を使い、CGNATを挟んでいてもピアツーピアの直接接続を確立します。その仕組みは次のとおりです。
NATホールパンチング
(CGNATがブロックする)外からの接続を待つのではなく、MoleTunは2人のプレイヤーに同時に外向きの接続を始めさせます。
- •調整:2人ともMoleTunのSTUN/調整サーバーに接続します
- •検出:サーバーが各プレイヤーの外部IPとポートの対応を特定します
- •タイミング:2人に同時にお互いへパケットを送るよう指示します
- •ホールパンチ:この外向きのパケットが、両方のNAT機器に「穴を開け」ます
- •直接接続:NATはこの接続を、正当な双方向の通信として扱うようになります
これがうまくいくのは、NAT機器(CGNATを含む)が外向きの接続とその応答は通し、求めていない外からの通信だけをブロックするからです。
リレーへのフォールバック
NATホールパンチングがうまくいかないまれなケース(両側とも対称型NAT、または厳しいファイアウォール)では、MoleTunは自動で低遅延のリレーサーバーを経由させます。
| 接続の種類 | 遅延への影響 | 使われる場面 |
|---|---|---|
| P2P直接接続 | 増加0ms | 接続の約85% |
| ホールパンチング | 増加<1ms | 接続の約10% |
| リレー | 増加5〜15ms | 接続の約5% |
MoleTunは最適な接続方法を自動で選びます。設定は何もいりません。とにかく動きます。
CGNAT環境でのMoleTunのセットアップ
MoleTunをダウンロード
moletun.com/download からお使いのプラットフォーム用のMoleTunを入手します。
ルームを作る
「ルームを作成」をクリックし、コードを友達に送ります。アカウントは不要です。
接続の種類を確認
接続すると、MoleTunに接続状態が表示されます。緑はP2P直接接続、黄色はリレーです。
ゲームを起動
ゲームのLAN/ローカルマルチのモードを起動します。ほかのルームメンバーが、ローカルネットワーク上のプレイヤーとして表示されます。
CGNAT環境でのゲームのパフォーマンスを最適化する
MoleTunで接続の問題が解決しても、さらにパフォーマンスを上げる工夫ができます。
快適に遊ぶために:
- •Wi-Fiではなく有線LAN(イーサネット)を使う
- •帯域を食うアプリ(動画配信、ダウンロード)を閉じる
- •リレー接続になっている場合は、リレーの負荷が少ない空いている時間帯に遊んでみる
接続が不安定なときは:
- •プロバイダーのCGNAT機器が混雑しているのかもしれません。時間帯を変えて試しましょう
- •一時的にモバイルデータに切り替えて、プロバイダーの問題かどうかを確かめましょう
- •問題が続くなら、専用IPのオプションについてプロバイダーに問い合わせましょう
CGNATと二重NATの違い
この2つはよく混同されます。
| 状況 | 原因 | 解決策 |
|---|---|---|
| CGNAT | プロバイダーがあなたを自社のNATの後ろに置いている | MoleTun(ユーザー側では直せない) |
| 二重NAT | ルーターが2台ある(例:プロバイダーのモデム+自分のルーター) | プロバイダーのモデムをブリッジモードにする、またはMoleTunを使う |
| CGNAT+二重NAT | 両方が重なっている | MoleTunなら両方に対応 |
MoleTunは、3つのどの状況でも特別な設定なしで動きます。
固定IPを取ればCGNATを避けられますか?▼
プロバイダー次第です。月額の追加料金で専用のIPv4を提供しているところもあります。電話で「グローバル」または「専用」のIPv4アドレスについて聞いてみましょう。IPv6しか提供していないなら、ゲームにはやはりMoleTunがいちばんの選択肢です。
IPv6はCGNATの対策になりますか?▼
なるとも言えるし、ならないとも言えます。IPv6なら全員がグローバルアドレスを持てるので、NATがなくなります。ただし、多くのゲームはIPv6に対応しておらず、友達がIPv4しか使えなければ、やはり直接はつながりません。MoleTunはIPv4とIPv6の変換を自動で処理します。
なぜ私のプロバイダーはCGNATを使っているのですか?▼
IPv4アドレスは2011年に枯渇しました。CGNATを使うプロバイダーは、限られたアドレスをより多くの契約者で分け合っているのです。特にモバイル回線のキャリアや、新しい家庭向けプロバイダーでよく見られます。
CGNAT環境でのゲームは、グローバルIPがある場合より遅いですか?▼
MoleTunのP2P直接接続なら、差はまったくありません。違いを感じるとしたら、リレーを使わざるをえない場合(全体の約5%)だけで、そのときは遅延が5〜15ms増えます。それでもほとんどのゲームは問題なく遊べます。
始める準備はできましたか?
MoleTunをダウンロードして、1分以内にプレイを始めましょう。
MoleTunをダウンロード