Iptables MASQUERADE apenas portas selecionadas

Iptables MASQUERADE apenas portas selecionadas

Fiz encaminhamento de porta seguindo este tutorial: http://www.debuntu.org/how-to-redirecting-network-traffic-to-a-new-ip-using-iptables/

iptables -t nat -A PREROUTING -p tcp --dport 1111 -j DNAT --to-destination 2.2.2.2:1111

iptables -t nat -A POSTROUTING -j MASQUERADE

Mas quero MASCARAR apenas as portas com os encaminhamentos, pois no mesmo servidor tenho um servidor web e se eu MASCARAR todo o tráfego o servidor web para de funcionar.

Qualquer ideia?

SOLUÇÃO: iptables -t nat -A POSTROUTING -d 2.2.2.2 -p tcp --dport 1111 -j SNAT --to-source 2.2.2.1

Responder1

se vocêrealmentequiser fazer um MASQUERADE, então a maneira correta de fazer isso é assim:

iptables -t nat -A PREROUTING -p tcp --dport 1111 -j DNAT --to-destination 2.2.2.2:1111
iptables -t nat -A POSTROUTING -d 2.2.2.2 -p tcp --dport 1111 -j MASQUERADE

desta forma MASQUERADEserá aplicada apenas a pacotes editados por DNAT.

Observe, entretanto, que MASQUERADEse destina principalmente a casos de IP dinâmico (como dial-up) e, no caso de um IP estático, SNATdeve ser usado exatamente da maneira que você propôs. Da iptablespágina de manual:

Ele só deve ser usado com conexões IP (dialup) atribuídas dinamicamente: se você tiver um endereço IP estático, deverá usar o destino SNAT. O mascaramento equivale a especificar um mapeamento para o endereço IP da interface pela qual o pacote está saindo, mas também faz com que as conexões sejam esquecidas quando a interface fica inativa. Este é o comportamento correto quando é improvável que a próxima conexão dial-up tenha o mesmo endereço de interface (e, portanto, quaisquer conexões estabelecidas serão perdidas de qualquer maneira).

há uma ressalva para ambos MASQUERADEe SNAT: não funcionará se 2.2.2.2 for VIP na mesma máquina.

informação relacionada