Apakah ada kerugian dalam tunneling SSH?

12

Baru-baru ini saya "membeli" VPS yang ingin saya gunakan sebagai Proxy untuk dapat menggunakan beberapa situs dan hal-hal yang tidak dapat saya jangkau dari Jerman.

Karena saya masih terlalu malas untuk mengatur Squid dan OpenVPN (yang saat ini saya pikir diperlukan) saya menggunakan ssh-tunneling.

Sekarang setelah beberapa minggu saya bertanya pada diri sendiri apakah ssh-tunneling tidak baik-baik saja, atau - dan itu adalah pertanyaan saya - apakah ada peringatan / kontra / kekurangan yang perlu saya pikirkan?

Nils Riedemann
sumber
1
Untuk apa nilainya, OpenVPN sangat mudah diatur dengan menggunakan kunci statis jika Anda berpindah dari Linux ke Linux. Agak sulit jika salah satu komputer Anda adalah Windows, tetapi bisa dilakukan. bit.ly/ujkD2
transistor1

Jawaban:

11

Masalah kinerja muncul ketika Anda melakukan tunneling TCP melalui TCP karena Anda memiliki dua lapisan yang melakukan koreksi adaptif (mulai lambat, penghindaran kemacetan, transmisi cepat lihat RFC2001 ).

Tidak bieng menyadari satu sama lain mereka akan mengalami kesulitan besar jika Anda memiliki kehilangan pada koneksi luar.

Halaman ini menjelaskan fenomena secara rinci.

edit:

Daripada bertahan dengan masalah TCP over TCP lihatlah sshuttle yang mencegahnya.
Lihat bagian bernama " Teori Operasi " untuk detail lebih lanjut tentang situasi ini.

Shadok
sumber
Tidakkah lapisan dalam tahu bahwa itu berbicara ke antarmuka loopback?
Random832
Tentang pertanyaan Anda, masalahnya adalah bahwa TCP tidak mendukung penonaktifan "pengoptimalan" itu, bahkan jika itu entah bagaimana "menyadari posisinya" sebagai aliran internal, ia tidak dapat melakukan apa pun. Masalahnya di sini adalah perilaku adaptif luar akan mengganggu yang dalam, yang akan mencoba untuk beradaptasi dengan memperlambat pengiriman ulang misalnya meskipun aliran TCP luar sudah beradaptasi untuk itu.
Shadok
Saya sedang berpikir tentang kasus di mana itu adalah koneksi TCP tunneled normal, bukan "TCP over IP over PPP over TCP" - dalam kasus itu sebenarnya tidak ada stack protokol TCP kedua - ssh hanya meneruskan aliran byte. Dan saya tidak bermaksud "menyadari posisinya sebagai aliran dalam", maksud saya bagaimana dalam situasi ini ia akan memiliki antarmuka loopback (port lokal ssh mendengarkan) sebagai tujuannya.
Acak 832
OP berbicara tentang "beberapa situs", saya berasumsi dia sedang melakukan HTTP over SocksV5 melalui SSH, yang berarti dia melakukan TCP over TCP (SSH sendiri adalah TCP dan HTTP di dalam terowongan mengalir melalui aliran TCP lain, yang dienkapsulasi dalam SSH).
Shadok
1
@ Shadok Saya cukup yakin kesimpulan Anda tidak benar. apenwarr mengacu pada tun/taptunneling yang menghasilkan tcp-over-tcp. SOCKSv5 tidak mengalami masalah yang sama tetapi tidak bekerja secara transparan dengan semua aplikasi (sementara tun / tap hanyalah antarmuka jaringan lain sehingga dapat ditangani secara transparan).
jpc
3

Satu hal yang dapat saya pikirkan adalah kinerja. Tapi itu benar-benar tergantung pada hal-hal seperti apa yang Anda tunneling.

Marcus
sumber
Performa seperti apa? Bandwidth? Saat ini saya menggunakannya untuk mengakses hulu dan beberapa video youtube yang diblokir.
Nils Riedemann
Overhead CPU (enkripsi) dan kemungkinan latensi, kemungkinan besar.
XTL
1

Biasanya saya telah menemukan bahwa latensi meningkat tetapi throughput baik-baik saja (90%) normal dengan tunneling SSH. Pastikan untuk mengatur ServerAliveIntervalagar tidak terputus, dan bungkus dalam skrip untuk terus memulai ulang terowongan pada kegagalan.

Kelemahan utama adalah terowongan port per-TCP, kecuali jika Anda menggunakan SOCKS. SOCKS baik-baik saja tetapi latensi tampaknya semakin meningkat dengan itu, dan tentu saja, tidak setiap klien mendukung SOCKS.

Anda mungkin perlu berjalan GatewayPortsdi klien atau server SSH untuk memungkinkan orang lain terhubung melalui terowongan Anda. Di server ini memerlukan akses root ke sshd_config.

Peringatan kinerja utama (seperti yang dicatat orang lain) adalah bahwa koneksi yang tidak dapat diandalkan kemungkinan tidak berjalan baik dengan pendekatan ini, karena algoritma TCP tidak bereaksi dengan baik di bawah enkapsulasi.

Yang mengatakan, SSH tampaknya "melakukan hal yang benar" sebagian besar waktu.

Stu Charlton
sumber
1
Masalah dengan koneksi yang tidak dapat diandalkan yang Anda amati mungkin terkait dengan peningkatan latensi dan jabat tangan yang perlu diulang ketika koneksi turun. Penerusan port SSH tidak melakukan enkapsulasi tcp-over-tcp.
jpc