我想创建多个 Minecraft 服务器,它们将在我的网络中的多个服务器上运行。
主要目标是只有一个端口 (TCP 25565) 面向 Internet,然后将请求主机名 (mc.example.com) 传递给正确的后端服务器。
有什么办法可以做到这一点?我知道可以使用反向代理,但它是用于 HTTP 的,所以有什么方法可以为 Minecraft 做到这一点?
编辑:正如@attie 所说,不可能将单个 IF 端口用于多个 Minecraft 服务器。
所以现在,假设我为这些服务器打开了 10 个端口(25565 到 25575)。下一步我应该怎么做才能使这更加用户友好?我的意思是,当他进入 mc.example.com 时,直接将用户重定向到 IF 端口?
您可以尝试使用带有SVR Records的 Linux 的Bind9(我使用 Debian 和 raspberrypi [Raspbian])。
你需要做你的第一个域,为此你需要这样做:
up 文本是此域 DNS 数据库的配置文件链接。(这是您需要在文件中输入我告诉您继续的内容)
文件: /etc/bind/named.conf.local例如我的域是:origensone.net
这就是我在本地 DNS 服务器中拥有 Minecraft 服务器的方式:
文件: /var/lib/bind/origensone.net.hosts_服务。_protocol.name。 TTL 类 SRV 优先权 重 端口 目标: _minecraft。_tcp。mcsurvi.origensone.net。 SRV 0 5 25566 mcservidortorouter.origensone.net。
本地主机是 IP: 127。0 . 0 . 1
这是SVR 记录中的一个例子;在这种情况下,我在ALIAS中使用两个子域以获得两个服务器: origensone.net(域):
当您使用 Bind9 DNS 服务器完成此操作并完成所有部分时,请在此处查找说明,以确认此处的 DNS 到端口的工作原理!.
或者当你完成确认一切都很好时,你需要这样做:
这是在 Windows CMD 中: [灰色空间是我的公共 IP,因此受到谴责]
这是在 Raspbian (DnsServer.) 中: [灰色块是我的名字,因此受到谴责]
要尝试执行此操作,您可以在同一台服务器或在该主机的网卡中连接了该 DNS 服务器的其他计算机中执行此操作)。
如果这可行,当我们将对这个 subdomain.domain 进行 PING 时,控制台会正确地向我们提供192.168.1.11的 ping,或者与 Minecraft 托管服务器的 IP 相同。
这适用于 HTTP 的唯一原因是
Host:
协议中有一个可以检查的标头。如果协议中没有指示连接应路由到何处的内容,则无法通过侦听单个端口来执行此操作。我不相信 Minecraft 协议中包含这些额外信息......如果您绝对 100% 受限于单个面向互联网的端口,那么您的选择对用户不友好:
我建议您监听多个端口。
有一个名为“Minecraft Redirect Proxy”(https://github.com/RenegadeEagle/minecraft-redirect-proxy)的项目正在做你想做的事。
@attie Minecraft 协议确实包含请求的主机名。它与服务器接收的第一个数据包一起发送。
配置也很容易。这是一个未经测试的示例: