Existem desvantagens no encapsulamento SSH?


12

Recentemente, "comprei" um VPS que quero usar como Proxy para poder usar alguns sites e coisas que não consigo acessar da Alemanha.

Como ainda estava com preguiça de configurar o Squid e o OpenVPN (que atualmente acho necessário), uso o ssh-tunneling.

Agora, depois de algumas semanas, perguntei-me se o encapsulamento de ssh não estava bom, ou - e essa é minha pergunta - se há alguma advertência / contras / desvantagem que eu preciso ter em mente?


1
Pelo que vale, o OpenVPN é extremamente fácil de configurar usando uma chave estática, se você estiver passando do Linux para o Linux. É um pouco mais complicado se uma de suas máquinas for Windows, mas factível. bit.ly/ujkD2
— transistor1

Respostas:


11

O problema de desempenho surge quando você está encapsulando o TCP sobre o TCP, porque você tem duas camadas fazendo correções adaptativas (início lento, prevenção de congestionamentos, re-transmissão rápida, consulte RFC2001 ).

Não tendo conhecimento um do outro, eles enfrentarão grandes dificuldades se houver perda na conexão externa.

Esta página descreve o fenômeno em detalhes.

editar:

Em vez de ficar com o problema de TCP sobre TCP, observe o sshuttle, que o impede.
Veja a seção " Teoria da operação " para obter mais detalhes sobre essa situação.


A camada interna não sabe que está falando com a interface de loopback?
— Random832

Sobre a sua pergunta, o problema é que o TCP não suporta desabilitar essas "otimizações", mesmo que de alguma forma esteja "ciente de sua posição" como um fluxo interno, não pode fazer nada. O problema aqui é que o comportamento adaptativo externo interromperá o interno, que tentará se adaptar diminuindo a retransmissão, por exemplo, embora o fluxo TCP externo já esteja se adaptando a isso.
— Shadok 19/03/12

Eu estava pensando no caso em que é uma conexão TCP encapsulada normal, não "TCP sobre IP sobre PPP sobre TCP" - nesse caso, não há realmente uma segunda pilha de protocolo TCP - o ssh está apenas encaminhando um fluxo de bytes. E eu não quis dizer "ciente de sua posição como um fluxo interno", quis dizer como nessa situação ele teria uma interface de loopback (a porta local ssh está ouvindo) como destino.
— Random832

O OP falou sobre "alguns sites", presumi que ele estivesse fazendo HTTP sobre SocksV5 através de SSH, o que significa que ele estava fazendo TCP sobre TCP (o próprio SSH é TCP e o HTTP dentro do túnel flui sobre outros fluxos TCP, que estão encapsulados em SSH).
— Shadok 19/03/12

1
@Shadok Tenho certeza de que suas conclusões não são verdadeiras. apenwarr estava se referindo ao tun/taptunelamento que resulta em tcp-over-tcp. O SOCKSv5 não apresenta os mesmos problemas, mas não funciona de forma transparente com todos os aplicativos (enquanto o tun / tap é apenas outra interface de rede para que possa ser manuseado de forma transparente).
— JPC

3

Uma coisa que consigo pensar na cabeça é o desempenho. Mas isso realmente depende do tipo de coisa que você está encapsulando.


Que tipo de performance? Largura de banda? Atualmente, eu o uso para acessar o hulu e alguns vídeos do youtube bloqueados.
— Nils Riedemann

Sobrecarga da CPU (criptografia) e possivelmente latência, provavelmente.
— XTL

1

Normalmente, descobri que a latência aumenta, mas a taxa de transferência é boa (90%) do normal com o tunelamento SSH. Certifique-se de definir ServerAliveIntervalpara evitar desconexões e envolva-o em um script para continuar reiniciando o túnel em caso de falha.

A principal desvantagem é que é um túnel de porta por TCP, a menos que você use SOCKS. O SOCKS é bom, mas a latência parece aumentar ainda mais com ele e, é claro, nem todo cliente suporta o SOCKS.

Pode ser necessário executar GatewayPortsno cliente ou servidor SSH para permitir que outras pessoas se conectem através do seu túnel. No servidor, isso requer acesso root ao sshd_config.

A principal advertência de desempenho (como outros observam) é que as conexões não confiáveis ​​provavelmente não se saem bem com essa abordagem, pois os algoritmos do TCP não reagem bem sob o encapsulamento.

Dito isto, o SSH parece "fazer a coisa certa" na maioria das vezes.


1
O problema com as conexões não confiáveis ​​observadas provavelmente está relacionado ao aumento da latência e dos handshakes que precisam ser repetidos quando as conexões caem. O encaminhamento de porta SSH não faz o encapsulamento tcp-over-tcp.
— Jpc #
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.