IPv6
概念
向IPv6的過渡是不可避免的。
如果他們的網絡不能在IPv6網絡中運行,蘋果將不再接受向App Store提交的文件(推薦閱讀)。
因此,一些開發者可能會擔心。
不用擔心,Photon為您提供服務。
我們知道,完全轉換到IPv6需要時間。
這就是為什麼,我們保証使用兩個選項中的一個就能順利完成。
這兩個選項也都需要為所使用的Photon客戶端SDK提供一個最小版本。見支持的SDK列表。
Option A: IPv6-ready clients, IPv4-only servers
在這種情況下,客戶處於一個只使用IPv6地址或主機名的網絡中。即使是只能通過IPv4的主機名,也會被翻譯成這些網絡的IPv6地址(通過DNS64/NAT64)。
只要您避免直接使用IPv4地址,伺服器就可以到達,而且本身不需要一個IPv6地址。這個選項可以在Mac的幫助下進行測試(見下文)。
Photon伺服器應該使用域名(FQDN)而不是IP地址進行配置。見如何執行在Photon伺服器中執行。
Option B: both client and server are running on IPv6
該選項適用於僅有IPv6的網絡,僅由Photon Server v4支持。
非突破策略
根據需要,伺服器地址將以合適的形式發送給客戶端。
- IPv4地址:當伺服器和客戶端都使用IPv4時。
- IPv6地址:當伺服器和客戶端都使用IPv6時。
- DNS主機名:當客戶端使用IPv6而伺服器使用IPv4時。
支援的SDK
Currently, the following Photon SDKs support IPv6:
目前,以下Photon SDKs支援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#)客戶端SDK:從
4.1.x.x
版本開始。 - PUN:從
1.73
版本開始。 - Unity在4.7.2、5.1.5、5.2.5、5.3.4p4、5.4.0p1和更新的版本中支援IPv6 (Unity blog post)。
5.4版本已經打破了對IPv6的支援。
使用DNS64/NAT64測試IPv6
我們建議在本地環境中使用蘋果公司提出的方法進行測試。
您可以很容易地使用Mac設置一個IPv6 WiFi。
Photon伺服器配置
在Photon伺服器配置中,我們建議使用域名而不是硬編碼的IP地址。
主機名
對於從零開始的Photon伺服器應用或不基於LoadBalancing的應用,請始終使用域名而不是IP地址。
Photon 伺服器 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 伺服器 v3
對於Photon LoadBalancing應用程序,您需要修改一行代碼。
將RegisterGameServer.GameServerAddress
設置為您在OutgoingMasterServerPeer.Register
(在 "OutgoingMasterServerPeer.cs "中)的域名,如下所示:
C#
protected virtual void Register()
{
var contract = new RegisterGameServer
{
//GameServerAddress = GameApplication.Instance.PublicIpAddress.ToString(),
GameServerAddress = "YOURhost.YOURdomain.com",
//...
IPv6-ready
- "::" is the IPv6 equivalent of "0.0.0.0" in IPv4.
- "::1" is IPv6 equivalent of "127.0.0.1" (the loopback address) in IPv4.
在 "PhotonServer.config "中的每個 xListener
中添加IPAddressIPv6="::"
。如下所示:
XML
<TCPListener
IPAddress="0.0.0.0"
IPAddressIPv6="::"
Port="4531">
</TCPListener>
對於Photon 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伺服器應用,總是使用IPv6地址。
地址格式
當從Photon客戶端連接到IPv6 Photon伺服器時,應指定伺服器的地址。
如果您保持默認端口的配置,那麼指定端口號應該是可選的。
在任何情況下,IPv6地址加端口的格式應該是。[address]:port
。
例如: [2001:db8:85a3:8d3:1319:8a2e:370:7348]:5055
這是在IPv6中分離地址和端口的基本方式。
問題排除
域名到IP地址
我們建議使用nslookup
命令行工具檢查您的域名是否可以公開解析,方法如下:
nslookup <YOURhost.YOURdomain.com>
您必須用您自己的域名替換<YOURhost.YOURdomain.com>
。
請確保檢查結果是否包括IPv6地址。
檢查您的伺服器是否可索取
有多種方法可以檢查您的伺服器在網絡上是否可以索取,您可以選擇一種:
ping <domain name or IP address>
。traceroute <domain name or IP address>
或tracert <domain name or IP address>
取決於您的操作系統。telnet <domain name or IP address> <port>
。