Encaminhando uma conexão ssh de uma porta para outra

1

Eu tenho uma caixa B (digamos, em 1.2.3.4 ), da qual eu só posso ssh para a partir de outra caixa A . Mas uma certa ferramenta de desenvolvimento em 192.168.0.1 apenas me permite especificar o host e a porta de um servidor ssh e não algo mais complicado do que isso, então planejo ter uma porta em A para encaminhar automaticamente o tráfego ssh para B .

Eu tentei o seguinte, mas ele sempre me dá Connection timed out . Como eu deveria estar fazendo isso?

sudo iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 1.2.3.4:22
sudo iptables -t nat -A POSTROUTING -p tcp -d 1.2.3.4 --dport 22 -j SNAT --to-source 192.168.0.1
    
por simonzack 14.08.2015 / 00:24

2 respostas

1

Sua regra SNAT está errada. Assumindo que:

  1. Você está executando esses iptables comandos na máquina A e
  2. Essa máquina A não é, na verdade, 192.168.0.1

Em seguida, o valor do argumento --to-source deve ser o endereço IP de A , não o endereço da máquina da qual você deseja permitir a conexão.

Você também pode precisar adicionar algumas outras regras de firewall para permitir que o tráfego da porta 2222 flua; As regras de NAT não funcionam nas regras de filtragem.

Se as coisas ainda não estiverem funcionando após essas mudanças, as capturas de pacotes via tcpdump da máquina A provavelmente revelarão o que está errado.

    
por 14.08.2015 / 02:11
0

Aqui está o que eu tive no final:

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

iptables -P FORWARD DROP
iptables -A FORWARD -i vpn0 -p tcp -s 1.2.3.4 --sport 22 -j ACCEPT
iptables -A FORWARD -i ens192 -p tcp -d 1.2.3.4 --dport 22 -j ACCEPT
iptables -t nat -I PREROUTING -p tcp -i ens192 --dport 2222 -j DNAT --to 1.2.3.4:22
iptables -t nat -A POSTROUTING -p tcp -d 1.2.3.4 --dport 22 -j MASQUERADE
    
por 14.08.2015 / 07:13

Tags