Corretor de túnel SSH sobre IPV4 para máquinas atrás de CNAT

Corretor de túnel SSH sobre IPV4 para máquinas atrás de CNAT

Não tenho certeza se deveria perguntar isso em Unix e Linux ou Engenharia de Rede

Aqui está o cenário físico

[Host 1]----[NAT de nível de operadora]---->AWS<----[NAT de nível de operadora]----[Host 2]

Anfitrião 1eAnfitrião 2são ssh reverso (autossh) em uma caixa AWS, portanto, eles têm conectividade shell, se necessário, e possibilidade de expor qualquer outra porta, se necessário.

Anfitrião 2envia dumps de backup paraAnfitrião 1usando SCP regularmente. Na verdade existemAnfitrião2 X 10caixas empurrando os despejos de dados. O local mais próximo da AWS fica bem longe do local das caixas, então a latência é bastante grande.

Existe a possibilidade de usar a caixa AWS como ponto de encontro para intermediar um túnel ssh entre as caixas? Estou ciente dos corretores de túneis IPv6, mas os ISPs da região ainda não os adotaram (20 anos atrasados... duh!) Estou explorando uma solução baseada em:

  • Perfuração TCP / UDP (com implementação prática)
  • Serviço UPnP/NAT-PMP na AWS
  • Usando ferramentas como o Chrome Remote Desktop, hackeie-o para expor a porta SSH em vez do VNC
  • Qualquer outro serviço de roteador.
  • Qualquer outra abordagem prática.

As caixas estão executando principalmente o CentOS 6/7.

Responder1

No entanto, não é exatamente o que você precisa: você pode expor a porta local invertida host1 ou host2 como uma porta externa usando iptables. Então, digamos que você conectou seu host2 como túnel reverso ssh:

user2@host2 $ ssh -R 9999:localhost:22 [email protected]

Agora você pode encaminhar a porta de entrada aws.com:9999 para aws [localport:9999]: No servidor AWS:

[email protected] # iptables  -t nat -I PREROUTING -p tcp --dport 9999 -j DNAT --to 127.0.0.1:9999

E agora você pode se conectar do host2 ao host1 desta forma:

user1@host1 $ ssh [email protected] -p 9999

Bingo. Você se conectou desta forma:

[host 1] --> [aws:port 9999] --> [aws: túnel reverso em 127.0.0.1:9999] --> [host 2]

Você deve remover o registro iptable quando esta conexão não for mais usada:

[email protected] # iptables -t nat -A PREROUTING -p tcp --dport 9999 -j DNAT --to 127.0.0.1:9999

A desvantagem desta solução é que o host2 fica exposto a todos através da porta externa 9999. Você ainda precisa digitar uma senha para login, porém ela fica exposta.

UPD: talvez você também precise ativar o encaminhamento local:

awsuser@aws # ls echo 1 > /proc/sys/net/ipv4/conf/all/route_localnet

Ou em vez de habilitá-lo para todas as interfaces habilite apenas na interface de renda:

awsuser@aws # ls echo 1 > /proc/sys/net/ipv4/conf/eth0/accept_local

informação relacionada