基于DNS名称的NAT路由(反向TCP代理?)

介绍

我有一个路由器,运行pfSense(可以是任何东西,因为它是VMware上的一个虚拟机,所以如果解决scheme需要其他东西,我没事),在它后面有多个虚拟机(NAT)。

我想完成什么

我想使用某种types的代理来使用具有1个IP的多个服务,最好基于DNS。 例如; 在mail.domain.com上运行一个邮件服务器(和webaccess的网站),在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是唯一可能的,那么也可以)redirect到相应的虚拟机。

基于所使用的DNS主机名进行任何types的代理还要求应用协议以某种方式携带主机头。

据我所知,在FTP中没有这样的头文件,所以我不知道这将是可能的。 也许用一个自定义的FTP代理,根据用户名或类似的东西把你发送到不同的服务器。

TLDR:我不认为你的最终目标是可能的。 您需要多个外部IP地址。