Temos um IP público em uma máquina (máquina1) executando um firewall PF. Temos várias máquinas atrás desse firewall em uma LAN.
Na máquina2 da lan temos um serviço rodando na porta 443. Para disponibilizar esse serviço fora da lan (internet), redirecionamos via PF na máquina1.
rdr on $ext_if proto tcp from any to $ext_addr port 443 -> SOMEIP port 443
Agora tenho uma máquina3 na lan também com um serviço rodando na porta 443.
Temos nomes de domínio configurados como machine2.example.com e machine3.example.com, ambos apontando para o IP público em uma máquina1.
Existe uma maneira de tornar o PF "ciente do nome de domínio" e determinar para qual máquina com serviço no 443 rotear? Alterar as portas em qualquer máquina da LAN não deve ser uma opção.
Responder1
Com base na documentação do PF do OpenBSD, nomes de domínio totalmente qualificados são suportados.
Documentação para src_addr, dst_addr
menciona isso:
Um nome de domínio totalmente qualificado que será resolvido via DNS quando o conjunto de regras for carregado. Todos os endereços IP resultantes serão substituídos na regra.`
Responder2
Embora eu não ache que o iptables seja capaz de filtrar solicitações por domínio, isso parece um trabalho perfeito para nginx
. Se você puder instalá-lo no pfSense, poderá configurá-lo como um proxy para outros servidores com base em várias configurações de domínio/IP. Ele pode até atuar como balanceador de carga, se necessário, e você não precisará configurar seu firewall.
Como alternativa, você pode configurar um servidor proxy nginx separado em uma das VMs. Seu firewall redirecionará todo o tráfego para as portas 80 e 443 para aquela VM, que usará o nginx para fazer proxy de solicitações para VMs específicas. Também pode ser configurado em qualquer uma das VMs existentes.