redirecionar tudo, exceto uma porta para outro servidor com iptables

redirecionar tudo, exceto uma porta para outro servidor com iptables

Mudei para um novo servidor web e agora redireciono todo o tráfego para o novo servidor com

echo "1" > /proc/sys/net/ipv4/ip_forward
#clear old rules:
iptables -F
iptables -t nat -F
#masquerade and redirect everything:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -d 1.1.1.1 -j DNAT --to-destination 2.2.2.2

o que funciona bem, até que todas as entradas DNS estejam generalizadas. Mas agora não consigo mais fazer login no antigo mashine.

Como posso manter aberta uma porta SSH no antigo servidor 1.1.1.1?

Responder1

No iptables, a primeira regra correspondente vence. Portanto, a ordenação correta das regras é importante.

Neste caso, a regra que diz o que fazer com o tráfego da porta 22 deve virantesa regra que diz o que fazer com "todo o resto". E embora RETURN funcione se a política da cadeia permanecer inalterada em relação ao padrão, pode ser mais claro ser explícito e usar apenas ACCEPT como sinônimo de "apenas processar isso normalmente":

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -m tcp -p tcp --dport 22 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -d 1.1.1.1 -j DNAT --to-destination 2.2.2.2

informação relacionada