Por que mosh pode manter o login mesmo quando você mudou sua situação de rede?

2

Eu conhecia este aplicativo em outra pergunta no Unix SE.

E diz:

Change IP. Stay connected.

Mosh automatically roams as you move between Internet connections. Use Wi-Fi on the train, Ethernet in a hotel, and LTE on a beach: you'll stay logged in. Most network programs lose their connections after roaming, including SSH and Web apps like Gmail. Mosh is different.

Como isso é possível?

É uma tecnologia de reconexão simples?

    
por AGamePlayer 10.07.2018 / 18:02

2 respostas

7

Principalmente porque o mosh usa um protocolo sem conexão e manipula adequadamente a reassociação entre o cliente e o servidor. Eu não tenho 100% de certeza sobre os detalhes, mas pelo que entendi funciona em geral assim:

  1. Quando você usa o mosh pela primeira vez para se conectar a um host remoto, ele usa SSH regular para efetuar login como você e inicia seu próprio componente de servidor, que escuta em uma porta diferente para conexões.
  2. Mosh fecha a conexão SSH original e cria uma nova sessão de terminal executando seu próprio protocolo. Esse link usa o UDP em vez do TCP, portanto, ele está emulando funcionalmente uma conexão na parte superior de um protocolo sem conexão.
  3. Se o endereço IP do seu cliente mudar, ou a sua rede falhar por algum tempo, ou algo semelhante acontecer, o mosh tenta restabelecer a conexão emulada, continuando a enviar pacotes para o endereço do servidor original. Quando o componente do servidor vê os pacotes vindos do seu novo endereço, ele começa a enviar pacotes de resposta para lá, em vez de seu endereço antigo.

Naturalmente, também há autenticação envolvida (caso contrário, qualquer pessoa poderia sequestrar suas sessões mosh), mas isso não é particularmente importante para como a troca acontece.

Provavelmente vale a pena notar que muitos softwares P2P usam técnicas muito semelhantes (isto é, essencialmente equivalentes aos passos 2 e 3, apenas com algo mais sendo tunelado) para fornecer resiliência contra mudanças de rede. Exemplos de softwares que fazem esse tipo de coisa incluem Syncthing e tinc .

    
por 10.07.2018 / 21:45
1

Sua cotação vem do site, link . Se você começar a ler "Technical Info", sua pergunta será respondida: -).

Is that a simple reconnect technology?

Não é a tecnologia tradicional de reconexão, ou seja, o tempo limite + reconectar. Um exemplo disso seria o tempo limite de SSH / TCP + reconectar manual a tela ou servidores tmux.

mosh é propositadamente projetado como tecnologia de mobilidade. Pode se adaptar muito mais rápido.

Roaming with SSP becomes easy: the client sends datagrams to the server with increasing sequence numbers, including a "heartbeat" at least once every three seconds. Every time the server receives an authentic packet from the client with a sequence number higher than any it has previously received, the IP source address of that packet becomes the server's new target for its outgoing packets. By doing roaming “statelessly” in this manner, roaming works in and out of NATs, even ones that may themselves be roaming. Roaming works even when the client is not aware that its Internet-visible IP address has changed. The heartbeats allow Mosh to inform the user when it hasn't heard from the server in a while (unlike SSH, where users may be unaware of a dropped connection until they try to type).

Outras tecnologias de mobilidade podem causar um curto-circuito nesse atraso de pulsação, nos casos em que o cliente está ciente de que seu endereço IP visível na Internet mudou. Esta seção não diz se mosh se incomoda em fazer isso. A atualização após 3 segundos já torna a sessão mosh interativa útil e muito mais robusta do que os padrões tradicionais. Também há aspectos mais novos do mosh que "Technical Info" explica, sem ter muito esbarrado com os pequenos detalhes:).

Pelo menos como descrito acima, mosh implementa apenas mobilidade para uma extremidade: o cliente. Isso ajuda mosh , evitando a necessidade de terceiros - ao contrário do IP móvel, que exige um "agente doméstico" em execução em um roteador com um endereço IP estável.

Ao implementar a mobilidade, é muito importante que ela seja controlada de forma segura. mosh já inclui segurança inicializada por meio do SSH. IP móvel não tem essa vantagem; parece aproveitar o IPsec. O IPsec é uma extensão opcional do IP, que você deve configurar entre o seu computador e o seu roteador. Ele tende a ser usado apenas em certos cenários restritos.

Há uma terceira semelhança entre o uso de mosh e screen ou tmux : ele só funciona porque os servidores SSH estão configurados para permitir que você deixe um programa em execução indefinidamente após a desconexão. A menos que você use systemd com a configuração padrão "oficial" :). A systemd acredita que a falta de capacidade de controlar isso foi uma falha no histórico Unix. Note que em muitos outros cenários, manter os recursos em uso indefinidamente, quando você não está sequer conectado, seria considerado perigosamente um desperdício. Muitos servidores da Web são configurados para desconectar clientes após alguns segundos de não enviar ou receber uma quantidade significativa de dados. Consulte o link

IP móvel é um projeto antigo. Um projeto muito mais recente é o MP-TCP (TCP multi-caminho). Ele implementa segurança simples para controle de mobilidade. O MP-TCP é mais parecido com o mosh , em que a conexão inicial é feita para um único IP do servidor que não é móvel. Quando a conexão é estabelecida, é teoricamente possível que um cliente ou servidor altere seu endereço IP e permaneça conectado. No entanto, não pode recuperar se todos os IPs mudarem no mesmo instante.

    
por 11.07.2018 / 21:51

Tags