Cara membatasi penggunaan bandwidth jaringan di linux menggunakan trickle

Cara membatasi penggunaan bandwidth jaringan di linux menggunakan trickle

Pernahkah Anda menghadapi situasi di mana satu aplikasi mendominasi semua bandwidth jaringan Anda? Jika Anda pernah berada dalam situasi di mana satu aplikasi memakan semua lalu lintas Anda, maka Anda akan menghargai peran aplikasi pembentuk bandwidth trickle.

Entah Anda adalah seorang Admin Sistem atau hanya a Pengguna Linux, Anda perlu belajar cara mengontrol kecepatan unggahan dan unduhan untuk aplikasi untuk memastikan bahwa bandwidth jaringan Anda tidak dibakar oleh satu aplikasi.

[Anda mungkin juga menyukai: 16 alat pemantauan bandwidth yang berguna untuk menganalisis penggunaan jaringan di Linux]

Apa itu menetes?

Berhamburan adalah alat pembentuk bandwidth jaringan yang memungkinkan kami mengelola kecepatan unggahan dan unduhan aplikasi untuk mencegah salah satu dari mereka untuk memeluk semua (atau sebagian besar) dari bandwidth yang tersedia.

Dalam beberapa kata, Trickle memungkinkan Anda mengontrol tarif lalu lintas jaringan berdasarkan aplikasi per, yang bertentangan dengan kontrol per pengguna, yang merupakan contoh klasik dari pembentukan bandwidth di lingkungan klien-server, dan mungkin merupakan pengaturan yang lebih kami setup akrab dengan.

Bagaimana Trickle Bekerja?

Selain itu, tetesan dapat membantu kami untuk mendefinisikan prioritas berdasarkan per aplikasi sehingga ketika batas keseluruhan telah ditetapkan untuk seluruh sistem, aplikasi prioritas masih akan mendapatkan lebih banyak bandwidth secara otomatis.

Untuk menyelesaikan tugas ini, Trickle menetapkan batas lalu lintas ke cara di mana data dikirim ke dan diterima dari, soket menggunakan koneksi TCP. Kita harus mencatat bahwa, selain laju transfer data, menetes tidak memodifikasi dengan cara apa pun perilaku proses yang dibentuk pada saat tertentu.

Apa yang tidak bisa menetes lakukan?

Satu -satunya batasan, jadi untuk berbicara, adalah bahwa Trickle tidak akan bekerja dengan aplikasi atau binari yang terkait secara statis dengan Suid atau SGID Bit diatur karena menggunakan tautan dan pemuatan dinamis untuk menempatkan dirinya di antara proses berbentuk dan soket jaringan yang terkait. Trickle kemudian bertindak sebagai proxy antara dua komponen perangkat lunak ini.

Karena Trickle tidak memerlukan hak istimewa superuser untuk dijalankan, pengguna dapat menetapkan batas lalu lintas mereka sendiri. Karena ini mungkin tidak diinginkan, kami akan mengeksplorasi cara menetapkan batas keseluruhan yang tidak dapat dilampaui oleh pengguna sistem. Dengan kata lain, pengguna masih dapat mengelola tarif lalu lintas mereka, tetapi selalu dalam batas yang ditetapkan oleh administrator sistem.

Lingkungan pengujian

Di artikel ini, kami akan menjelaskan cara membatasi bandwidth jaringan yang digunakan oleh aplikasi di server Linux dengan tetesan.

Untuk menghasilkan lalu lintas yang diperlukan, kami akan menggunakan ncftpput Dan ncftpget (Kedua alat tersedia dengan menginstal ncftp) pada klien (Centos Server - Dev1: 192.168.0.17), Dan vsftpd di server (Debian - dev2: 192.168.0.15) untuk tujuan demonstrasi. Instruksi yang sama juga berhasil Topi merah, Fedora dan sistem berbasis ubuntu.

Menginstal NCFTP dan VSFTPD di Linux

1. Untuk Rhel/centos 8/7, Aktifkan repositori EPEL. Paket tambahan untuk Enterprise Linux (Epel) adalah gudang perangkat lunak bebas dan open-source berkualitas tinggi yang dikelola oleh proyek Fedora dan kompatibel 100% dengan spin-off-nya, seperti Red Hat Enterprise Linux Dan Centos. Keduanya berhamburan Dan ncftp tersedia dari repositori ini.

