This document is about: SERVER 4
SWITCH TO

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

You need the latest Photon Server v3 release available from our website here.

對於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>
Back to top