É possível suspender um soquete (sessão SSH, especificamente) para alternar dispositivos de rede?

2

Ao retomar um espaço de trabalho tmux no meu laptop, eu regularmente tenho que decidir entre a conexão com fio e WiFi. A Ethernet tem latência muito baixa, mas me obriga a reconectar sempre que o laptop é movido. Enquanto o outro exibe obstáculos ocasionais (momentos lentos), mas me permite mover o laptop sem perder a conexão.

Quais tecnologias existem que poderiam salvar o estado de um soquete de rede, suspendê-lo e, em seguida, trazê-lo de volta vivo através de uma interface de rede diferente? Isso seria mudar o endereço IP!

Qual é a maneira mais prática de alcançar algo assim, ou seria necessário ter que ser incorporada ao próprio aplicativo? Eu estou supondo que o último, porque uma única conexão deve ter um 4-tuple de endereços IP e portas de origem e destino.

Mesmo se este fosse o caso, é lógico que um nível de abstração poderia ser construído para suportar o roaming de conexão. Conceitualmente, algum "serviço de wrapper" para o sshd no computador host que escuta na rede. Enquanto o cliente ssh também precisaria se conectar a um serviço "wrapper" de conexão de saída local.

Após a interrupção, o "serviço" começará a bloquear as tentativas dos aplicativos de se comunicarem pelo soquete até o momento em que uma conexão entre os computadores possa ser restabelecida. Teoricamente, este serviço de intermediário pode usar pidgeons de portadora (ok, ok, digamos, uma implementação completamente independente de TCP escrita em cima de UDP) como camada de transporte.

Esse software existe (para manter uma conexão ativa mesmo se você fizer algo como trocar de dispositivo de rede)?

    
por Steven Lu 23.07.2013 / 04:33

2 respostas

2

Eu não acho que nada como o que você está procurando existe, mas para o seu problema específico, Mosh pode ser uma prática solução.

    
por 23.07.2013 / 06:17
-1

Seu problema seria resolvido por usando screen .

screen é um processo que executa um terminal virtual. Você pode desconectá-lo e, em seguida, reconectar-se a ele posteriormente. Você pode ter qualquer número de screen s em execução. Se você estiver fisicamente desconectado, a tela "virtual" permanecerá ativa e você poderá se reconectar a ela mais tarde.

    
por 23.07.2013 / 05:04