1、开放端口相关的基本概念

在默认情况下,所有运行在 PixelCloud 上的服务器仅对外网暴露两个端口 25565/TCP19132/UDP,分别用于 Java 版本和 Bedrock 版本客户端连入,服务器上其余的端口对于外网处于不可访问的状态,因此有部分需要通过额外端口提供服务的 插件/Mod(下面通称: Mod )会无法正常工作。
为了使需要额外端口的 Mod 可以正常工作,在每个服务器的服务器设置中都提供了一个配置页用于向外网暴露额外的服务器端口:

图-1.1:服务器管理页->服务器设置->开放端口 image.png

以默认开放的两个端口为例,一个完整端口开放配置包含 4 个属性:

  1. {
  2. "服务器端口": "<数字>0-65535", # 用于声明服务器上Mod所监听的端口
  3. "外网地址""<域名>xx.xx.xx", # 用于记录客户端访问的主机地址
  4. "外网端口": "<数字>0-65535", # 用于记录客户端访问的端口
  5. “协议”: "<JAVA/BE/TCP/UDP>", # 用于声明本端口使用的通信协议
  6. }

每一个访问外网入口的请求都会被自动转发给对应的服务器软件,如下示例:

客户端 —访问—> [外网地址]:[外网端口] —转发—> 服务器内网地址:[服务器端口]

要生成一个新的端口映射,请在 图-1 所示界面面点击开放端口按钮,在如下图配置中填入 Mod 监听的端口并选择 Mod 使用的通信协议:

图-1.2:开放端口配置 image.png

2、TCP 配置示例(dynmap 配置示例)

下面将以 dynmap 为例,示范如何使用 TCP 端口开放功能。

  1. 首先安装适合服务器核心的 Mod,并启动一次以生成默认配置。

    图-2.1:purpur-1.19 与 dynmap-3.4 image.png

  2. 找到 Mod 的配置文件并打开,查看服务器默认端口或修改端口(需重启服务器以使用新配置指定的端口)。

    图-2.2:/plugins/dynmap/configuration.txt (spigot 版本 dynamap 配置文件)默认端口 8123 image.png

  3. 依照 图-1.2 所示填入端口号与协议之后获得外网访问地址。

    图-2.3:端口: 8123, 协议: TCP image.png

  4. 此时访问 [外网地址]:[外网端口],可以正常的使用插件提供的功能了。

    图-2.4:浏览器访问 http://playmc.moe:45295/ image.png

3、UDP 配置示例(simple voice chat 配置示例)

下面将以 simple voice chat 为例,示范如何使用 UDP 端口开放功能,基本步骤都与 TCP 端口开放相同。

  1. 首先安装适合服务器核心的 Mod,并启动一次以生成默认配置。

    图-3.1:purpur-1.19 与 VoiceChat-2.2.46 image.png

  2. 找到 Mod 的配置文件并打开,查看服务器默认端口或修改端口(需重启服务器以使用新配置指定的端口)。

    图-3.2:/plugins/voicechat/voicechat-server.properties (spigot 版本 VoiceChat 配置文件) 默认端口 24454 image.png

  3. 依照 图-1.2 所示填入端口号与协议之后获得外网访问地址。

    图-3.3:端口: 24454, 协议: UDP image.png

  4. (VoiceChat 特有的额外步骤)在获得 图-3.3 的访问地址后,再次打开 Mod 的配置文件设置voice_host=[外网地址]:[外网端口],并重启服务器。

    图-3.4:设置 voice_host=playmc.moe:36844 image.png

在已知 Mod 默认端口的情况下,对很多 Mod 来说并不需要打开配置文件,步骤 2 在很多情况下都可以被省略掉。但是因为 VoiceChat 在 NAT 转发下必须要在服务端配置文件中指定客户端使用的端口,且 VoiceChat 支持多种 Mod 接口,通过不同的方式加载时,生成的配置路径也不同,特此列举配置文件路径以供参考: /plugins/voicechat/voicechat-server.properties

/config/voicechat/voicechat-server.properties

/[主世界文件夹]/serverconfig/voicechat-server.toml

  1. 此时使用已安装 forge/fabric Mod 的客户端连入服务器就可以成功连接到服务器的语音服务了。

    图-3.5:/voicechat test 成功 image.png