![Come accedere alle impostazioni nascoste di AirPods Pro su iPhone](/f/f254997013dfdc316e6f18798b733919.jpg?width=100&height=100)
Ti sei mai imbattuto in situazioni in cui un'applicazione dominava tutta la larghezza di banda della tua rete? Se ti sei mai trovato in una situazione in cui un'applicazione ha mangiato tutto il tuo traffico, allora apprezzerai il ruolo dell'applicazione per lo shaper della larghezza di banda.
O sei un amministratore di sistema o solo un Utente Linux, devi imparare a controllare il velocità di upload e download per le applicazioni per assicurarsi che la larghezza di banda della rete non venga bruciata da una singola applicazione.
[ Potrebbe piacerti anche: 16 utili strumenti di monitoraggio della larghezza di banda per analizzare l'utilizzo della rete in Linux ]
gocciolare è uno strumento di modellazione della larghezza di banda della rete che ci consente di gestire la velocità di upload e download delle applicazioni in modo da impedire a qualcuna di esse di occupare tutta (o la maggior parte) della larghezza di banda disponibile.
In poche parole, trickle ti lascia controllare il traffico di rete
tasso in base all'applicazione, al contrario del controllo per utente, che è il classico esempio di modellamento della larghezza di banda in un ambiente client-server, ed è probabilmente l'impostazione con cui abbiamo più familiarità.Inoltre, un filo può aiutarci a definire le priorità in base all'applicazione in modo che quando sono stati fissati limiti generali per l'intero sistema, le app prioritarie avranno ancora più larghezza di banda automaticamente.
Per eseguire questo compito, il trickle imposta limiti di traffico al modo in cui i dati vengono inviati e ricevuti dai socket che utilizzano le connessioni TCP. Dobbiamo notare che, oltre alle velocità di trasferimento dei dati, il trickle non modifica in alcun modo il comportamento del processo che sta plasmando in un dato momento.
L'unica limitazione, per così dire, è che il trickle non funzionerà con applicazioni o binari collegati staticamente con il SUID o SGID bit impostati poiché utilizza il collegamento e il caricamento dinamici per posizionarsi tra il processo sagomato e il socket di rete associato. Trickle funge quindi da proxy tra questi due componenti software.
Poiché trickle non richiede privilegi di superutente per l'esecuzione, gli utenti possono impostare i propri limiti di traffico. Poiché ciò potrebbe non essere desiderabile, esploreremo come impostare limiti complessivi che gli utenti del sistema non possono superare. In altre parole, gli utenti potranno comunque gestire le proprie tariffe di traffico, ma sempre entro i limiti fissati dall'amministratore di sistema.
In questo articolo spiegheremo come limitare la larghezza di banda di rete utilizzata dalle applicazioni in un server Linux con un trickle.
Per generare il traffico necessario, useremo ncftpput e ncftpget (entrambi gli strumenti sono disponibili installando ncftp) sul cliente (CentOS server – dev1: 192.168.0.17), e vsftpd sul server (Debian – dev2: 192.168.0.15) a scopo dimostrativo. Le stesse istruzioni funzionano anche su Cappello rosso, Fedora e Sistemi basati su Ubuntu.
1. Per RHEL/CentOS 8/7, abilitare il repository EPEL. Pacchetti extra per Enterprise Linux (EPEL) è un repository di software gratuito e open source di alta qualità gestito dal progetto Fedora ed è compatibile al 100% con i suoi derivati, come Red Hat Enterprise Linux e CentOS. Tutti e due gocciolare e ncftp sono resi disponibili da questo repository.
2. Installare ncftp come segue:
# yum update && sudo yum install ncftp [Sui sistemi basati su RedHat] # aptitude update && aptitude install ncftp [Su sistemi basati su Debian]
3. Configura un server FTP in un server separato. Si noti che sebbene FTP sia intrinsecamente insicuro, è ancora ampiamente utilizzato nei casi in cui non è necessaria la sicurezza nel caricamento o nel download di file.
Lo stiamo usando in questo articolo per illustrare i doni del rivolo e perché mostra le velocità di trasferimento in stdout sul cliente, e lasceremo la discussione se dovrebbe o non dovrebbe essere usato per un'altra data e ora.
# yum update && yum install vsftpd [Sui sistemi basati su RedHat] # apt update && apt install vsftpd [Su sistemi basati su Debian]
Ora, modifica il /etc/vsftpd/vsftpd.conf file sul server FTP come segue:
$ sudo nano /etc/vsftpd/vsftpd.conf. O. $ sudo /etc/vsftpd.conf.
Apportare le seguenti modifiche:
anonimo_abilita=NO. local_enable=SI. chroot_local_user=SI. allow_writeable_chroot=S.
Successivamente, assicurati di avviare vsftpd per la tua sessione corrente e di abilitarlo per l'avvio automatico agli avvii futuri:
# systemctl start vsftpd [Per sistemi basati su systemd] # systemctl abilita vsftpd. # service vsftpd start [Per sistemi basati su init] # chkconfig vsftpd attivo.
4. Se hai scelto di configurare il server FTP in a CentOS/RHEL droplet con chiavi SSH per l'accesso remoto, sarà necessario un account utente protetto da password con l'appropriato directory e autorizzazioni file per caricare e scaricare il contenuto desiderato FUORI dalla directory principale della radice.
Puoi quindi accedere alla tua home directory inserendo il seguente URL nel tuo browser. Apparirà una finestra di accesso che ti chiederà di inserire un account utente e una password validi sul server FTP.
ftp://192.168.0.15.
Se l'autenticazione riesce, vedrai il contenuto della tua home directory. Più avanti in questo tutorial, sarai in grado di aggiornare quella pagina per visualizzare i file che sono stati caricati durante i passaggi precedenti.
Ora installa trickle tramite yum o adatto.
Per garantire una corretta installazione, è considerata buona pratica assicurarsi che i pacchetti attualmente installati siano aggiornati (usando yum aggiornamento) prima di installare lo strumento stesso.
# yum -y update && yum install trickle [Sui sistemi basati su RedHat] # apt -y update && apt install trickle [Sui sistemi basati su Debian]
Verificare se trickle funzionerà con il binario desiderato. Come abbiamo spiegato in precedenza, il trickle funzionerà solo con i binari che utilizzano librerie dinamiche o condivise. Per verificare se possiamo usare questo strumento con una certa applicazione, possiamo usare il ben noto ldd utilità, dove ldd sta per liste dipendenze dinamiche.
Nello specifico, cercheremo la presenza di glibc (la libreria GNU C) nell'elenco delle dipendenze dinamiche di un dato programma perché è proprio quella libreria che definisce le chiamate di sistema coinvolte nella comunicazione tramite socket.
Esegui il seguente comando su un dato binario per vedere se il trickle può essere usato per modellare la sua larghezza di banda:
# ldd $(quale [binario]) | grep libc.so.
Per esempio,
# ldd $(quale ncftp) | grep libc.so.
il cui output è:
# libc.so.6 => /lib64/libc.so.6 (0x00007efff2e6c000)
La stringa tra parentesi nell'output può cambiare da sistema a sistema e anche tra successive esecuzioni dello stesso comando poiché rappresenta l'indirizzo di caricamento della libreria in memoria fisica.
Se il comando precedente non restituisce alcun risultato, significa che il binario su cui è stato eseguito non viene utilizzato libc, e quindi il trickle non può essere usato come shaper di larghezza di banda in quel caso.
L'uso più elementare di trickle è in modalità standalone. Utilizzando questo approccio, il trickle viene utilizzato per definire in modo esplicito le velocità di download e upload di una determinata applicazione. Come abbiamo spiegato in precedenza, per brevità, utilizzeremo la stessa applicazione per i test di download e upload.
Confronteremo le velocità di download e upload con e senza l'uso di trickle. Il -D
l'opzione indica la velocità di download in KB/s, mentre l'opzione -u
flag dice a trickle di limitare la velocità di upload dalla stessa unità. Inoltre, utilizzeremo il -S
flag, che specifica che trickle dovrebbe essere eseguito in modalità standalone.
La sintassi di base per eseguire trickle in modalità standalone è la seguente:
# trickle -s -d [velocità di download in KB/s] -u [velocità di upload in KB/s]
Per eseguire da soli i seguenti esempi, assicurati di avere gocciolare e ncftp installato sulla macchina client (192.168.0.17 nel mio caso).
Stiamo usando il liberamente distribuibile Fondamenti di Linux File PDF (disponibile da qui) per le seguenti prove.
Puoi inizialmente scaricare questo file nella tua directory di lavoro corrente con il seguente comando:
# wget http://linux-training.be/files/books/LinuxFun.pdf
La sintassi per caricare un file sul nostro server FTP senza problemi è la seguente:
# ncftpput -u nome utente -p password 192.168.0.15 /directory_remota nome-file locale
In cui si /remote_directory è il percorso della directory di caricamento relativa alla home del nome utente, e nome-file locale è un file nella directory di lavoro corrente.
In particolare, senza gocciolamento otteniamo una velocità di caricamento massima di 52,02 MB/s (si prega di notare che questa non è la reale velocità media di caricamento, ma un picco iniziale istantaneo) e il file viene caricato quasi istantaneamente:
# ncftpput -u nome utente -p password 192.168.0.15 /testdir LinuxFun.pdf
Produzione:
LinuxFun.pdf: 2,79 MB 52,02 MB/s.
Con il trickle, limiteremo la velocità di trasferimento in upload a 5 KB/s. Prima di caricare il file per la seconda volta, dobbiamo eliminarlo dalla directory di destinazione; altrimenti, ncftp ci informerà che il file nella directory di destinazione è lo stesso che stiamo cercando di caricare e non eseguirà il trasferimento:
# rm /absolute/path/to/destination/directory/LinuxFun.pdf
Quindi:
# trickle -s -u 5 ncftpput -u nome utente -p password 111.111.111.111 /testdir LinuxFun.pdf
Produzione:
LinuxFun.pdf: 2,79 MB 4,94 kB/s.
Nell'esempio sopra, possiamo vedere che la velocità media di caricamento è scesa a ~5 KB/s.
Innanzitutto, ricorda di eliminare il PDF dalla directory di origine originale:
# rm /absolute/path/to/source/directory/LinuxFun.pdf
Si noti che i seguenti casi scaricheranno il file remoto nella directory corrente nel computer client. Questo fatto è indicato dal punto («.‘) che appare dopo l'indirizzo IP del server FTP.
Senza gocciolamento:
# ncftpget -u nome utente -p password 111.111.111.111. /testdir/LinuxFun.pdf
Produzione:
LinuxFun.pdf: 2,79 MB 260,53 MB/s.
Con un filo, limitando la velocità di download a 20 KB/s:
# trickle -s -d 30 ncftpget -u nome utente -p password 111.111.111.111. /testdir/LinuxFun.pdf
Produzione:
LinuxFun.pdf: 2,79 MB 17,76 kB/s.
Trickle può essere eseguito anche in modalità non gestita, seguendo una serie di parametri definiti in /etc/trickled.conf. Questo file definisce come si comporta il trickle (il demone) e come gestisce il trickle.
Inoltre, se vogliamo impostare le impostazioni globali che devono essere utilizzate, nel complesso, da tutte le applicazioni, dovremo utilizzare il comando trickled. Questo comando esegue il demone e ci consente di definire i limiti di download e upload che saranno condivisi da tutte le applicazioni eseguite tramite trickle senza che dobbiamo specificare limiti ogni volta.
Ad esempio, eseguendo:
# gocciolato -d 50 -u 10.
Fa sì che le velocità di download e upload di qualsiasi applicazione eseguita tramite trickle siano limitate a 30 KB/s e 10 KB/s, rispettivamente.
Tieni presente che puoi controllare in qualsiasi momento se trickled è in esecuzione e con quali argomenti:
# ps -ef | grep gocciolava | grep -v grep.
Produzione:
radice 16475 1 0 dic24? 00:00:04 gocciolava -d 50 -u 10.
In questo esempio useremo la "H ." liberamente distribuibilee è il dono"video, disponibile per il download da questo link.
Inizialmente scaricheremo questo file nella tua directory di lavoro corrente con il seguente comando:
# wget http://media2.ldscdn.org/assets/missionary/our-people-2014/2014-00-1460-he-is-the-gift-360p-eng.mp4
Prima di tutto, avvieremo il demone infiltrato con il comando sopra elencato:
# gocciolato -d 30 -u 10.
Senza gocciolamento:
# ncftpput -u nome utente -p password 192.168.0.15 /testdir 2014-00-1460-he-is-the-gift-360p-eng.mp4
Produzione:
2014-00-1460-he-is-the-gift-360p-eng.mp4: 18,53 MB 36,31 MB/s.
Con gocciolamento:
# trickle ncftpput -u username -p password 192.168.0.15 /testdir 2014-00-1460-he-is-the-gift-360p-eng.mp4
Produzione:
2014-00-1460-he-is-the-gift-360p-eng.mp4: 18,53 MB 9,51 kB/s.
Come possiamo vedere nell'output sopra, la velocità di trasferimento in upload è scesa a ~10 KB/s.
Come in Esempio 2, scaricheremo il file nella directory di lavoro corrente.
Senza gocciolamento:
# ncftpget -u nome utente -p password 192.168.0.15. /testdir/2014-00-1460-he-is-the-gift-360p-eng.mp4
Produzione:
2014-00-1460-he-is-the-gift-360p-eng.mp4: 18,53 MB 108,34 MB/s.
Con gocciolamento:
# trickle ncftpget -u nome utente -p password 111.111.111.111. /testdir/2014-00-1460-he-is-the-gift-360p-eng.mp4
Produzione:
2014-00-1460-he-is-the-gift-360p-eng.mp4: 18,53 MB 29,28 kB/s.
Che è conforme al limite di download impostato in precedenza (30 KB/s).
NotaNota: una volta avviato il demone, non è necessario impostare limiti individuali per ogni applicazione che utilizza trickle.
Come accennato in precedenza, è possibile personalizzare ulteriormente la modellazione della larghezza di banda di trickle tramite trickled.conf. Una sezione tipica di questo file è costituita da quanto segue:
[servizio] Priorità =Levigatura del tempo = Levigatura della lunghezza =
In cui si,
La modifica dei valori di livellamento si tradurrà nell'applicazione specificata da [servizio] utilizzando velocità di trasferimento all'interno di un intervallo anziché un valore fisso. Sfortunatamente, non esiste una formula per calcolare i limiti inferiore e superiore di questo intervallo poiché dipende principalmente da ogni caso specifico.
Quello che segue è un gocciolato.conf file di esempio nel client CentOS 7 (192.168.0.17):
[ssh] Priorità = 1. Levigatura del tempo = 0,1. Lisciatura della lunghezza = 2 [ftp] Priorità = 2. Levigatura del tempo = 1. Lunghezza-Levigatura = 3.
Usando questa configurazione, trickled darà la priorità alle connessioni SSH rispetto ai trasferimenti FTP. Si noti che un processo interattivo, come SSH, utilizza valori di attenuazione del tempo più piccoli, mentre un servizio che esegue trasferimenti di dati di massa (FTP) utilizza un valore maggiore.
I valori di smoothing sono responsabili delle velocità di download e upload nel nostro esempio precedente non corrispondenti al valore esatto specificato dal demone trickled ma spostandosi in un intervallo vicino ad esso.
[ Potrebbe piacerti anche: Come proteggere e rafforzare il server OpenSSH ]
In questo articolo abbiamo esplorato come limitare la larghezza di banda utilizzata dalle applicazioni utilizzando trickle su distribuzioni basate su Fedora e Debian/derivate. Altri possibili casi d'uso includono, ma non sono limitati a:
Domande e commenti sono i benvenuti. Sentiti libero di utilizzare il modulo sottostante per inviarli a modo nostro.