Roteamento NAT baseado no nome DNS (proxy TCP reverso?)

Roteamento NAT baseado no nome DNS (proxy TCP reverso?)

Introdução

Eu tenho um roteador rodando pfSense (pode ser qualquer coisa já que é uma máquina virtual no VMware, então se a solução exigir mais alguma coisa, por mim tudo bem) e atrás dele tenho várias máquinas virtuais (NAT).

O que eu gostaria de realizar

Eu gostaria de usar algum tipo de proxy para usar vários serviços com 1 IP, de preferência baseado em DNS. Por exemplo; executando um servidor de e-mail (e site para acesso à web) em mail.domain.com e executando um site em www.domain.com e executando um servidor FTP em ftp.domain.com, mas todos são máquinas virtuais diferentes.

Então, basicamente:

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

Então pensei em usar o HAProxy, mas o HAProxy só permite isso para tráfego HTTP e não para tráfego TCP "normal" (com base no nome DNS). eu gostaria de tertodosportas (TCP e UDP, mas se o TCP só for possível, tudo bem também) sejam redirecionadas para a respectiva máquina virtual.

Responder1

Fazer qualquer tipo de proxy com base no nome de host DNS usado também requer que o protocolo do aplicativo carregue o cabeçalho do host de alguma forma.

Que eu saiba, não existem tais cabeçalhos envolvidos no FTP, então não vejo como isso será possível. Talvez com um proxy FTP personalizado, que o envie para servidores diferentes com base no nome de usuário ou algo parecido.

TLDR: Não acho que seu objetivo final seja possível. Você precisa de mais de um endereço IP externo.

informação relacionada