Ați întâlnit vreodată situații în care o aplicație a dominat lățimea de bandă a întregii rețele? Dacă ați fost vreodată într-o situație în care o aplicație a consumat tot traficul dvs., atunci veți aprecia rolul aplicației de formare a lățimii de bandă.
Fie ești un administrator de sistem sau doar a Utilizator Linux, trebuie să învățați cum să controlați viteze de încărcare și descărcare pentru aplicații pentru a vă asigura că lățimea de bandă a rețelei dvs. nu este arsă de o singură aplicație.
[ S-ar putea sa-ti placa si: 16 Instrumente utile de monitorizare a lățimii de bandă pentru a analiza utilizarea rețelei în Linux ]
Prelinge este un instrument de formare a lățimii de bandă a rețelei care ne permite să gestionăm viteza de încărcare și descărcare a aplicațiilor pentru a preveni ca oricare dintre ele să ascundă toată (sau cea mai mare parte) din lățimea de bandă disponibilă.
În câteva cuvinte, scurgerea vă permite controlați traficul de rețea rata pe bază de aplicație, spre deosebire de controlul pe utilizator, care este exemplul clasic al modelării lățimii de bandă într-un mediu client-server și este probabil configurarea cu care suntem mai familiarizați.
În plus, un flux ne poate ajuta să definim prioritățile pe bază de aplicație, astfel încât când au fost stabilite limite generale pentru întregul sistem, aplicațiile prioritare vor primi în continuare o lățime de bandă mai mare automat.
Pentru a îndeplini această sarcină, scurgerea stabilește limitele de trafic la modul în care datele sunt trimise și primite de la socketuri folosind conexiuni TCP. Trebuie să menționăm că, în afară de ratele de transfer de date, trickle nu modifică în niciun fel comportamentul procesului pe care îl modelează la un moment dat.
Singura limitare, ca să spunem așa, este că scurgerea nu va funcționa cu aplicațiile legate static sau cu binare cu SUID sau SGID biți stabiliți deoarece folosește legătura și încărcarea dinamică pentru a se plasa între procesul modelat și socketul de rețea asociat. Trickle acționează apoi ca un proxy între aceste două componente software.
Deoarece trickle nu necesită privilegii de superutilizator pentru a rula, utilizatorii își pot seta propriile limite de trafic. Deoarece acest lucru poate să nu fie de dorit, vom explora cum să stabilim limite generale pe care utilizatorii de sistem nu le pot depăși. Cu alte cuvinte, utilizatorii vor putea în continuare să își gestioneze ratele de trafic, dar întotdeauna în limitele stabilite de administratorul de sistem.
În acest articol, vom explica cum să limitați lățimea de bandă a rețelei utilizată de aplicațiile de pe un server Linux cu un flux.
Pentru a genera traficul necesar, vom folosi ncftpput și ncftpget (ambele instrumente sunt disponibile prin instalare ncftp) pe client (CentOS server - dev1: 192.168.0.17), și vsftpd pe server (Debian - dev2: 192.168.0.15) în scop demonstrativ. Aceleași instrucțiuni funcționează și pe Palarie rosie, Fedora și Sisteme bazate pe Ubuntu.
1. Pentru RHEL / CentOS 8/7, activați depozitul EPEL. Pachete suplimentare pentru Enterprise Linux (EPEL) este un depozit de software gratuit și open-source de înaltă calitate menținut de proiectul Fedora și este 100% compatibil cu spinoff-urile sale, cum ar fi Red Hat Enterprise Linux și CentOS. Ambii prelinge și ncftp sunt puse la dispoziție din acest depozit.
2. Instalare ncftp după cum urmează:
# yum update && sudo yum install ncftp [Pe sistemele bazate pe RedHat] # aptitude update && aptitude install ncftp [Pe sistemele bazate pe Debian]
3. Configurați un server FTP într-un server separat. Vă rugăm să rețineți că, deși FTP este inerent nesigur, acesta este încă utilizat pe scară largă în cazurile în care nu este necesară securitatea la încărcarea sau descărcarea fișierelor.
Îl folosim în acest articol pentru a ilustra avantajele scurgerilor și pentru că arată ratele de transfer în stdout pe client și vom lăsa discuția dacă ar trebui sau nu să fie utilizată pentru altă dată și oră.
# yum update && yum install vsftpd [Pe sistemele bazate pe RedHat] # apt update && apt install vsftpd [Pe sistemele bazate pe Debian]
Acum, editați fișierul /etc/vsftpd/vsftpd.conf pe serverul FTP după cum urmează:
$ sudo nano /etc/vsftpd/vsftpd.conf. SAU. $ sudo /etc/vsftpd.conf.
Efectuați următoarele modificări:
anonymous_enable = NU. local_enable = DA. chroot_local_user = DA. allow_writeable_chroot = DA.
După aceea, asigurați-vă că porniți vsftpd pentru sesiunea dvs. curentă și pentru a o activa pentru pornire automată pe viitoarele cizme:
# systemctl start vsftpd [Pentru sistemele bazate pe systemd] # systemctl activa vsftpd. # service vsftpd start [Pentru sistemele bazate pe ini] # chkconfig vsftpd activat.
4. Dacă ați ales să configurați serverul FTP într-un CentOS/RHEL picătură cu chei SSH pentru acces de la distanță, veți avea nevoie de un cont de utilizator protejat prin parolă cu codul corespunzător permisiunile de director și fișier pentru încărcarea și descărcarea conținutului dorit în afara directorului principal al rădăcinii.
Apoi, puteți naviga la directorul de acasă introducând următoarea adresă URL în browser. Va apărea o fereastră de conectare care vă solicită un cont de utilizator valid și o parolă pe serverul FTP.
ftp://192.168.0.15.
Dacă autentificarea reușește, veți vedea conținutul directorului de acasă. Mai târziu în acest tutorial, veți putea actualiza acea pagină pentru a afișa fișierele care au fost încărcate în timpul pașilor anteriori.
Acum instalați trickle prin da sau apt.
Pentru a asigura o instalare reușită, este considerată o bună practică să vă asigurați că pachetele instalate în prezent sunt actualizate (folosind yum actualizare) înainte de a instala instrumentul în sine.
# yum -y update && yum install trickle [Pe sistemele bazate pe RedHat] # apt -y update && apt install trickle [Pe sistemele bazate pe Debian]
Verificați dacă scurgerea va funcționa cu binarul dorit. După cum am explicat mai devreme, scurgerea va funcționa numai cu binare folosind biblioteci dinamice sau partajate. Pentru a verifica dacă putem folosi acest instrument cu o anumită aplicație, putem folosi binecunoscutul ldd utilitate, unde ldd reprezintă lista dependențelor dinamice.
Mai exact, vom căuta prezența glibc (biblioteca GNU C) din lista dependențelor dinamice ale oricărui program dat, deoarece tocmai acea bibliotecă definește apelurile de sistem implicate în comunicarea prin socketuri.
Rulați următoarea comandă împotriva unui anumit binar pentru a vedea dacă se poate folosi un fir de scurgere pentru a-și forma lățimea de bandă:
# ldd $ (care [binar]) | grep libc.so.
De exemplu,
# ldd $ (care ncftp) | grep libc.so.
a cărui ieșire este:
# libc.so.6 => /lib64/libc.so.6 (0x00007efff2e6c000)
Șirul dintre paranteze în ieșire se poate schimba de la sistem la sistem și chiar între rulările ulterioare ale aceleiași comenzi, deoarece reprezintă adresa de încărcare a bibliotecii în memoria fizică.
Dacă comanda de mai sus nu returnează niciun rezultat, înseamnă că binarul împotriva căruia a fost rulat nu se folosește libc, și, prin urmare, scurgerea nu poate fi utilizată ca modelator al lățimii de bandă în acest caz.
Cea mai simplă utilizare a scurgerii este în modul independent. Folosind această abordare, trickle este utilizat pentru a defini în mod explicit viteza de descărcare și încărcare a unei aplicații date. După cum am explicat mai devreme, din motive de scurtă durată, vom folosi aceeași aplicație pentru testele de descărcare și încărcare.
Vom compara viteza de descărcare și încărcare cu și fără a folosi trickle. -d
opțiunea indică viteza de descărcare în KB / s, în timp ce -u
steagul indică scurgerii să limiteze viteza de încărcare cu aceeași unitate. În plus, vom folosi -s
flag, care specifică faptul că scurgerea ar trebui să ruleze în modul independent.
Sintaxa de bază pentru a rula trickle în modul independent este după cum urmează:
# trickle -s -d [rata de descărcare în KB / s] -u [rata de încărcare în KB / s]
Pentru a efectua următoarele exemple pe cont propriu, asigurați-vă că aveți prelinge și ncftp instalat pe computerul client (192.168.0.17 În cazul meu).
Folosim distribuibilul liber Bazele Linux Fișier PDF (disponibil de la Aici) pentru următoarele teste.
Puteți descărca inițial acest fișier în directorul curent de lucru cu următoarea comandă:
# wget http://linux-training.be/files/books/LinuxFun.pdf
Sintaxa pentru a încărca un fișier pe serverul nostru FTP fără scurgeri este după cum urmează:
# ncftpput -u nume de utilizator -p parolă 192.168.0.15 / remote_directory local-filename
Unde /remote_directory este calea directorului de încărcare relativ la pagina de start a numelui de utilizator și local-filename este un fișier din directorul curent de lucru.
Mai exact, fără scurgeri obținem o viteză maximă de încărcare de 52,02 MB / s (Vă rugăm să rețineți că aceasta nu este viteza medie reală de încărcare, ci un vârf de pornire instantaneu), iar fișierul este încărcat aproape instantaneu:
# ncftpput -u nume de utilizator -p parolă 192.168.0.15 / testdir LinuxFun.pdf
Ieșire:
LinuxFun.pdf: 2,79 MB 52,02 MB / s.
Cu scurgerea, vom limita rata de transfer a încărcării la 5 KB / s. Înainte de a încărca fișierul pentru a doua oară, trebuie să îl ștergem din directorul de destinație; in caz contrar, ncftp ne va informa că fișierul din directorul de destinație este același pe care încercăm să îl încărcăm și nu va efectua transferul:
# rm /absolute/path/to/destination/directory/LinuxFun.pdf
Apoi:
# trickle -s -u 5 ncftpput -u nume de utilizator -p parolă 111.111.111.111 / testdir LinuxFun.pdf
Ieșire:
LinuxFun.pdf: 2,79 MB 4,94 kB / s.
În exemplul de mai sus, putem vedea că viteza medie de încărcare a scăzut la ~ 5 KB / s.
Mai întâi, nu uitați să ștergeți PDF-ul din directorul sursă original:
# rm /absolute/path/to/source/directory/LinuxFun.pdf
Vă rugăm să rețineți că următoarele cazuri vor descărca fișierul la distanță în directorul curent din computerul client. Acest fapt este indicat de perioada („.‘) Care apare după adresa IP a serverului FTP.
Fără prelingere:
# ncftpget -u nume de utilizator -p parolă 111.111.111.111. /testdir/LinuxFun.pdf
Ieșire:
LinuxFun.pdf: 2,79 MB 260,53 MB / s.
Cu scurgeri, limitând viteza de descărcare la 20 KB / s:
# trickle -s -d 30 ncftpget -u nume de utilizator -p parolă 111.111.111.111. /testdir/LinuxFun.pdf
Ieșire:
LinuxFun.pdf: 2,79 MB 17,76 kB / s.
Trickle poate rula și în modul neadministrat, urmând o serie de parametri definiți în /etc/trickled.conf. Acest fișier definește modul în care se comportă trickle (demonul) și gestionează trickle.
În plus, dacă dorim să setăm setări globale care să fie utilizate, în general, de toate aplicațiile, va trebui să folosim comanda trickled. Această comandă rulează daemonul și ne permite să definim limitele de descărcare și încărcare care vor fi partajate de toate aplicațiile rulate prin trickle fără ca noi să fie nevoie să specificăm limite de fiecare dată.
De exemplu, rularea:
# trickled -d 50 -u 10.
Va face ca viteza de descărcare și încărcare a oricărei aplicații rulate prin trickle să fie limitată la 30 KB / s și 10 KB / s, respectiv.
Vă rugăm să rețineți că puteți verifica în orice moment dacă rulează trickled și cu ce argumente:
# ps -ef | grep a scurs | grep -v grep.
Ieșire:
rădăcină 16475 1 0 Dec24? 00:00:04 a scurs -d 50 -u 10.
În acest exemplu vom folosi „He este darul”Video, disponibil pentru descărcare de la acest link.
Vom descărca inițial acest fișier în directorul dvs. de lucru curent cu următoarea comandă:
# wget http://media2.ldscdn.org/assets/missionary/our-people-2014/2014-00-1460-he-is-the-gift-360p-eng.mp4
În primul rând, vom porni daemonul prelins cu comanda enumerată mai sus:
# trickled -d 30 -u 10.
Fără prelingere:
# ncftpput -u nume de utilizator -p parolă 192.168.0.15 / testdir 2014-00-1460-el-este-cadoul-360p-eng.mp4
Ieșire:
2014-00-1460-he-is-the-gift-360p-eng.mp4: 18.53 MB 36.31 MB / s.
Cu scurgeri:
# trickle ncftpput -u username -p password 192.168.0.15 / testdir 2014-00-1460-he-is-the-gift-360p-eng.mp4
Ieșire:
2014-00-1460-he-is-the-gift-360p-eng.mp4: 18.53 MB 9.51 kB / s.
După cum putem vedea în rezultatul de mai sus, rata de transfer a încărcării a scăzut la ~ 10 KB / s.
Ca în Exemplul 2, vom descărca fișierul în directorul de lucru curent.
Fără prelingere:
# ncftpget -u nume de utilizator -p parolă 192.168.0.15. /testdir/2014-00-1460-he-is-the-gift-360p-eng.mp4
Ieșire:
2014-00-1460-he-is-the-gift-360p-eng.mp4: 18.53 MB 108.34 MB / s.
Cu scurgeri:
# trickle ncftpget -u nume de utilizator -p parolă 111.111.111.111. /testdir/2014-00-1460-he-is-the-gift-360p-eng.mp4
Ieșire:
2014-00-1460-he-is-the-gift-360p-eng.mp4: 18.53 MB 29.28 kB / s.
Ceea ce este în conformitate cu limita de descărcare stabilită anterior (30 KB / s).
Notă: Că, odată ce demonul a fost pornit, nu este nevoie să stabiliți limite individuale pentru fiecare aplicație care folosește trickle.
După cum am menționat mai devreme, se poate personaliza și mai mult conturarea lățimii de bandă a trickle prin trickled.conf. O secțiune tipică din acest fișier constă din următoarele:
[serviciu] Prioritate =Netezirea timpului = Lungime-Netezire =
Unde,
Modificarea valorilor de netezire se va traduce în aplicația specificată de [serviciu] folosind ratele de transfer într-un interval în loc de o valoare fixă. Din păcate, nu există nicio formulă pentru calcularea limitelor inferioare și superioare ale acestui interval, deoarece depinde în principal de fiecare scenariu de caz specific.
Următorul este un trickled.conf fișier eșantion în clientul CentOS 7 (192.168.0.17):
[ssh] Prioritate = 1. Netezire în timp = 0,1. Lungime-Netezire = 2 [ftp] Prioritate = 2. Netezire în timp = 1. Lungime-Netezire = 3.
Folosind această configurare, trickled va prioritiza conexiunile SSH în locul transferurilor FTP. Rețineți că un proces interactiv, cum ar fi SSH, folosește valori de reducere a timpului mai mici, în timp ce un serviciu care efectuează transferuri de date în bloc (FTP) utilizează o valoare mai mare.
Valorile de netezire sunt responsabile pentru viteza de descărcare și încărcare din exemplul nostru anterior, care nu se potrivește cu valoarea exactă specificată de daemonul prelins, ci se deplasează într-un interval apropiat de acesta.
[ S-ar putea sa-ti placa si: Cum să securizați și să întăriți serverul OpenSSH ]
În acest articol am explorat modul de a limita lățimea de bandă utilizată de aplicațiile care utilizează prelungiri pe distribuții bazate pe Fedora și Debian / derivate. Alte cazuri de utilizare posibile includ, dar nu se limitează la:
Întrebările și comentariile sunt binevenite. Simțiți-vă liber să utilizați formularul de mai jos pentru a ne trimite calea.