Para responder à sua pergunta, tenho certeza de que não há funcionalidade como essa, em primeiro lugar porque o SSH é um protocolo baseado em TCP em vez de UDP.
O método padrão para alcançar hosts atrás de um gateway é usar a opção ProxyCommand
no seu arquivo ~/.ssh/config
.
Túneis são explicados em outro lugar , mas o básico é que você pode basicamente "hop" seu SSH através de proxies simplesmente especificando um comando que irá abrir uma conexão TCP: 22 a um host remoto que pode funcionar como o próximo salto SSH. (Embora em muitos casos você só precise de um proxy.)
Por exemplo, usando os nomes de host que você mencionou na sua pergunta, você pode adicionar o seguinte ao arquivo .ssh / config de my-laptop
:
host server-behind-firewall
ProxyCommand ssh -xaqW%h:22 my-known-server
Você então ssh para server-behind-firewall
, o cliente ssh em seu laptop estabelecerá uma conexão com my-known-server
, que estabelecerá uma conexão com o servidor com firewall e fará o proxy do tráfego de volta para você. Isto implica que você tem uma conta SSH em my-known-server
. Embora os proxies talvez não sejam a maneira mais eficiente de gerenciar dados, isso é seguro, bem documentado e o método aceito para fazer esse tipo de conexão.
A idéia de "pares [criando] conexões UDP ... e [enviando] pacotes diretamente uns para os outros" só funciona se as máquinas puderem se conectar diretamente umas com as outras. Como sua máquina com firewall NÃO PODE ser acessada diretamente, a única maneira de alcançá-la é através do proxy em seu gateway.
Se o seu servidor com firewall estiver em uma rede que usa NAT para alcançar o mundo externo, é possível que o servidor possa estabelecer sua própria conexão independente com algum local externo para contornar o firewall. Mas cuidado de fazer isso. Administradores de rede tomam estratégias de bypass de firewall MUITO a sério. Para manter seu acesso às coisas, você deve trabalhar com os administradores da rede para encontrar uma solução, e não ao redor deles.