Rallentare le singole connessioni che passano attraverso un router Linux?


8

Abbiamo un server Linux che funge da router / firewall per il nostro ufficio. Di tanto in tanto qualcuno carica un file di grandi dimensioni che occupa tutta la nostra larghezza di banda. Non voglio implementare regole complesse o modellamento del traffico, ma mi chiedo se c'è un modo per rallentare una singola connessione sul posto? Ho trovato tcpnice , ma non rallenta i trasferimenti nei miei test.

Risposte:


6

Se lo shaping del traffico non modella correttamente il traffico sia per la shell sia per i caricamenti attivi (penso che possa, ma non ne sono sicuro), potresti:

a) eseguire ssh su due porte: è possibile dare priorità a uno per i trasferimenti di file e uno per il lavoro interattivo.

b) limitare le percentuali di ssh totali - l'unico problema è se si riempie la capacità di upload del collegamento e ssh funzionerà in modo interattivo se si limita la velocità a qualcosa di simile a 50kbps (questo costringerà gli utenti a usare qualche altro protocollo per trasferimenti di file più grandi )

c) se possibile, assegnare la priorità al traffico sull'indirizzo di origine

inoltre, la modellizzazione del traffico dovrebbe rendere il traffico più equilibrato, indipendentemente dal fatto che la singola connessione non monopolizzi l'intero collegamento.

EDIT: ecco un esempio che utilizza uno script bash. Indica che ssh imposta effettivamente TOS da interattivo a interattivo, quindi presumo che Wondershaper ne approfitti.

Se vuoi altre opzioni oltre a Wondershaper assicurati di dare un'occhiata a shorewall o pyshape .

Shorewall è abbastanza maturo e piacevole equilibrio tra flessibilità, potenza e semplicità.


4

Wondershaper può fare miracoli ed è abbastanza facile da configurare. Oltre a ciò, puoi trovare alcuni programmi per l'utente. In Linux c'è Trickle , potrebbero esserci equivalenti per Windows.

Ma davvero, vuoi dare forma al traffico: le persone dimenticheranno di eseguire il programma, ecc. Limitare i caricamenti a un po 'meno della tua piena capacità probabilmente ti farà molto bene.


1
Il problema principale che ho con il traffic shaping è che AFAIK non vede l'ora di distinguere un caricamento di file tramite SFTP / SCP da una sessione SSH interattiva. Voglio dare la priorità alle mie sessioni SSH interattive, ma farlo darebbe anche la priorità ai miei caricamenti, vanificando lo scopo: /
davr

2
Credo che ssh differenzi l'uso interattivo (ssh) da quello non interattivo (scp / sftp) usando un'intestazione TOS TCP / IP, e Wondershaper lo usa.
alex

Sfortunatamente né Putty (client SSH interattivo) né Filezilla (client SFTP per trasferimento file) hanno impostato flag TOS TCP / IP. Quindi il mio firewall non può distinguere tra di loro.
davr

Anche Wondershaper ha 8 anni ... sembra un'eternità nel tempo di Internet.
davr

2

Dai un'occhiata a manrate di connrate in iptables (8). Puoi abbinare la velocità di connessione e rallentare una connessione che ha un caricamento troppo veloce inserendola in una classe tc appropriata o drop o tarpit o qualunque cosa funzioni per te.


1

Hai pensato di impostare un proxy Squid inverso e di impostare pool di ritardo ? Puoi farlo anche con la direttiva limite di iptables.

L'unico problema che ho con la tua richiesta è che sembra che tu voglia iniziare a limitare la velocità di trasferimento di una connessione già stabilita che sarà abbastanza difficile da fare poiché tutto ciò che riesco a pensare inizierà a funzionare su un nuova connessione e lascerà attive le connessioni esistenti.

Devo essere d'accordo con alex sul fatto che probabilmente avrai bisogno di una sorta di traffic shaper, quello che vuoi guardare sono i pacchetti al secondo poiché una shell interattiva avrà un valore significativamente più piccolo di un trasferimento di file modesto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.