PDA

View Full Version : Come limitare la banda?


[Gnomix]
15-11-2003, 00:16
Salve a tutti,
cosa posso usare per limitare la banda in entrata e in uscita ke avvengono da internet e non dalla mia lan?

mi spiego:
ho un pc linux con 192.168.0.1/24 connesso ad un router (GW) 192.168.0.138/24

vorrei limitare la banda in upload e download solo dai pacchetti provenienti da internet.

Grazie 1000
[Gnomix]

The X
15-11-2003, 01:33
Anche io ho un problema simile MA finora nessuno ha mai risposto al mio post quindi non posso fare altro che upparti e sperare che qlc buon'anima ci risponda....

Io ho un PC con Linux connesso ad internet tramite modem eth adsl, su tale PC c'è installato un Server Ftp (Proftp) e vorrei limitare la banda di DL/UP disponibile per le connessioni ftp; siccome tramite Proftp non mi funziona la limitazione della banda sono alla ricerca anche io d un metodo per limitare la banda secondo determinati criterie tipo "limitazione per utente" oppure "limitazione per porta" eccc ecc

[Gnomix]
15-11-2003, 08:50
per ora per limitare la banda in uscita io ho trovato shapecfg ma limita solo banda in uscita...
cmq ti posso dire ke lo shaping lo fa pure iptables... anche se vorrei un prg a se per fare tutto questo

The X
15-11-2003, 14:52
Originariamente inviato da [Gnomix]
per ora per limitare la banda in uscita io ho trovato shapecfg ma limita solo banda in uscita...
cmq ti posso dire ke lo shaping lo fa pure iptables... anche se vorrei un prg a se per fare tutto questo

Riusciresti a dirmi la sintassi della regola di iptables da applicare ?
Perchè se iptables funzia anche per questo aggiungo tali regole al mio script del firewall e per me il problema è risolto ^_^

Cmq a me serve limitare solo la banda in uscita (ovvero il mio upload) quindi mi ha doppiamente risposto ^_^

[Gnomix]
15-11-2003, 17:06
per limitare la banda in uscita usa shapecfg

la regola di iptables me lo setta shorewall mediante "webmin" ma limita sia in UP e DOWN

The X
15-11-2003, 18:33
Originariamente inviato da [Gnomix]
per limitare la banda in uscita usa shapecfg

la regola di iptables me lo setta shorewall mediante "webmin" ma limita sia in UP e DOWN

Puoi cercare il conf relativo dove viene settate queste regole e postarmelo qui ?

Tnk

