因此,基本思想已在上面的问题中陈述,但请让我解释一下。
我原本想在我家的专用服务器上的虚拟机中托管一个 Minecraft 服务器(使用桥接模式,这样我就可以通过端口转发将流量引导到它)。最近,一位朋友问我是否也可以为他的中等规模的 discord 服务器托管一个服务器。我自然同意了。我的计划是简单地打开第二个虚拟机供他的服务器运行,并让他通过 SSH 访问它。
但是现在,我面临的问题是 Minecraft 默认使用某个端口进行连接。我真的不想要求人们在 URL 末尾添加端口号。那么,如果两个 VM 的传入流量都在同一个端口上,我该如何将一个 VM 的流量与另一个 VM 的流量分开?这可能吗?我可以将同一个端口转发到两个不同的内部 IP 地址吗?
我正在考虑也许可以使用 mc1.mydomain.com 和 mc2.mydomain.com 将流量自动路由到不同的传入端口,即将端口绑定到域名。
我不知道我是否只是在幻想一些不可能的事情。如果能得到一些帮助我将不胜感激。
提前致谢。
附言:我没有选择使用固定 IP 地址,因此我只能使用动态 DNS 服务。
答案1
你不能,一个 TCP 端口只能转发到一个内部服务器(除非你想对它们进行负载平衡,为此你需要 1)一个负载平衡器和 2)两台实际运行相同应用程序的服务器,而不是两台不同的服务器)。
类似的事情只能通过 HTTP(S) 使用反向代理来实现,它可以检查请求的 URL 并根据请求的内容将流量发送到不同的服务器;这允许通过同一个反向代理发布多个 Web 服务器。但这只有在 HTTP(S) 在应用层明确支持它时才有可能。在网络层没有类似的东西,您只能在那里使用 IP 地址和端口。