Basicamente, você precisa simplificar as coisas primeiro e tentar orientação de que você tem certeza. E bom senso. Eu posso simpatizar muito com as perguntas do iptables
, pois uma vez eu passei 3 dias trabalhando nisso e os conceitos rapidamente ficam confusos, a menos que você tenha uma configuração que funcione bem.
Para que o ssh funcione, você só precisa disso se a política padrão for ACCEPT:
iptables -t nat -A PREROUTING -d 101.101.101.101 -p tcp --dport 25122 -j DNAT --to-destination 10.0.1.251:22
No entanto, nas regras do servidor, prefiro distinguir os objetos não pelo endereço IP, mas pelo nome da interface. Digamos que a interface externa seja eth4
e a interface voltada para sua rede seja eth1
, então isso deve funcionar e ser suficiente:
iptables -t nat -I PREROUTING -p tcp -i eth4 --dport 25122 -j DNAT --to-destination 10.0.1.251:22
iptables -A FORWARD -i eth4 -o eth1 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth4 -p tcp -j ACCEPT
As últimas duas regras são necessárias no caso de a política de cadeia FORWARD ser algo diferente de ACCEPT.
Você pode listar interfaces da seguinte forma: ip addr list
.
Antes de decidir se as alterações não funcionam, lembre-se de restaurar o firewall para o estado padrão desejado antes de aplicar as alterações críticas. Por exemplo, liberar correntes e reiniciar o serviço iptable. E você já ativou o encaminhamento no kernel.
Boa sorte!