![基于 DNS 名称的 NAT 路由(反向 TCP 代理?)](https://linux22.com/image/660467/%E5%9F%BA%E4%BA%8E%20DNS%20%E5%90%8D%E7%A7%B0%E7%9A%84%20NAT%20%E8%B7%AF%E7%94%B1%EF%BC%88%E5%8F%8D%E5%90%91%20TCP%20%E4%BB%A3%E7%90%86%EF%BC%9F%EF%BC%89.png)
介绍
我有一个路由器,运行 pfSense(可以是任何东西,因为它是 VMware 上的虚拟机,所以如果解决方案需要其他任何东西,那对我来说没问题),在它后面我有多个虚拟机(NAT)。
我想要实现的目标
我想使用某种代理来使用具有 1 个 IP 的多项服务,最好是基于 DNS 的。例如,在 mail.domain.com 上运行邮件服务器(以及用于网络访问的网站),在 www.domain.com 上运行网站,在 ftp.domain.com 上运行 FTP 服务器,但所有这些都是不同的虚拟机。
基本上来说:
Hostname Internal NAT IP Port
www.domain.com 192.168.1.10 80
mail.domain.com 192.168.1.11 25
mail.domain.com 192.168.1.11 80
mail.domain.com 192.168.1.11 443
ftp.domain.com 192.168.1.12 21
因此,我考虑使用 HAProxy,但 HAProxy 仅允许 HTTP 流量,而不允许“常规”TCP 流量(基于 DNS 名称)。我希望全部端口(TCP 和 UDP,但如果仅可使用 TCP 那么也可以)重定向到相应的虚拟机。
答案1
基于所使用的 DNS 主机名执行任何类型的代理也要求应用程序协议以某种方式携带主机头。
据我所知,FTP 中没有涉及此类标头,因此我不明白这如何实现。也许可以使用自定义 FTP 代理,根据用户名或类似信息将您发送到不同的服务器。
TLDR:我认为您的最终目标不可能实现。您需要多个外部 IP 地址。