2. Install ncftp sebagai berikut:

# yum update && sudo yum install ncftp [on redhat berbasis sistem] # appitude update && aptitude install ncftp [pada sistem berbasis debian] 

3. Siapkan server FTP di server terpisah. Harap dicatat bahwa meskipun FTP secara inheren tidak aman, masih banyak digunakan dalam kasus ketika keamanan dalam mengunggah atau mengunduh file tidak diperlukan.

Kami menggunakannya dalam artikel ini untuk menggambarkan karunia trickle dan karena itu menunjukkan laju transfer masuk stdout pada klien, dan kami akan meninggalkan diskusi apakah itu harus atau tidak boleh digunakan untuk tanggal dan waktu lain.

# yum update && yum install vsftpd [di sistem berbasis redhat] # app update && apt install vsftpd [pada sistem berbasis debian] 

Sekarang, edit /etc/vsftpd/vsftpd.conf File di server FTP sebagai berikut:

$ sudo nano/etc/vsftpd/vsftpd.conf atau $ sudo /etc /vsftpd.conf 

Buat perubahan berikut:

anonymous_enable = tidak local_enable = ya chroot_local_user = ya izin_writeable_chroot = ya 

Setelah itu, pastikan untuk memulai VSFTPD untuk sesi Anda saat ini dan untuk mengaktifkannya untuk memulai secara otomatis di Future Boots:

# Systemctl Start vsftpd [untuk sistem berbasis systemd] # systemctl mengaktifkan vsftpd # service vsftpd start [untuk sistem berbasis init] # chkconfig vsftpd on 

4. Jika Anda memilih untuk mengatur server FTP di a Centos/RHEL Tetesan dengan tombol SSH untuk akses jarak jauh, Anda akan memerlukan akun pengguna yang dilindungi kata sandi dengan direktori yang sesuai dan izin file untuk mengunggah dan mengunduh konten yang diinginkan di luar direktori home root root.

Anda kemudian dapat menelusuri direktori rumah Anda dengan memasukkan URL berikut di browser Anda. Jendela login akan muncul meminta Anda untuk akun pengguna dan kata sandi yang valid di server FTP.

ftp: // 192.168.0.15 

Jika otentikasi berhasil, Anda akan melihat isi direktori home Anda. Nanti di tutorial ini, Anda akan dapat menyegarkan halaman itu untuk menampilkan file yang telah diunggah selama langkah -langkah sebelumnya.

Pohon Direktori FTP

Cara menginstal trickle di linux

Sekarang instal trickle via yum atau tepat.

Untuk memastikan instalasi yang sukses, itu dianggap praktik yang baik untuk memastikan paket yang saat ini diinstal terkini (menggunakan pembaruan yum) sebelum memasang alat itu sendiri.

# yum -y update && yum install trickle [on redhat berbasis sistem] # app -y update && apt install trickle [pada sistem berbasis debian] 

Verifikasi apakah Trickle akan bekerja dengan biner yang diinginkan. Seperti yang kami jelaskan sebelumnya, trickle hanya akan bekerja dengan binari menggunakan perpustakaan dinamis atau bersama. Untuk memverifikasi apakah kami dapat menggunakan alat ini dengan aplikasi tertentu, kami dapat menggunakan yang terkenal ldd utilitas, dimana ldd singkatan dari daftar dependensi dinamis.

Secara khusus, kami akan mencari keberadaan glibc (Perpustakaan GNU C) Dalam daftar dependensi dinamis dari setiap program yang diberikan karena justru perpustakaan yang mendefinisikan panggilan sistem yang terlibat dalam komunikasi melalui soket.

Jalankan perintah berikut terhadap biner yang diberikan untuk melihat apakah Trickle dapat digunakan untuk membentuk bandwidthnya:

# ldd $ (yang [biner]) | grep libc.Jadi 

Misalnya,

# ldd $ (yang ncftp) | grep libc.Jadi 

yang output siapa:

# libc.Jadi.6 => /lib64 /libc.Jadi.6 (0x00007EFFF2E6C000) 

