有没有办法根据子域转发端口?

Dav*_*vy8 3 port-forwarding subdomain

可能的重复:
如何使用 DNS 将域重定向到我的服务器上的特定端口

基本上我想要这样的东西:

name1.mydomain.com:1234 -> my.internal.ip.address:10001
name2.mydomain.com:1234 -> my.internal.ip.address:10002
name3.mydomain.com:1234 -> my.internal.ip .address:10003
name4.mydomain.com:1234 -> my.internal.ip.address:10004
name5.mydomain.com:1234 -> another.internal.ip.address:10001
name6.mydomain.com:1234 -> 另一个.internal.ip.地址:10002

可以在路由器级别、内部 DNS 服务器级别,甚至可以在本地网络上运行某些应用程序的其他计算机,这些应用程序只是将流量传递到正确端口上的正确计算机。

更多说明:它不是 HTTP 流量,而是我们自己的自定义协议(我们自己的客户端/服务器应用程序在 .NET 中使用 Remoting)

wom*_*ble 5

好吧,让我们澄清一些困惑......

首先,您的问题中没有明确要求所有这些名称都解析为相同的 IP 地址 - 因此,您可以将地址块分配给您的路由器设备,将 DNS 记录设置为提供一对一的将名称映射到 IP 地址,然后使用 DNAT(目标网络地址转换)将流量转发到内部设备。

我将继续假设您没有能力抛出一堆 IP 地址来解决问题。

一般来说,对于在 TCP 或 UDP 内部运行的任意协议(因为在 IP 之上运行的其他协议不一定有任何端口的概念),您无法做您想做的事情,因为不能保证有是流量“流”内允许进行此类路由的任何信息。某些协议为了解决这个问题,确实在其协议中嵌入了名称信息(例如 HTTP,带有Host标头),对于这些协议,通常代理接收请求,确定所提供的名称,然后将请求路由到适当的位置。其中一些代理已在其他答案中提到,如果这些还不够,如果您告诉我们您尝试代理的第 7 层协议,您无疑会收到适当的答案。

然而,绝大多数协议都不会基于名称来识别其预期目的地,对于这些协议,您别无选择,只能使用 IP 地址来控制流向不同内部端点的流量。

编辑:如果您正在定义自己的协议,则应该可以将您要连接的主机的名称嵌入到其中的某个位置,然后您只需编写自己的代理(可能作为某些代理的插件)现有的软件)来接受这些请求,将它们映射到正确的后端,然后传递它们。