
A configuração que tenho é esta:
[client01] <-A-> [server01] <-B-> [server02]
client01
pode acessar a porta 9300 em server01
(conexão A
). server01
só pode acessar a porta 9300
em server02
(conexão B
)via ssh. Qual é a melhor maneira de fazer com que todo o tráfego na porta 9300
vá server01
para a 9300
porta server02
?
Posso fazer isso com sucesso com um túnel ssh de client01
to server01
to server02
, mas não quero ter que executar ssh on client01
. Quando faço ssh server01
para server02
encaminhar a porta 9300 ( ssh -g -L9300:localhost:9300 server02
on server01
), não funciona - estou usando o comando errado?
EDIT: adicionado que server02 só pode ser acessado via ssh
Responder1
Você pode fazer isso com uma regra DNAT do iptables - algo como:
iptables -A PREROUTING -p tcp -d x.x.x.x --dport 9300 -j DNAT --to-destination y.y.y.y:9300
Substitua o endereço IP de server01 por x.x.x.x
e o endereço de server02 por y.y.y.y
e pronto.
Tudo isso pressupõe, é claro, que você esteja executando o iptables no server01. Isso também pressupõe que o server02 esteja usando o server01 para rotear o tráfego de volta para a Internet. Se o server02 não estiver, isso não significa fazer o que você deseja.
Edite considerando a conectividade somente SSH entre as máquinas:
Sua linha de comando para o encaminhamento de porta SSH parece correta, exceto que você precisa de um espaço entre "L" e "9300". Você também precisará ter certeza de que o computador server01 aceitará conexões de entrada na porta 9300. Dê uma olhada em sua cadeia INPUT do iptables na tabela de filtros ( iptables -L INPUT
) para ter certeza de que o tráfego será permitido.
Você também precisará que esse túnel seja mantido persistentemente.