Bagaimana saya bisa membatasi bandwidth Download / Upload?

77

Bagaimana saya bisa membatasi bandwidth Download / Upload untuk:

  • Seluruh OS.
  • Satu antarmuka jaringan.
  • Aplikasi tunggal.
kamu dulu
sumber
Saya telah mengajukan bug untuk wondershapermasalah di Ubuntu 17.10, yang mungkin mirip dengan apa yang terjadi pada @Zeromatiker di Ubuntu 17.04: bugs.launchpad.net/ubuntu/+source/wondershaper/+bug/1745421
aguadopd

Jawaban:

42

Membatasi antarmuka tunggal itu mudah, tetapi batas laju global memerlukan aturan yang lebih rumit seperti halnya aturan berbasis aplikasi. Saya tidak mengatakan bahwa itu tidak dapat dilakukan, tetapi membutuhkan sedikit menggali internal jaringan.

Berikut ini adalah Cara cepat menyiapkan batas per antarmuka

Jika Anda benar-benar ingin mengatur aturan berbasis aplikasi, Anda harus melihat ke beberapa kerangka kerja firewall, seperti shorewall , yang memiliki fitur pembantu untuk mengkonfigurasi pembentukan. Bahkan dengan alat-alat ini, diperlukan sedikit pemikiran dan pengujian untuk mendapatkannya di tempat. Melakukan sesuatu seperti ad-hoc ini belum semudah itu.

Ressu
sumber
wondershaper tidak berfungsi Saya tidak tahu mengapa (bahkan wondershaper eth0 1000 1000 tidak memiliki bandwidth internet. Saya perlu membatasi semua bandwidth eth0 tidak hanya aplikasi spesifik. Bagaimana bisa melakukannya?
Arash
67

Meskipun ini adalah pertanyaan lama, saya menemukan ini ketika mencari jawaban untuk pertanyaan yang sama. Batas OS dan antarmuka sudah dibahas dalam jawaban sebelumnya, jadi di sini adalah cara untuk mengatur batas spesifik aplikasi. Gunakan aplikasi yang disebut trickle. Begitu juga sudo apt-get install trickle. Anda dapat membatasi unggahan / unduhan untuk aplikasi tertentu dengan menjalankan

trickle -u (upload limit in KB/s) -d (download limit in KB/s) application

Ini akan meluncurkan aplikasi dengan batas yang ditentukan. Anda juga dapat menentukan waktu "penghalusan", sehingga meneteskan sampel selama periode waktu yang diinginkan seandainya aplikasi Anda memiliki ledakan konsumsi bandwidth dan Anda ingin semburan diizinkan selama rata-rata berada dalam spesifikasi Anda.

SMeznaric
sumber
14
Terima kasih banyak! Solusi ini sangat cocok untuk mengendalikan bandwidth pada basis per aplikasi. Tolong jangan pernah ragu untuk mengirim jawaban, meskipun pertanyaannya sudah bertahun-tahun. Untuk referensi di masa mendatang: Anda mungkin disajikan dengan pesan kesalahan seperti trickle: Could not reach trickled, working independently: No such file or directory. Anda dapat menghapus peringatan ini dengan menjalankan tetesan dalam mode mandiri dengan trickle -s.
Glutanimate
Bagaimana cara menghapus batas yang dibatasi oleh tetesan?
Mouse Anonim
2
Trickle akan menjalankan aplikasi untuk Anda dengan batasan yang diberlakukan. Jadi yang harus Anda lakukan adalah me-restart aplikasi tanpa menggunakan perintah trickle.
SMeznaric
1
terima kasih banyak untuk jawaban ini, itu adalah hal yang tepat yang saya cari
Ali
1
Persis seperti yang saya butuhkan, ketika mencoba mensimulasikan koneksi jaringan yang lambat.
Ethan Kaminski
5

Jika Anda ingin membatasi bandwidth untuk alamat IP tertentu, Anda dapat menggunakan ini:

tc qdisc add dev eth1 root handle 1: htb default 12
tc class add dev eth1 parent 1: classid 1:10 htb rate 2500kbps
tc class add dev eth1 parent 1: classid 1:11 htb rate 2500kbps
tc class add dev eth1 parent 1: classid 1:12 htb rate 5000kbps

tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.2.105 flowid 1:10
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.2.106 flowid 1:11
Billtian
sumber
4
itu cukup berbelit-belit. Beberapa komentar akan sangat bermanfaat. Misalnya, Anda dapat menambahkan tautan atau penjelasan untuk qdis, classid, htb, dll.
oligofren
Jadi, secara default, di atas membatasi semuanya hingga 5000 kbps kecuali disaring ke beberapa antrian lainnya? Bagaimana kalau kita tidak ingin membatasi semuanya ?
Ken Sharp