Sua primeira regra iptables
é correta e suficiente para realizar o trabalho. Eu consideraria especificar explicitamente uma interface de entrada como:
iptables -t nat -A PREROUTING -i ${wan_if} -d ${jumper_ip} -p tcp --dport 22 -j DNAT --to-destination ${invisibleserver_ip}
Mas isso não é necessário. Sua regra POSTROUTING
é um pouco falha. Eu não acho que isso vai quebrar nada. Mas é melhor removê-lo. É aplicável quando o cliente está rodando na porta 22, o que não é o caso do SSH.
A regra FORWARD
é totalmente redundante, a menos que você tenha feito outras alterações, sobre as quais não nos contou. A política padrão é ACCEPT
. Uma única regra com ACCEPT
e uma política padrão de ACCEPT
resultará na aceitação de todos os pacotes, independentemente de o pacote corresponder aos critérios. Assim, você pode simplesmente remover essa regra e confiar na política ACCEPT
padrão.
Nada disso explica o que está causando o problema. As razões para isso são duas. Você não explicou o problema que está vendo e não mencionou todos os detalhes relevantes da sua configuração para identificar a verdadeira razão.
No entanto, posso sugerir algumas hipóteses:
- Você não habilitou o encaminhamento de pacotes.
- Seu roteamento é configurado de forma que apenas os pacotes em uma direção passem pelo seu servidor de salto.
- Os pacotes estão sendo descartados por outras regras, que você omitiu da sua pergunta.
Primeiro, verifique se o encaminhamento está ativado, digitando:
cat /proc/sys/net/ipv4/ip_forward
Se estiver desativado, você pode ativá-lo digitando:
echo 1 >/proc/sys/net/ipv4/ip_forward
E se isso resolver o problema, você poderá torná-lo permanente atualizando /etc/sysctl.conf
.
Se o seu roteamento estiver configurado de forma que os pacotes de retorno não sejam roteados através do seu host de salto, você poderá adicionar uma regra SNAT
à sua corrente POSTROUTING
que precisa aplicar aos mesmos pacotes SYN que foram manipulados pelo seu DNAT
rule.
Se você quiser saber sobre possíveis desvantagens de usar DNAT
para isso e algumas alternativas. Eu tenho respondido uma pergunta semelhante no passado.
Se o problema for causado por regras adicionais do iptables, que você não mencionou na sua pergunta, será necessário remover ou corrigir essas regras. Obviamente, não posso fornecer mais detalhes sobre isso sem conhecer o conteúdo e o propósito dessas regras - se houver.