Apakah ada cara mudah untuk membatasi penggunaan bandwidth pengguna?

14

Apakah ada cara mudah untuk membatasi penggunaan bandwidth pengguna untuk mengatakan 10kpbs? Pengguna lain tidak boleh terpengaruh. Yang terbaik yang saya temukan adalah tc, tetapi tampaknya terlalu rumit untuk melakukan hal yang begitu sederhana.

Halus
sumber
Jika jawaban yang diberikan menyelesaikan masalah Anda (saya harap begitu), pilihlah sebagai diterima, sehingga masalah ini dapat ditandai sebagai dipecahkan ..
heemayl

Jawaban:

8

tc adalah jawaban yang tepat untuk kebutuhan konfigurasi Anda.
tc mungkin tampak rumit karena mengelola siswa yang penuh antrian (dan kurang) yang memberikan fleksibilitas tanpa batas dan lapisan pembentukan dan penyaringan.
Namun ini tidak terjadi. Karena tc menggunakan murid antrian yang dibangun di (atau modular) di kernel, tc cara termudah / terbaik untuk membatasi bandwidth pada basis per pengguna.
Berikut ini adalah contoh pengaturan, saya meninggalkannya dalam format Mbit tetapi Anda dapat mengubah ukuran kurs ke kbps.

tc qdisc add dev eth0 root handle 1:0 htb
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 1Mbit ceil 1Mbit prio 1

Untuk Anda, aturan iptables cukup ubah --uid-owner menjadi uid pengguna yang ingin Anda batasi, dokumentasi mengatakan Anda dapat menggunakan nama pengguna alih-alih UID, belum mengujinya.

iptables -t mangle -A POSTROUTING -o eth0 -p tcp -m owner --uid-owner 1000 -j CLASSIFY --set-class 1:1

FYI meskipun Anda tidak memerlukan HTB, saya akan merekomendasikannya berdasarkan opsi yang tersedia dan kecepatan apa yang Anda batasi.

cupojavashort
sumber