因此我一直在尝试弄清楚如何将子域重定向到特定端口。
假设应用程序将始终请求默认端口,并且该默认端口为 30000。我们有 sub1.domain.com、sub2.domain.com 和 sub3.domain.com,它们都指向同一个 IP。我想将请求重定向到 sub1.domain.com:30000 到端口 31000,将 sub2 重定向到 32000,将 sub3 重定向到 33000。它们都位于同一个 IP 上。
我尝试过 socat/netcat 和 iptables,但它们都将域解析为 IP 地址,在这种情况下,IP 地址是相同的,因此它会破坏重定向。
有什么想法吗?这可能吗?我有一些网络知识,对分层也有些了解……这里的问题是跨层的,所以我不确定是否有办法做到这一点,除非我编写一个侦听该端口并根据请求的域进行重定向的服务器……:\
先感谢您。 :)
答案1
我不认为 iptables 能做到这种事情。它更适合处理 IP 而不是域名。
对于 HTTP 流量,您可以使用代理服务器(或 HTTP 负载平衡器)来执行这样的操作,它将获取您的请求并根据定义的规则将其重定向。
如果这是非 HTTP 流量,除非您提供更具体的信息,否则我们无法为您提供更多帮助。但是,鉴于您的协议的行为与 HTTP 类似,基本思路可以相同。@Yvette 提到的一个重要注意事项是添加主机信息(例如Host
HTTP 中的标头)。否则,您可能无法识别请求的子域名。
答案2
您可以尝试在请求中添加一个标头,以标识要请求哪个主机。
这就像下面的请求。
HOST: xxoo1 ** 您的原始请求数据 **