SSH 터널링에 단점이 있습니까?


12

저는 최근에 독일에서 접근 할 수없는 일부 사이트와 사이트를 사용할 수 있도록 프록시로 사용하려는 VPS를 "구입"했습니다.

Squid와 OpenVPN (현재 필요하다고 생각)을 설정하기에는 아직 게으 르기 때문에 ssh-tunneling을 사용합니다.

몇 주 후에 나는 ssh-tunneling이 잘되지 않았는지 나에게 물어 보았습니다. 그리고 내 질문입니다-명심해야 할주의 사항 / 대조 / 단점이 있습니까?


1
가치가있는 것에 대해 OpenVPN은 Linux에서 Linux로 갈 때 정적 키를 사용하여 설정하기가 매우 쉽습니다. 컴퓨터 중 하나가 Windows이지만 가능한 경우 약간 까다 롭습니다. bit.ly/ujkD2
트랜지스터 1

답변:


11

당신이 적응 수정 (느린 시작, 혼잡 회피, 빠른 restransmit를 참조하고 두 개의 층이 있기 때문에 당신은 TCP를 통해 터널링 TCP 때 성능 문제가 발생 RFC2001을 ).

당신이 외부 연결을 잃어버린 경우 그들은 서로를 인식하지 못하고 큰 어려움을 겪을 것입니다.

이 페이지 에서는 현상에 대해 자세히 설명합니다.

편집하다:

TCP over TCP 문제를 고수하는 대신 sshuttle 을 살펴보면 문제 를 예방할 수 있습니다. 이 상황에 대한 자세한 내용은 " 작동 이론
"섹션을 참조하십시오.


내부 레이어가 루프백 인터페이스와 통신하고 있다는 것을 알지 못합니까?
Random832

귀하의 질문에 대한 문제는 TCP가 어떤 방식 으로든 내부 스트림으로 "위치를 인식"하더라도 TCP가 이러한 "최적화"비활성화를 지원하지 않는다는 것입니다. 여기서 문제는 외부 적응 동작이 내부 동작을 방해한다는 것인데, 이는 외부 TCP 스트림이 이미 적응하고 있지만 예를 들어 재전송 속도를 늦춤으로써 적응을 시도합니다.
Shadok

"TCP over IP over TCP over TCP"가 아닌 일반적인 터널링 된 TCP 연결 인 경우에 대해 생각하고있었습니다.이 경우 실제로 두 번째 TCP 프로토콜 스택 이 없습니다. ssh는 바이트 스트림을 전달하는 것입니다. 그리고 "내부 스트림으로서의 위치에 대한 인식"을 의미하는 것이 아니라,이 상황에서 루프백 인터페이스 (로컬 포트 ​​ssh가 수신 대기)를 대상으로하는 방법을 의미했습니다.
Random832

OP는 "일부 사이트"에 대해 이야기했으며 SSH를 통해 SocksV5를 통해 HTTP를 수행한다고 가정했습니다. 이는 TCP를 통한 TCP를 수행한다는 것을 의미합니다 (SSH 자체는 TCP이고 터널 내부의 HTTP는 다른 TCP 스트림을 통해 전달되며 SSH로 캡슐화 됨).
Shadok

1
@Shadok 나는 당신의 결론이 사실이 아니라고 확신합니다. apenwarr는 tun/taptcp-over-tcp를 발생 시키는 터널링을 참조했습니다 . SOCKSv5는 동일한 문제가 발생하지 않지만 모든 응용 프로그램에서 투명하게 작동하지는 않습니다 (tun / tap은 다른 네트워크 인터페이스 일뿐 아니라 투명하게 처리 할 수 ​​있음).
jpc

3

내가 생각할 수없는 한 가지는 성능입니다. 그러나 그것은 실제로 어떤 종류의 물건을 터널링하고 있는지에 달려 있습니다.


어떤 종류의 성능? 대역폭? 현재 훌루 및 차단 된 일부 YouTube 동영상에 액세스하는 데 사용하고 있습니다.
Nils Riedemann

CPU 오버 헤드 (암호화) 및 가능한 대기 시간.
XTL

1

일반적으로 SSH 터널링을 사용하면 대기 시간이 증가하지만 처리량이 정상 (90 %) 인 것으로 나타났습니다. ServerAliveInterval연결이 끊어지지 않도록 설정 하고 실패시 터널을 다시 시작하도록 스크립트로 래핑하십시오.

주된 단점은 SOCKS를 사용하지 않는 한 TCP 별 포트 터널이라는 것입니다. SOCKS는 양호하지만 지연 시간이 더 길어질 것으로 보이며 물론 모든 클라이언트가 SOCKS를 지원하는 것은 아닙니다.

GatewayPorts다른 사람이 터널을 통해 연결할 수 있도록 클라이언트 또는 SSH 서버 에서 실행해야 할 수도 있습니다 . 서버에서는 sshd_config에 대한 루트 액세스 권한이 필요합니다.

TCP의 알고리즘이 캡슐화에서 잘 반응하지 않기 때문에 신뢰할 수없는 연결은이 접근법과 잘 어울리지 않을 것입니다.

즉, SSH는 대부분 "올바른 일"을하는 것 같습니다.


1
신뢰할 수없는 연결 문제는 연결이 끊어 질 때 반복해야하는 지연 시간 및 핸드 셰이크 증가와 관련이있을 수 있습니다. SSH 포트 전달은 tcp-over-tcp 캡슐화를 수행하지 않습니다.
jpc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.