String antara tanda kurung dalam output dapat berubah dari sistem ke sistem dan bahkan antara menjalankan berikutnya dari perintah yang sama karena mewakili alamat beban perpustakaan dalam memori fisik.

Jika perintah di atas tidak mengembalikan hasil apa pun, itu berarti bahwa biner yang dijalankan tidak digunakan libc, dan dengan demikian menetes tidak dapat digunakan sebagai pembentuk bandwidth dalam kasus itu.

Pelajari Cara Menggunakan Trickle di Linux

Penggunaan trickle paling mendasar adalah dalam mode mandiri. Menggunakan pendekatan ini, Trickle digunakan untuk secara eksplisit menentukan kecepatan unduhan dan unggah dari aplikasi yang diberikan. Seperti yang kami jelaskan sebelumnya, demi singkatnya, kami akan menggunakan aplikasi yang sama untuk diunduh dan mengunggah tes.

Menjalankan tetesan dalam mode mandiri

Kami akan membandingkan kecepatan unduhan dan unggah dengan dan tanpa menggunakan tetesan. Itu -D Opsi menunjukkan kecepatan unduhan di KB/S, sedangkan -u Bendera memberitahu Trickle untuk membatasi kecepatan unggah dengan unit yang sama. Selain itu, kami akan menggunakan -S bendera, yang menentukan tetesan itu harus berjalan dalam mode mandiri.

Sintaks dasar untuk menjalankan Trickle dalam mode mandiri adalah sebagai berikut:

# trickle -s -d [tarif unduhan di kb/s] -u [tarif unggah di kb/s] 

Untuk melakukan contoh -contoh berikut sendiri, pastikan untuk memilikinya berhamburan Dan ncftp diinstal pada mesin klien (192.168.0.17 dalam hal ini).

Contoh 1: Mengunggah 2.File PDF 8 MB dengan dan tanpa Trickle.

Kami menggunakan yang dapat didistribusikan secara bebas Fundamental Linux File PDF (tersedia dari sini) untuk tes berikut.

Awalnya Anda dapat mengunduh file ini ke direktori kerja Anda saat ini dengan perintah berikut:

# wget http: // linux-training.be/file/buku/linuxfun.pdf 

Sintaks untuk mengunggah file ke server FTP kami tanpa tetesan adalah sebagai berikut:

# ncftpput -u nama pengguna -p kata sandi 192.168.0.15 /Remote_Directory-Local-Filename 

Di mana /remote_directory adalah jalur direktori unggahan relatif terhadap rumah nama pengguna, dan nama filen lokal adalah file di direktori kerja Anda saat ini.

Khususnya, tanpa tetesan kita mendapatkan kecepatan unggahan puncak 52.02 MB/s (Harap dicatat bahwa ini bukan kecepatan unggahan rata -rata nyata, tetapi puncak awal instan), dan file diunggah hampir secara instan:

# ncftpput -u nama pengguna -p kata sandi 192.168.0.15 /testdir linuxfun.pdf 

Keluaran:

Linuxfun.PDF: 2.79 MB 52.02 MB/s 

Dengan Trickle, kami akan membatasi tarif transfer unggahan di 5 kb/s. Sebelum mengunggah file untuk kedua kalinya, kita perlu menghapusnya dari direktori tujuan; jika tidak, ncftp Akan memberi tahu kami bahwa file di direktori tujuan adalah sama dengan yang kami coba unggah, dan tidak akan melakukan transfer:

# rm/absolute/path/to/destination/directory/linuxfun.pdf 

Kemudian:

# trickle -s -u 5 ncftpput -u nama pengguna -p 111.111.111.111 /testdir linuxfun.pdf 

Keluaran:

Linuxfun.PDF: 2.79 MB 4.94 kb/s 

Dalam contoh di atas, kita dapat melihat bahwa kecepatan unggahan rata -rata jatuh ~ 5 kb/s.

Contoh 2: Mengunduh 2 yang sama.File PDF 8 MB dengan dan tanpa Trickle

Pertama, ingatlah untuk menghapus PDF dari direktori sumber asli:

# rm/absolute/path/to/source/directory/linuxfun.pdf 

