[RESOLVIDO] 3 Servidores de E-mail saindo com IPS diferentes.



  • Boa tarde senhores …

    Acabei de configurar um PFSense-2.2 aqui na empresa ...

    O nosso cenário é:

    Temos 2 links de internet com 5 ips válidos cada link, fazendo loadbalance / failover.

    O Gateway do link 1 é: 100.100.100.100
    O Gateway do link 2 é: 200.200.200.200

    Atrás desse PFSense na minha DMZ tenho 3 servidores de e-mail.

    Para cada servidor de e-mail quero dar 1 ip válido (de cada link) para que seja enviado e-mail com esse IP.

    Dessa forma:
    O servidor 1 vai sair com o IP 100.100.100.101 (link 1). Caso o link 1 caia, ele deverá sair com 200.200.200.201 (link 2). IP LOCAL = 192.168.1.1
    O servidor 2 vai sair com o IP 100.100.100.102 (link 1). Caso o link 1 caia, ele deverá sair com 200.200.200.202 (link 2). IP LOCAL = 192.168.1.2
    O servidor 3 vai sair com o IP 100.100.100.103 (link 1). Caso o link 1 caia, ele deverá sair com 200.200.200.203 (link 3). IP LOCAL = 192.168.1.3

    Pensei em algo assim:

    Quando a origem for 192.168.1.1 e estiver enviando e-mail o IP sainte deverá ser 100.100.100.102 ou 200.200.200.203
    Quando a origem for 192.168.1.2 e estiver enviando e-mail o IP sainte deverá ser 100.100.100.102 ou 200.200.200.203
    Quando a origem for 192.168.1.2 e estiver enviando e-mail o IP sainte deverá ser 100.100.100.102 ou 200.200.200.203

    Não sei se fui claro, mas estou enroscado nessa parte.

    Antes de implantar o PFSense eu tinha essa configuração em IPTABLES e SHELL SCRIPT (pra trocar o parâmetro smtp_bind_address do postfix) quando o link caia. Funcionava 100% ...

    Deve ter alguma forma de se fazer isso no PFSense, mas ainda não achei a solução.

    Quero que esse IP fique registrado no cabeçalho do e-mail (na maioria das vezes, é clicar em cima do e-mail e pedir para MOSTRAL ORIGINAL). Ele te mostra de qual IP foi enviado o e-mail.

    Obrigado por qualquer ajuda.

    Ronaldo Araujo



  • Se os servidores de email não estão no seu firewall, você só precisa criar as regras de balanceamento e definir o ip de saída de cada link no outbound nat.



  • Bom dia Marcelo …

    Obrigado pela atenção.

    Vamos lá:

    Os meus servidores não estão no firewall. Tenho uma outra máquina onde os 3 servidores são executados. Essa máquina está na minha DMZ.

    Eu já tenho a regra de balanceamento ... Tanto que se um link cai, o pFSense já troca o meu IP de saída (Gateway 1 e Gateway 2)

    Alterei o Mode do Outubound para MANUAL.

    A regra outbound que montei foi a seguinte:

    Interface: DMZ

    Protocol: TCP/UDP

    Source Type: NetWork
    Source Address: 192.168.1.1/32
    Source Port: deixei em branco

    Destination Type: Any
    Destination Port: deixei em branco

    Translation Address: coloquei o IP que quero que seja registrado no caso 100.100.100.101. O gateway dessa rede é: 100.100.100.100
    Translation Port: deixei em branco

    A lógica que usei foi: qdo a origem for a minha DMZ e o destino for *, troque o IP para 100.100.100.101 ...

    Fiz o envio do e-mail e no cabeçalho do mesmo ainda está indo o IP do gateway (100.100.100.100) ao invés do IP que eu setei (100.100.100.101).

    Algumas tentativas que fiz:

    1. Trocar a Interface para WAN.
    2. Trocar  Source Address para 192.168.1.0/24

    E mesmo assim nada ...

    Obrigado mais uma vez pela ajuda.



  • No outbound nat, as regras são definidas pela interface de saída, não de entrada.



  • Entendi …

    Alterando o Source Type para any, todos os meus e-mails começaram a sair com o IP que eu informei em Translation Address.

    Agora a questão é, como fazer para cada servidor (tenho 3), cada 1 sair com 1 IP diferente ? Como não se tem um campo para informar qual a origem, não estou conseguindo visualizar a solução.

    Talvez com NAT ?

    Obrigado e desculpa a falta de conhecimento para visualizar a solução.



  • @ronaldog.araujo:

    Entendi …

    Alterando o Source Type para any, todos os meus e-mails começaram a sair com o IP que eu informei em Translation Address.

    Agora a questão é, como fazer para cada servidor (tenho 3), cada 1 sair com 1 IP diferente ? Como não se tem um campo para informar qual a origem, não estou conseguindo visualizar a solução.

    Talvez com NAT ?

    Obrigado e desculpa a falta de conhecimento para visualizar a solução.

    Creio que deva criar uma regra de nat outbound colocando no campo "source" o IP do seu servidor e em "Translation Address" o IP que você quer que apareça no cabeçalho.  Essa regra também deve estar antes de outra regra que abranja toda a rede DMZ.



  • Claro que tem opção de origem. Você mesmo postou em seu outbound nat.



  • A questão principal ao meu ver é: O pfSense trocará a regra de Outbound ativa quando o gateway em questão estiver offline?

    Montando de cabeça o problema, vc teria que configurar outbound pros dois gateways, , maaas só o que possuí gateway ativo deverá funcionar.

    Pensei também em vários NAT 1:1, conforme o gateway estiver ativo, o IP válido correspondente começa a responder.

    Me corrijam se falei bobeira.



  • @santeLLo:

    A questão principal ao meu ver é: O pfSense trocará a regra de Outbound ativa quando o gateway em questão estiver offline?

    Montando de cabeça o problema, vc teria que configurar outbound pros dois gateways, , maaas só o que possuí gateway ativo deverá funcionar.

    Pensei também em vários NAT 1:1, conforme o gateway estiver ativo, o IP válido correspondente começa a responder.

    Me corrigem se falei bobeira.

    Exatamente.  Se você observar nas regras automáticas, existirá sempre um Nat colocando o IP addres da interface de saída para cada link de internet.  Sem isso não tem navegação



  • Desculpa Marcelo o post pergunta sobre o source …

    Depois que postei ele olhei com calma e refiz a configuração ...

    Por enquanto estou me preocupando com somente um link... Funcionando essa parte, a questão dos 2 links comentados pelos amigos será estudado por mim, mas já agradeço as dicas dadas.

    Senhores agora está funcionando ...

    Enviando dos 3 servidores fisícos, cada email sai com o IP configurado ...

    Agora fui para o ambiente oficial da minha empresa ... Esses 3 servidores são virtualizados em 1 único servidor rodando 3 instancias do Postfix ... Nesse cenário, voltou a enviar e-mail com o IP errado.

    Para funcionar, só precisei adicionar o parametro smtp_bind_address = 192.168.1.X (onde X é o IP da instancia) em cada main.cof do Postifix ...

    Como as 3 instancias do Postfix rodam no mesmo servidor, além do IP físico da placa, criei mais 2 IP's virtuais e com o smtp_bind_address eu informo qual é o IP de saida o Postfix e o PFSense faz o filtro ....

    A minha configuração está assim agora:

    Interface: WAN
    Protocol: TCP/UPD

    Source Type: NetWork
    Source Address: 192.168.1.1/32 
    Source Port: deixei em branco

    Destination Type: Any
    Destination Port: 25

    Translation Address: 100.100.100.101.
    Translation Port: deixei em branco

    Tenho mais 2 regras onde só mudo o Source Address para: Source Address: 192.168.1.2/32  e na outra para Source Address: 192.168.1.2/32 .

    Agora cada instancia do Postix sai com um IP diferente ...

    Agora vamos para o FailOver dessa minha situação.

    Obrigado

    Ronaldo Araujo