NAT-ing com o iptables reescreve o IP de origem nos logs

1

Eu tenho a seguinte infraestrutura:

 internet   [outside 81.x.x.x] router [inside 192.168.1.1] 
                                    |    [network 192.168.1.0/24] 
                                    | 
                                   mail server [192.168.1.2]

No roteador (DD-WRT) com iptables. Eu tenho o NAT habilitado, pois quero que o meu servidor de e-mail responda pelo IP externo. Eu tenho a seguinte configuração:

iptables -t nat -I PREROUTING -d 81.x.x.x -j DNAT --to 192.168.1.2 
iptables -t nat -I POSTROUTING -s 192.168.1.2 -j SNAT --to 81.x.x.x 
iptables -I FORWARD -d 192.168.1.2 -p tcp --dport 25 -j ACCEPT

com algumas outras portas abertas também.

No entanto, quando o correio chega ao postfix do servidor de correio, mostre a seguinte mensagem:

postfix/smtpd[6964]: connect from unknown[192.168.1.1]

Todos os e-mails vindos de fora parecem estar chegando com os roteadores dentro do endereço IP. O que estou perdendo, para que o endereço IP original seja mostrado, em vez dos roteadores dentro do IP?

    
por Zoli 22.02.2015 / 08:01

2 respostas

0

Parece que você configurou um NAT de 1 para 1 com as duas primeiras regras do iptables, mas adicionou uma terceira regra bastante interessante:

iptables -I FORWARD -d 192.168.1.2 -p tcp --dport 25 -j ACCEPT

Tais regras não são necessárias quando se faz NAT 1-para-1 e, na verdade, não fazem nada útil. Das informações que você forneceu, essa parece ser a causa mais provável do problema. Simplesmente remova-o.

iptables -D FORWARD -d 192.168.1.2 -p tcp --dport 25 -j ACCEPT
    
por 22.02.2015 / 15:30
0

ISTR esquisitices como essa antes, mas há algo faltando como você diz. As informações a seguir podem ser úteis no roteador:

iptables -t nat -L -n
iptables -L -n
ip route

E isso do servidor de e-mail:

iptables -t nat -L -n
ip route
grep . /proc/sys/net/ipv4/conf/*/rp_filter

Sem essa informação, acho que acabei de eliminar o firewall existente e fazer algo mais específico:

iptables -t nat -F  # also on server
iptables -t nat -I PREROUTING -p tcp -d 81.x.x.x --dport 25 \
    -j DNAT --to 192.168.1.2:25

E veja o que está acontecendo nos registros de e-mail. Se você precisar do SNAT para SMTP de saída, algo como:

iptables -t nat -I POSTROUTING -p tcp -s 192.168.1.2 --dport 25 \
    -m multiport --sports 1024:65535 -j SNAT --to 81.x.x.x:25

E se um resolvedor de DNS local for insuficiente:

iptables -t nat -I POSTROUTING -p udp -s 192.168.1.2 --dport 53 \
    -j SNAT --to 81.x.x.x
    
por 22.02.2015 / 19:49