Harap dicatat bahwa kasus berikut akan mengunduh file jarak jauh ke direktori saat ini di mesin klien. Fakta ini ditunjukkan oleh periode ('.') yang muncul setelah alamat IP server FTP.

Tanpa Trickle:

# ncftpget -u nama pengguna -p 111.111.111.111 . /testdir/linuxfun.pdf 

Keluaran:

Linuxfun.PDF: 2.79 MB 260.53 MB/s 

Dengan trickle, membatasi kecepatan unduhan 20 kb/s:

# trickle -s -d 30 ncftpget -u nama pengguna -p 111.111.111.111 . /testdir/linuxfun.pdf 

Keluaran:

Linuxfun.PDF: 2.79 MB 17.76 kb/s 

Menjalankan trickle dalam mode [tidak dikelola] yang diawasi

Trickle juga dapat berjalan dalam mode yang tidak dikelola, mengikuti serangkaian parameter yang didefinisikan /etc/trickled.conf. File ini mendefinisikan bagaimana menetes (daemon) berperilaku dan mengelola menetes.

Selain itu, jika kita ingin mengatur pengaturan global untuk digunakan, secara keseluruhan, oleh semua aplikasi, kita perlu menggunakan perintah menetes. Perintah ini menjalankan daemon dan memungkinkan kami untuk menentukan batas unduhan dan unggah yang akan dibagikan oleh semua aplikasi yang dijalankan melalui tetesan tanpa kami perlu menentukan batasan setiap kali.

Misalnya, menjalankan:

# menetes -d 50 -u 10 

Akan menyebabkan kecepatan pengunduhan dan unggah dari aplikasi apa pun yang dijalankan melalui Trickle dibatasi 30 kb/s Dan 10 kb/s, masing -masing.

Harap dicatat bahwa Anda dapat memeriksa kapan saja apakah menetes berjalan dan dengan argumen apa:

# ps -ef | Grep menetes | grep -v grep 

Keluaran:

Root 16475 1 0 Des24 ? 00:00:04 menetes -D 50 -U 10 
Contoh 3: Mengunggah file 19 MB MP4 ke server FTP kami menggunakan dengan dan tanpa tetesan.

Dalam contoh ini kita akan menggunakan “he adalah hadiahnyaVideo, tersedia untuk diunduh dari tautan ini.

Kami awalnya akan mengunduh file ini ke direktori kerja Anda saat ini dengan perintah berikut:

# wget http: // media2.ldscdn.org/aset/misionaris/orang-orang kami-2014/2014-00-1460-he-is-the-gift-360p-eng.MP4 

Pertama, kita akan memulai daemon menetes dengan perintah yang tercantum di atas:

# menetes -d 30 -u 10 

Tanpa Trickle:

# ncftpput -u nama pengguna -p kata sandi 192.168.0.15 /testdir 2014-00-1460-he-is-the-gift-360p-eng.MP4 

Keluaran:

2014-00-1460-he-is-the-gift-360p-eng.MP4: 18.53 MB 36.31 MB/s 

Dengan Trickle:

# trickle ncftpput -u nama pengguna -p kata sandi 192.168.0.15 /testdir 2014-00-1460-he-is-the-gift-360p-eng.MP4 

Keluaran:

2014-00-1460-he-is-the-gift-360p-eng.MP4: 18.53 MB 9.51 kb/s 

Seperti yang dapat kita lihat di output di atas, laju transfer unggahan turun ke ~ 10 kb/s.

Contoh 4: Mengunduh video yang sama dengan dan tanpa tetesan

Seperti dalam Contoh 2, Kami akan mengunduh file ke direktori kerja saat ini.

Tanpa Trickle:

# ncftpget -u nama pengguna -p kata sandi 192.168.0.15 . /testdir/2014-00-1460-he-is-the-gift-360p-eng.MP4 

Keluaran:

2014-00-1460-he-is-the-gift-360p-eng.MP4: 18.53 MB 108.34 MB/s 

Dengan Trickle:

# trickle ncftpget -u nama pengguna -p 111.111.111.111 . /testdir/2014-00-1460-he-is-the-gift-360p-eng.MP4 

Keluaran:

2014-00-1460-he-is-the-gift-360p-eng.MP4: 18.53 MB 29.28 kb/s 

