Batasi lalu lintas SSH?

11

Saya ingin dapat membatasi bandwidth SSH di server saya. Yaitu setiap proses sshd harus dibatasi hingga 200Kb / s atau sesuatu seperti itu.

scp memiliki fungsi ini, tetapi ssh, yang lebih dirancang untuk penggunaan interaktif responsif, tampaknya tidak memiliki opsi ini. Namun saya ingin menggabungkan fungsionalitas -D (SOCKS proxy) dengan beberapa kemampuan untuk membatasi lalu lintas.

Apakah ada opsi untuk ini?

pengguna10640
sumber
Apakah Anda ingin melakukan ini di server SSH, atau apakah boleh melakukannya di firewall antara kedua mesin?
Mark Henderson
Saya lebih suka melakukan ini di server, karena saya tidak memiliki akses ke firewall.
user10640
Jika Anda senang melakukan ini pada klien, coba utilitas baris perintah 'gerimis'.
Alex J
Sementara perintah gerimis terlihat bermanfaat, saya akhirnya tidak bisa mempercayai pengguna untuk menjalankannya. Sepertinya saya terjebak melihat sesuatu yang sedikit lebih rumit daripada yang saya harapkan: P. Terimakasih semuanya!
user10640

Jawaban:

4

Saya tidak yakin apakah memercayai pengguna adalah bagian dari persamaan, tetapi tricklesangat berguna untuk membatasi kecepatan perintah yang diberikan. Ketika saya mengunggah paket dari rumah, teman sekamar pecandu WoW memperhatikan ketika saya melupakan sesuatu seperti itu, karena itu sangat mendominasi pipa.

jldugger
sumber
1
Trickle dapat dijalankan sebagai daemon dan mengelola total bandwidth untuk beberapa perintah pada mesin yang sama. Berguna ketika Anda ingin memicu sekelompok operasi transfer yang independen pada saat yang sama tetapi ingin mereka menggunakan tidak lebih dari total data rate yang ditetapkan.
David Spillett
1
Sayangnya, saya tidak berpikir itu akan membantu saya dengan sshd - itu memotong sshd baru saat koneksi baru masuk. Saya mungkin akan terjebak dengan beberapa solusi tingkat firewall, yang akan sedikit lebih sulit untuk diterapkan.
user10640
wtf mengapa ini jawaban teratas? trickletidak bekerja dengan proses apa pun yang bercabang. Itu termasuk sshd!
Navin
1

Akan bermanfaat melihat penerapan HTB traffic shaping menggunakan tc. Solusi saya untuk masalah simular adalah dengan menggunakan skrip htb.init yang ditemukan di http://sourceforge.net/projects/htbinit/

Saya mengaturnya berdasarkan membatasi lalu lintas dari port 22, tetapi Anda juga dapat menggunakan iptables untuk menandai / memotong-motong paket yang kemudian diproses berdasarkan tanda tersebut.

Steve
sumber
+1 untuk satu-satunya tcjawaban terkait sejauh ini.
Spooler
1
scp -l 8192 file.txt [email protected]:/tmp
//8192  = 8192 KB per second

Saya tahu utas ini sudah cukup lama, tetapi harap ini akan membantu seseorang.

Hiroki
sumber
1
Sangat menjengkelkan bahwa dua orang telah menurunkan jawaban Anda tanpa setidaknya berkomentar. Saya kira itu karena scpkasus penggunaan ssh yang agak spesifik. Saya telah menguji scp -ldan berfungsi, meskipun perhatikan bahwa itu adalah kilobit (kb) per detik, dan bukan kilobyte (kB).
mwfearnley
0

Ada beberapa opsi.

Yang umum adalah untuk mengimplementasikan QoS pada Port 22 pada firewall / router antara server dan klien.

Jika mereka berada di jaringan lokal yang sama (yaitu tidak ada router atau firewall di antara mereka), saya yakin Anda dapat menggunakan IPTable untuk membatasi bandwidth ke port 22 ... Lihat di sini untuk informasi lebih lanjut tentang cara melakukan ini.

Mark Henderson
sumber
1
Anda perlu berhati-hati menggunakan pembatas laju iptables dengan layanan seperti ssh, karena "Penting untuk mengamati bahwa pembatasan laju secara konseptual berbeda dari pembatasan / pembatasan bandwidth; koneksi yang dibatasi bandwidth akan mengantre paket dan membatasi laju di mana mereka ditransmisikan / diterima. Pembatasan nilai tidak akan melakukan ini; ketika Anda menggunakan pembatasan nilai pada, misalnya, koneksi TCP yang masuk mencoba ke identd Anda, dan koneksi yang melebihi batas yang ditentukan akan ditolak; tidak ada antrian paket . "
msanford
Hmmm goood point
Mark Henderson
0

Anda bisa melihat sesuatu seperti iprelay :

User-space bandwidth shaping TCP proxy daemon
iprelay can shape the TCP traffic forwarded through it to a specified
bandwidth and allow this bandwidth to be changed on-the-fly. Multiple
data streams to different sockets may be shaped to the same total
bandwidth, much like a traffic shaping router would. However, this
application runs in user space, and works by acting as a TCP proxy.
rkthkr
sumber