IPv6
概念
IPv6への移行は避けられません。
AppleはIPv6ネットワークで作動するネットワーキングでないかぎり、App Storeへのサブミッションを受け付けません。詳細はこちらを確認ください。
ディベロッパーの中には、これを聞いて心配になる方々もいるかもしれません。Photonはこの状況に対応していますので ご安心ください。
IPv6への完全な切り替えには時間がかかります。
このため、弊社は2つのうちいずれかのオプションを使用すれば円滑に進行する点を保証しています。
どちらのオプションも、使用されるPhoton Client SDKの最小限のバージョンが必要です。サポート対象のSDKはこちらのリスト を参照してください。
オプション A: IPv6対応のクライアント、IPv4のみのサーバー
この場合、クライアントはIPv6アドレスまたはホスト名のみを使用するネットワーク上にあります。IPv4のみで利用可能なホスト名であっても、これらのネットワークではIPv6アドレスに変換されます(DNS64/NAT64によって)。
IPv4アドレスを直接使用しない限り、サーバーへの到達が可能でIPv6アドレスは不要です。このオプションは、Macを使用するとテストを実行できます(下記を参照してください)。
Photon Serverは、IPアドレスではなくドメイン名(FQDN)を使用して設定する必要があります。Photon Serverでの設定方法については、こちらを参照してください。
オプション B: クライアントもサーバーもIPv6上で稼動している
このオプションは、IPv6のみのネットワークの場合で、Photon Server v4のみがサポートします。
非破壊ストラテジー
必要に応じて、サーバーアドレスは適切な形式でクライアントに送信されます:
- IPv4アドレス: サーバーもクライアントもIPv4を使用。
- IPv6アドレス: サーバーもクライアントもIPv6を使用。
- DNSホスト名: クライアントがIPv6を使用し、サーバーがIPv4を使用。
サポート対象のSDK
現在、以下のPhoton SDKがIPv6をサポートしています:
- Photon Server SDK v4: バージョン
4.0.28.x
以降。 - Photon Server SDK v3: バージョン
3.4.31.10808
以降。 - Photon Native (C++/Objective-C) Client SDKs: バージョン
4.1.x.x
以降。 - Photon .Net/Mono (C#) Client SDK: バージョン
4.1.x.x
以降。 - PUN: バージョン
1.73
以降。 - UnityはIPv6のバージョン4.7.2、5.1.5、5.2.5、5.3.4p4、5.4.0p1およびそれ以降。詳細は(Unityブログ記事)を参照してください。
5.4リリースではIPv6サポートが破壊されています。
IPv6にDNS64/NAT64でテストを実施
ローカル環境で、Appleが推奨する手順を使ってテストをおこなうことを推奨します。
Macを使用したIPv6 WiFiの設定は、容易におこなうことができます。
Photon Serverの設定
Photon Serverの設定では、ハードコーディングされたIPアドレスではなく、ドメイン名を使用することを推奨します。
ホスト名
最初から作成された、またはLoadBalancingにもとづかないPhoton Serverアプリケーションの場合、IPアドレスではなく常にドメイン名を使用してください。
Photon Server v4
Photon LoadBalancingアプリケーションの場合、"GameServer\bin\Photon.LoadBalancing.dll.config"内のゲームサーバーに以下の設定を追加する必要があります:
XML
<Photon.LoadBalancing.GameServer.GameServerSettings>
<!-- other settings -->
<setting name="PublicHostName" serializeAs="String">
<value>YOURhost.YOURdomain.com</value>
</setting>
<!-- other settings -->
</Photon.LoadBalancing.GameServer.GameServerSettings>
Photon Server v3
Photon LoadBalancingアプリケーションで、コードの1行を変更する必要があります。
以下のとおり、OutgoingMasterServerPeer.Register
(in "OutgoingMasterServerPeer.cs")内でRegisterGameServer.GameServerAddress
をドメイン名に設定してください:
C#
protected virtual void Register()
{
var contract = new RegisterGameServer
{
//GameServerAddress = GameApplication.Instance.PublicIpAddress.ToString(),
GameServerAddress = "YOURhost.YOURdomain.com",
//...
IPv6対応
- IPv6の"::"は、IPv4の"0.0.0.0"と同義です。
- IPv6の"::1"は、IPv4の"127.0.0.1" (ループバックアドレス)と同義です。
"PhotonServer.config"内の各xListener
にIPAddressIPv6="::"
を追加します。例は以下のとおりです:
XML
<TCPListener
IPAddress="0.0.0.0"
IPAddressIPv6="::"
Port="4531">
</TCPListener>
LoadBalancingアプリケーションでは、以下のとおり"GameServer\bin\Photon.LoadBalancing.dll.config"ファイルのPublicIPAddressIPv6
を
"::1"に設定してください。
XML
<Photon.LoadBalancing.GameServer.GameServerSettings>
<!-- other settings -->
<setting name="PublicIPAddressIPv6" serializeAs="String">
<value>::1</value>
</setting>
<!-- other settings -->
</Photon.LoadBalancing.GameServer.GameServerSettings>
最初から作成された、またはLoadBalancingにもとづかないPhoton Serverアプリケーションの場合、常にIPv6アドレスを使用してください。
アドレス形式
PhotonクライアントからIPv6 Photon Serverに接続するには、サーバーアドレスを指定する必要があります。
デフォルトのポートで設定を続行すると、ポート番号の指定は任意となります。
どのような場合でも、IPv6アドレスとポートの形式は:[address]:port
とする必要があります。
例 [2001:db8:85a3:8d3:1319:8a2e:370:7348]:5055
これが、IPv6でアドレスとポートを分離する正式な方法です。
トラブルシューティング
IPアドレスへのドメイン名
ドメイン名が公式に解決可能なのか、nslookup
コマンドラインツールを使用して確認することを推奨します。手順は以下のとおりです:
nslookup <YOURhost.YOURdomain.com>
<YOURhost.YOURdomain.com>
を固有のドメイン名に置換してください。
結果にIPv6アドレスが含まれる点を確認してください。
サーバーに到達可能かどうかの確認
自分のサーバーがインターネット上で到達可能であるか確認するには、複数の方法があります。以下から選択してください:
ping <ドメイン名またはIPアドレス>
- オペレーティングシステムによって異なりますが、
traceroute <ドメイン名またはIPアドレス>
またはtracert <ドメイン名またはIPアドレス>
telnet <ドメイン名またはIPアドレス> <ポート>