![如何创建支持多主机的 TCP 代理?](https://linux22.com/image/768816/%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BA%E6%94%AF%E6%8C%81%E5%A4%9A%E4%B8%BB%E6%9C%BA%E7%9A%84%20TCP%20%E4%BB%A3%E7%90%86%EF%BC%9F.png)
我想创建一个支持多个主机的 TCP 代理。我看到的示例是使用 DNS 服务器将特定主机指向其中已硬编码主机的 TCP 代理。TCP 代理无法处理多个主机,因为如果所有主机都路由到 TCP 代理,代理将不知道将数据发送到哪里。有什么方法可以解决这个问题吗?
答案1
TCP 通过 IP 工作,而 IP 没有主机(名称)的概念,只有 IP 地址。
因此,TCP 也只知道 IP 地址,而不知道主机名。
如果您想要处理主机名,则需要基于 TCP 的协议(例如:HTTP、SSH 等)或在使用 TCP 之前将名称转换为 IP 地址,因为 DNS 通常提供该功能。
或者您需要您的“TCP”代理侦听单独的端口并根据访问的端口代理事物。但是,您仍然面临将名称映射到 IP 地址(代理的)及其端口的问题,这是可能的,但使用 DNS 会更困难(如果您控制客户端,您可以使用SRV
记录或将来的SVCB
记录来做到这一点)。