gurutech
15-11-2003, 18:59
ciao,
penso che piuttosto che cimentarti con iptables, se il problema può essere generalizzato al solo traffico web/ftp, tu possa installare squid e usare i delaypools (http://squid.visolve.com/squid24s1/delaypool.htm)

fai conto che funziona così:
devi creare dei "cestini" (bucket) dove la gente può pescare le pagine web.
finchè il tuo cestino è pieno, pui abbuffarti alla massima velocità. appena si svuota viene riempito a velocità costante che ti limita la banda.
in pratica: chiunque vede solo le pagine web e scarica piccoli file non ha problemi, chi scarica grossi file deve soffrire!


Conceptually, Delay pools are bandwidth limitations - "pools" of bandwidth that drain out as people browse the Web, and fill up at a rate we specify - this can be thought of as a leaky bucket that is continually being filled. This is useful when bandwidth charges are in place, if we want to reduce bandwidth usage for web traffic.

Delay Pools can do wonders when combined with ACLs. These tags permit us to limit the bandwidth of certain requests, based on any criteria. Delay behavior is selected by ACLs (low and high priority traffic, staff Vs students or student Vs authenticated student or so on). In ISPs, delay pools can be implemented in a particular network to improve the quality of service. To enable this, Squid needs to be configured with the --enable-delay-pools option.

The X
15-11-2003, 19:43
Per Gnomix : Ho visto Shapecfg ma esso si lega solo ad un'interfaccia di rete e ad essa limita la banda.... Tramite esso, da quello che ho capito io, viene limitata l'intera banda in uscita dal mio server mentre io vorrei limitare SOLO il Server Ftp (ovvero vorrei che via FTP la massima banda in uscita disponibile fosse x k/s)

Per Gurutech : Come detto sopra IO vorrei fare in modo che chi scarica dal mio Server Ftp abbia a disposizione fino a x k/s (dove x è ovviamente inferiore alla mia banda totale in uplods); non mi interesserebbe differenziare il tutto per utente MA vorrei solo che via FTP sia disponibile in TOTALE x k/s in uscita (Se poi si collegano 2 utente allora ogni utente avrebbe circa x/2 k/s)... Col squid + delaypools si può fare questo ?

gurutech
15-11-2003, 19:52
Originariamente inviato da The X
Per Gurutech : Come detto sopra IO vorrei fare in modo che chi scarica dal mio Server Ftp abbia a disposizione fino a x k/s (dove x è ovviamente inferiore alla mia banda totale in uplods); non mi interesserebbe differenziare il tutto per utente MA vorrei solo che via FTP sia disponibile in TOTALE x k/s in uscita (Se poi si collegano 2 utente allora ogni utente avrebbe circa x/2 k/s)... Col squid + delaypools si può fare questo ?

non vorrei fare una domanda scontata, ma hai letto questo (http://proftpd.linux.co.uk/localsite/Userguide/linked/x950.html)?

in ogni caso credo che sia meglio cercare di risolvere il tuo problema cercando di aggiustare la tua configurazione di proftpd, piuttosto che aggiungere altri pezzi al server.
Questo almeno è il mio consiglio, perchè più pezzi metti più hai la possibilità che qualcosa vada storto, e poi non sai dove girarti.

Perchè non ci posti la tua conf di proftpd, insieme alla distro e alla versione del daemon che stai usando?

The X
15-11-2003, 20:04
Originariamente inviato da gurutech
non vorrei fare una domanda scontata, ma hai letto questo (http://proftpd.linux.co.uk/localsite/Userguide/linked/x950.html)?

in ogni caso credo che sia meglio cercare di risolvere il tuo problema cercando di aggiustare la tua configurazione di proftpd, piuttosto che aggiungere altri pezzi al server.
Questo almeno è il mio consiglio, perchè più pezzi metti più hai la possibilità che qualcosa vada storto, e poi non sai dove girarti.

Perchè non ci posti la tua conf di proftpd, insieme alla distro e alla versione del daemon che stai usando?

Certo che ho letto quelle opzioni di Proftp e le ho anche provate ma con nulli effetti OVVERO se io impostavo la banda massima a 5 k/s la gente continuava a scaricare a valore > d 5 k/s

Ad ogni modo ecco il mio Proftpd.conf

ServerName "ProFTPD Default Installation"
ServerType standalone
DefaultServer on
Port 21
Umask 022
MaxInstances 4
User nobody
Group nogroup
<Directory />
AllowOverwrite on
AllowRetrieveRestart on
AllowStoreRestart on
DeleteAbortedStores off
HiddenStor off
</Directory>
<Global>
LoginPasswordPrompt on
AllowOverwrite off
RootLogin off
MaxLoginAttempts 3
UseFtpUsers on
DefaultRoot ~
DeleteAbortedStores off
HiddenStor off
ShowSymlinks on
AllowRetrieveRestart on
AllowStoreRestart on
DefaultTransferMode binary
MaxClients 2
MaxClientsPerHost 2
TransferLog /var/log/ftp.log
SyslogLevel notice
</Global>
TimesGMT on
TimeoutIdle 60
TimeoutNoTransfer 60"

Se sai dirmi quali opzioni mettere e dove IO le RI-provo anche...

The X
15-11-2003, 20:38
T 6 perso questo post Guru ? :D

Ovviamente scherzo :sofico:

gurutech
15-11-2003, 20:41
no che non me lo sono perso.
solo che è ad un livello un poco più in alto dello script, quindi dovrei fare delle prove prima di dare delle risposte.

fra poco esco, e in ogni caso stasera non ho voglia di smanettare su demoni (già ho i miei personali), spero di poter fare due prove domani sera ma sarà difficile perchè giovedì ho l'esame di elettronica e non voglio prendere meno del massimo.

--edit--
ovviamente spero che, configurazione alla mano, qualcun'altro possa investire il suo tempo per aiutarti

The X
15-11-2003, 20:48
Originariamente inviato da gurutech
ovviamente spero che, configurazione alla mano, qualcun'altro possa investire il suo tempo per aiutarti

Lo spero anche io perchè se potessi risolvere tutto attraverso una "semplice" modifica al Proftpd sarebbe tanto meglio per me...

[Gnomix]
15-11-2003, 23:53
non per dire ma sembra andare un pò offtopic...

tornando al topic.. nn è ke nessuno conosce un prg per gestire la banda in upload e download in maniera indipendente per limitarne la bandwith?

magari discriminando banda verso internet e banda locale

gurutech
16-11-2003, 00:08
Originariamente inviato da [Gnomix]
non per dire ma sembra andare un pò offtopic...

tornando al topic.. nn è ke nessuno conosce un prg per gestire la banda in upload e download in maniera indipendente per limitarne la bandwith?

magari discriminando banda verso internet e banda locale

fammi capire bene:
tua lan ---> linux ---> router ---> internet
giusto?

banda verso internet= da tua lan a internet
banda locale= da tua la su tua lan

secondo questa def., la banda locale non la puoi limitare, perchè in ogni caso i PC non passano dalla macchina linux per comunicare tra loro. Quella verso internet puoi limitarla con squid per il traffico http e quello ftp

[Gnomix]
16-11-2003, 00:13
allora ho 3 pc di cui uno con mandrake 9.1
tutti i pc sono connessi ad un router ke fa ovviamente da GW

io vorrei limitare la banda solo del pc con su linux mandrake9.1

vorrei limitare cioè la banda in upload e download verso internet (quelli con destinazione 0.0.0.0) mentre quelli verso 192.168.0.0/24 vorrei ke la banda non venisse limitata.

The X
16-11-2003, 04:20
Originariamente inviato da [Gnomix]
per limitare la banda in uscita usa shapecfg

la regola di iptables me lo setta shorewall mediante "webmin" ma limita sia in UP e DOWN

Ho installato shorewall ed il modulo d webmin....

Mi spieghi in breve dove 6 andato per limitare la banda in up e down ?

Ho dato un'occhiata alle varie opzioni dentro il modulo d webmin ma nn ho trovato voci relativi alla banda.....

[Gnomix]
16-11-2003, 08:46
shorewall --> default policies --> Add a new default policy

The X
16-11-2003, 13:54
Originariamente inviato da [Gnomix]
shorewall --> default policies --> Add a new default policy

Mi puoi copiare le righe in cui hai inserito la limitazione della banda dentro /etc/shorewall/policy

Non riesco a capire cos'è il rate e cosa il Burnst

[Gnomix]
16-11-2003, 13:59
io non sto usando iptables! sto provando ad usare shapecfg

The X
16-11-2003, 18:46
Originariamente inviato da [Gnomix]
io non sto usando iptables! sto provando ad usare shapecfg

Con shapecfg Puoi limitare la banda SOLO del traffico Ftp ?

[Gnomix]
16-11-2003, 18:58
assolutamente no
a meno ke giochi con qualche regola route ma nn saprei perchè è solo da 2 mesi ke uso linux

The X
16-11-2003, 19:51
Originariamente inviato da [Gnomix]
assolutamente no
a meno ke giochi con qualche regola route ma nn saprei perchè è solo da 2 mesi ke uso linux

capito.... grazie x la risposta....

echelon
18-11-2003, 15:47
prova a cercare "rshaper"


ciao

The X
18-11-2003, 15:54
Originariamente inviato da echelon
prova a cercare "rshaper"


ciao

Mi sai dare qlc info in + su cosa fa e cosa nn fa rsharper ?

tnk

Morpheus79
18-11-2003, 22:00
dalla documentazione di proftpd:

"To achieve a total limit on a per virtual basis a mix of RateReadBPS and MaxClients is needed. ie RateReadBPS x MaxClients = Total Bandwidth allocation. There is no way (at the moment) to specify that virtual server xyz has a maximum total bandwidth of 200K/s that it can use between all connections."

In pratica l'unica cosa che puoi fare è limitare la banda per ogni client e quindi il limite totale sarà:
(Banda di ogni client) * (N° massimo di Client)

Per fare quest'ultima cosa io uso la seguente config e ti assicuro che funziona con proftpd 1.2.8 :D

<Directory /pippo>
....
TransferRate RETR 10.0
....
</Directory>

Questo limita a 10 KB/s l'upload ad OGNI client connesso. Per limitare l'upload totale devi per forza usare il traffic shaper, ma non so aiutarti (ho provato tempo fa ma è un casino farlo a mano :D )

The X
18-11-2003, 22:18
Originariamente inviato da Morpheus79
dalla documentazione di proftpd:

"To achieve a total limit on a per virtual basis a mix of RateReadBPS and MaxClients is needed. ie RateReadBPS x MaxClients = Total Bandwidth allocation. There is no way (at the moment) to specify that virtual server xyz has a maximum total bandwidth of 200K/s that it can use between all connections."

In pratica l'unica cosa che puoi fare è limitare la banda per ogni client e quindi il limite totale sarà:
(Banda di ogni client) * (N° massimo di Client)

Per fare quest'ultima cosa io uso la seguente config e ti assicuro che funziona con proftpd 1.2.8 :D

<Directory /pippo>
....
TransferRate RETR 10.0
....
</Directory>

Questo limita a 10 KB/s l'upload ad OGNI client connesso. Per limitare l'upload totale devi per forza usare il traffic shaper, ma non so aiutarti (ho provato tempo fa ma è un casino farlo a mano :D )

Questo funziona anche se io metto questa stringa in

<Directory />
....
TransferRate RETR 10.0
....
</Directory>

Inoltre..... 1 cosa ke nn ho mai capito è questa :

Cosa considera il Proftpd come cartella root "/" ?

Cioè, la voce ....
<Directory />
....
....
</Directory>

Si riferisce alla root d sistema (la vera e propria / ) OPPURE alla root/home di ogni utente ?

Cioè se io utente thex ho come home la cartella /home/thex se metto le direttive come sopra LIMITO anke i miei DL oppure no ?

Nel secondo caso devo creare nuove direttive per ogni utente specificando per ognuno :

<Directory /home/the_x>
....
....
</Directory>

<Directory /home/utente_2>
....
....
</Directory>
eccecc

Morpheus79
18-11-2003, 23:51
si con <Directory /> limiti tutto, tranne ovviamente se da qualche parte metti una regola diversa per una directory in particolare.
Se vuoi che il tuo utente non abbia limiti basta utilizzare

<Directory />
...
TransferRate RETR 10.0 user !thex
...
</Directory>

cioè limiti il tranfer rate per tutti tranne (il ! ) che per l'utente thex (la sintassi è spiegata QUI (http://proftpd.linux.co.uk/localsite/Userguide/linked/config_ref_TransferRate.html))
Questo non l'ho mai provato però :D

The X
18-11-2003, 23:58
Originariamente inviato da Morpheus79
si con <Directory /> limiti tutto, tranne ovviamente se da qualche parte metti una regola diversa per una directory in particolare.
Se vuoi che il tuo utente non abbia limiti basta utilizzare

<Directory />
...
TransferRate RETR 10.0 user !thex
...
</Directory>

cioè limiti il tranfer rate per tutti tranne (il ! ) che per l'utente thex (la sintassi è spiegata QUI (http://proftpd.linux.co.uk/localsite/Userguide/linked/config_ref_TransferRate.html))
Questo non l'ho mai provato però :D

Ok, allora mi puoi spiegare come mai se io imposto :

<Directory />
...
TransferRate RETR 4.0 group ews
...
</Directory>

Tutti gli utenti del gruppo ews invece che scaricare da me a 4 k/s scaricano a quanto cazzo vogliono loro ? :cry:

Nota Aggiuntiva :
Mi sono appena accorto che la funzione TransferRate usa il modulo mod_xfer...
Non è che bisogna installare, configurare e/o lanciare questo modulo per far andare la limitazione della banda ? Se si come faccio a sapere se è attivo e in caso contrario come faccio ad installarlo/lanciarlo ?

The X
19-11-2003, 16:17
UP, aiutatemi pls....

Morpheus79
19-11-2003, 23:45
ho controllato meglio, da me ho messo:

<Directory /*>

ovvero aggiungi l'asterisco, è anche più logico così :rolleyes:
ho provato adesso e funziona, per vedere se hai il mod_xfer compilato:

proftpd -l

The X
19-11-2003, 23:59
Originariamente inviato da Morpheus79
ho controllato meglio, da me ho messo:

<Directory /*>

ovvero aggiungi l'asterisco, è anche più logico così :rolleyes:
ho provato adesso e funziona, per vedere se hai il mod_xfer compilato:

proftpd -l

Allora... il modulo mod_xfer.c è caricato....

Ho impostato la directory come te ovvero con /* MA nonostante abbia dato la limitazione RETR 1.5 la gente scarica a 4.5

Come mai ?

Morpheus79
20-11-2003, 00:30
sicuramente perchè la limitazione di banda non e' molto precisa, e credo dipenda dal metodo utilizzato....infatti ho provato a mettere limite come te a 1.5 KB/s, risultato: invia 8-9 KB/s ogni 5 secondi circa.
Vedila così (più o meno)....per limitare a 1.5 KB/s posso farlo in 2 modi:
1- ti invio 1.5 KB ogni secondo
2- ti invio 15KB ogni 10 secondi, alla fine IN MEDIA ti ho inviato 1.5 KB/s
Evidentemente proftpd utilizza questo secondo metodo, se come limite ho 200KB/s funziona tutto bene ma a rate bassi ci sono problemi, quindi....cambia programma! Oppure usa un benedetto traffic shaper e poi fai una guida per tutti :D

The X
20-11-2003, 02:42
Originariamente inviato da Morpheus79
Evidentemente proftpd utilizza questo secondo metodo, se come limite ho 200KB/s funziona tutto bene ma a rate bassi ci sono problemi, quindi....cambia programma! Oppure usa un benedetto traffic shaper e poi fai una guida per tutti :D

Tu mi sai indicare un Server Ftp migliore di Proftp sotto questo punto di vista ?

Io installerei anke un Traffic Shaper MA mi è sempre parso di capire ke quasi tutti si legano, e limitano, un'interfaccia e NON un determinato protocollo o porta...

P.S. Ultima cosetta, a sto punto.....

L'opzione TransferRate limita la banda per ogni connessione. Proftp ha come opzioni MaxClient e MaxClientperHost MA nn ho ancora perfettamente chiaro queste cose... Correggi se sbaglio :

MaxClient è il numero di utenti diversi che si possono collegare al server
MaxClientperHost è il numero massimo di connessioni accettate da ogni IP

Quindi se io imposto le opzioni d sopra entrambe a 2 posso avere al massimo 4 connessione aperte sul mio server quindi la banda in upload che utilizzerei io per il loro download è il TransferRate * 4 giusto ?

The X
20-11-2003, 12:25
...

The X
20-11-2003, 17:13
.... ....

Morpheus79
20-11-2003, 17:37
Il traffic shaper puoi legarlo a qualunque cosa, ad esempio al numero di porta sorgente/destinazione, ip, protocollo, proprio tutto quello che vuoi.
In teoria ti basterebbe configurarlo in modo che tutto quello che viene inviato dalle porte 20 e 21 (il tuo server ftp) sia limitato a tot KB/s, solo che non è semplicissimo e non so aiutarti.
Tanto per farti un'idea cerca wondershaper (che è un semplice script) e guarda cosa fa (molto di più di quello che ti serve). Magari riesci ad adattarlo alle tue necessità.
Per i MaxClient è tutto esatto. Qualche altro server ftp lo trovi sicuramente con google, non so cosa consigliarti perchè in pratica non lo uso mai.

The X
20-11-2003, 19:02
Originariamente inviato da Morpheus79
Il traffic shaper puoi legarlo a qualunque cosa, ad esempio al numero di porta sorgente/destinazione, ip, protocollo, proprio tutto quello che vuoi.
In teoria ti basterebbe configurarlo in modo che tutto quello che viene inviato dalle porte 20 e 21 (il tuo server ftp) sia limitato a tot KB/s, solo che non è semplicissimo e non so aiutarti.
Tanto per farti un'idea cerca wondershaper (che è un semplice script) e guarda cosa fa (molto di più di quello che ti serve). Magari riesci ad adattarlo alle tue necessità.
Per i MaxClient è tutto esatto. Qualche altro server ftp lo trovi sicuramente con google, non so cosa consigliarti perchè in pratica non lo uso mai.

Ho capito.... adesso mi butterò nell'impresa di configurare un Traffic Shaper..... speriamo bene.... ^_^

Morpheus79
22-11-2003, 09:06
prima di incasinarti prova con QUESTA (http://buffer.antifork.org/misc/rshaper-290703.tar.gz) versione modificata di rshaper:
A patched version of rshaper written by Alessandro Rubini and Rodolfo Giometti. This version introduces a new host management architecture which allows to set bandwidth limits even on ports or set of ports. This feature was introduced by Rodolfo Giometti in the last CVS version but it is not too much scalable when too much entries are set. I introduced statistics support too.

Nel readme in realtà non ho trovato come specificare le porte.....vedi tu :D

The X
22-11-2003, 10:23
Originariamente inviato da Morpheus79
prima di incasinarti prova con QUESTA (http://buffer.antifork.org/misc/rshaper-290703.tar.gz) versione modificata di rshaper:


Nel readme in realtà non ho trovato come specificare le porte.....vedi tu :D

Grazie lo proverò... nella speranza che mi si compili ^_^

fbcyborg
27-11-2009, 08:57
Qualcuno mi può spiegare come funziona questo shapecfg?

Lo sto provando, ed ho letto il manuale qui (http://www.digipedia.pl/man/doc/view/shapecfg.8.html), ma quando vado a fare
shapecfg attach shaper0 eth0 mi dice shaper: no such device.

Non trovo da nessuna parte dove ci sia scritto esattamente come utilizzare questo programma. Come tirare su un'altra interfaccia, ecc..

EDIT: Alla fine ho trovato un plugin per Firefox che fa quello che mi serve!!! Si chiama Firefox Throttle (http://www.uselessapplications.com/en/Application/FirefoxThrottle.aspx).