Yang sesuai dengan batas unduhan yang ditetapkan sebelumnya (30 kb/s).

Catatan: Bahwa begitu daemon telah dimulai, tidak perlu menetapkan batas individu untuk setiap aplikasi yang menggunakan tetesan.

Seperti yang kami sebutkan sebelumnya, orang dapat lebih lanjut menyesuaikan bandwidth trickle yang membentuk melalui menetes.conf. Bagian khas dalam file ini terdiri dari yang berikut:

[Layanan] prioritas = waktu-peletur = penguapan panjang =  

Di mana,

  1. [melayani] menunjukkan nama aplikasi yang penggunaan bandwidth yang ingin kami bentuk.
  2. Prioritas memungkinkan kami untuk menentukan layanan untuk memiliki prioritas yang lebih tinggi relatif terhadap yang lain, sehingga tidak memungkinkan aplikasi tunggal untuk memeluk semua bandwidth yang dikelola daemon. Semakin rendah angka, semakin banyak bandwidth yang ditugaskan untuk [Layanan].
  3. Rapuh waktu [dalam detik]: mendefinisikan dengan interval waktu apa yang ditetapkan akan mencoba membiarkan transfer aplikasi dan / atau menerima data. Nilai yang lebih kecil (sesuatu di antara kisaran 0.1 - 1s) sangat ideal untuk aplikasi interaktif dan akan menghasilkan sesi yang lebih kontinu (halus) sementara nilai yang sedikit lebih besar (1 - 10 detik) lebih baik untuk aplikasi yang membutuhkan transfer curah. Jika tidak ada nilai yang ditentukan, default (5 detik) digunakan.
  4. Rapuh panjang [Dalam KB]: Idenya sama seperti pada waktu yang baik, tetapi berdasarkan panjang operasi I/O. Jika tidak ada nilai yang ditentukan, default (10 kb) digunakan.

Mengubah nilai smoothing akan diterjemahkan ke dalam aplikasi yang ditentukan oleh [melayani] Menggunakan tarif transfer dalam interval alih -alih nilai tetap. Sayangnya, tidak ada formula untuk menghitung batas bawah dan atas dari interval ini karena terutama tergantung dari setiap skenario kasus tertentu.

Berikut ini adalah a menetes.conf file sampel di klien Centos 7 (192.168.0.17):

[ssh] prioritas = 1 penguapan waktu = 0.1 smoothing panjang = 2 [ftp] prioritas = 2 penguapan waktu = 1-smoothing = 3 

Menggunakan pengaturan ini, Trickled akan memprioritaskan koneksi SSH daripada transfer FTP. Perhatikan bahwa proses interaktif, seperti SSH, menggunakan nilai waktu yang lebih kecil, sedangkan layanan yang melakukan transfer data curah (FTP) menggunakan nilai yang lebih besar.

Nilai smoothing bertanggung jawab atas kecepatan unduhan dan unggah dalam contoh kami sebelumnya yang tidak cocok dengan nilai yang tepat yang ditentukan oleh daemon yang menetes tetapi bergerak dalam interval yang dekat dengannya.

[Anda mungkin juga suka: cara mengamankan dan mengeras server openssh]

Kesimpulan

Dalam artikel ini kami telah mengeksplorasi cara membatasi bandwidth yang digunakan oleh aplikasi menggunakan Trickle pada distribusi berbasis Fedora dan debian / derivatif. Kasus penggunaan lain yang mungkin termasuk, tetapi tidak terbatas pada:

  • Membatasi kecepatan unduhan melalui utilitas sistem seperti WGET, atau klien torrent, misalnya.
  • Membatasi kecepatan di mana sistem Anda dapat diperbarui melalui 'yum' (atau 'bakat', jika Anda berada dalam sistem berbasis Debian), sistem manajemen paket.
  • Jika server Anda berada di belakang proxy atau firewall (atau proxy atau firewall itu sendiri), Anda dapat menggunakan tetesan untuk menetapkan batasan pada pengunduhan dan kecepatan unggah atau komunikasi dengan klien atau luar.

Pertanyaan dan komentar sangat disambut. Jangan ragu untuk menggunakan formulir di bawah ini untuk mengirimkannya dengan cara kami.