- Home
- Categorie
- Gli Off Topic
- Tutti i Software
- Regole iptables per limitare banda a utorrent
-
Regole iptables per limitare banda a utorrent
Ciao a tutti gli utenti mi trovo alle prese con iptables sto cercando di creare uno script che mi permetta di limitare la banda per utorrent ad un client specifico della mia rete casalinga, lo script sarebbe da inserire nella shell di un lynksys flashato con dd-wrt
Girovagando per la rete ho trovato alcune informazioni ed ho scritto questo piccolo script solo che per ora ho bloccato la porta in questione perchè non mi ricordo più come si specificava una percentuale di banda con iptables qualche indizio?############################ # Reset delle impostazioni # ############################ $IPTABLES -F $IPTABLES -F -t nat $IPTABLES -F -t mangle $IPTABLES -X $IPTABLES -X -t nat $IPTABLES -X -t mangle ################################ # Impostazione Policy standard # ################################ $IPTABLES -P INPUT DROP $IPTABLES -P FORWARD DROP $IPTABLES -P OUTPUT ACCEPT ################################# # Abilitazione traffico interno # ################################# $IPTABLES -A INPUT -i $IFLO -j ACCEPT $IPTABLES -A OUTPUT -o $IFLO -j ACCEPT ############################################################################# # Abilitazione traffico in entrata solo se relativo a pacchetti in risposta # ############################################################################# $IPTABLES -A INPUT -p tcp -i $IFEXT1 -m state -s 0/0 --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -p icmp -i $IFEXT1 -m state -s 0/0 --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -p udp -i $IFEXT1 -m state -s 0/0 --state ESTABLISHED,RELATED -j ACCEPT #$IPTABLES -A INPUT -p tcp -i $IFEXT2 -m state -s 0/0 --state ESTABLISHED,RELATED -j ACCEPT #$IPTABLES -A INPUT -p icmp -i $IFEXT2 -m state -s 0/0 --state ESTABLISHED,RELATED -j ACCEPT #$IPTABLES -A INPUT -p udp -i $IFEXT2 -m state -s 0/0 --state ESTABLISHED,RELATED -j ACCEPT ######################## # Apertura porte aMule # ######################## $IPTABLES -A INPUT -p tcp --dport 4662 -j ACCEPT $IPTABLES -A INPUT -p udp --dport 4665 -j ACCEPT $IPTABLES -A INPUT -p udp --dport 4672 -j ACCEPT ####################### # Apertura porte Msn # ####################### $IPTABLES -A INPUT -p tcp --dport 1683 -j ACCEPT #$IPTABLES -A INPUT -p tcp --dport 6981 -j ACCEPT ################################### #Blocco porta al client specifico # ################################## $IPTABLES -A INPUT -p udp -m udp -s 192.168.1.3/24 --dport 63889 -j REJECT ############################## # Contro attacchi hacker # ############################## #Rifiuto di rispondere ai ping inviati all'indirizzo broadcast della rete: echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route pacchetti ICMP di route redirection echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses echo 1 > /proc/sys/net/ipv4/tcp_syncookies echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter #Protezione contro attacchi spoofing echo 1 > /proc/sys/net/ipv4/conf/all/log_martians #Scarto un flood di pacchetti ICMP fuori taglia (dimensione massima 93 bytes) $IPTABLES -A INPUT -p ICMP --icmp-type 8 -m length --length 93: -j DROP echo "ok" ;; stop)
-
Ciao,
una volta avevo fatto una cosa del genere, ma è passato molto tempo e non ricordo quasi nulla.
Per fortuna avevo preparato uno script che usavo per limitare la banda con iptables, te lo allego, sperando che possa esserti utile.In bocca al lupo!
#!/bin/sh # # Script "educativo" sulla limitazione di banda di un host linux # ### # interfaccia di rete DEVICE=eth0 # IP origine del traffico che si desidera limitare MIOIP=192.168.0.0/24 # Unita di misura UNIT=Mbit # Larghezza di banda supportata della scheda di rete $DEVICE BANDATOT=`echo 10$UNIT` # Porzione di $BANDATOT che si desidera utilizzare BANDAUSATA=`echo 1.28$UNIT` BANDAUSATABITSEC=1280000 ### ### DA QUA IN POI LO SCRIPT NON VA MODIFICATO ### # calcolo del "peso" (deve essere un decimo della banda) WEIGHT=`echo $BANDATOT | sed -e "s/$UNIT/\/10/" | bc` WEIGHT=`echo $WEIGHT$UNIT` ### ### echo echo echo ....................................Interfaccia di rete = $DEVICE echo ...... IP origine del traffico che si desidera limitare = $MIOIP echo Larghezza di banda supportata della scheda di rete $DEVICE = $BANDATOT echo ........ Porzione dei $BANDATOT che si desidera utilizzare = $BANDAUSATA echo .................... Un decimo di $BANDATOT l\'ho calcolato = $WEIGHT echo echo -n Tutto ok [s/n]? read ZZ if [ $ZZ != 's' ]; then echo echo Ciao echo exit fi echo #### Cancella precedenti configurazioni su $DEVICE echo Cancella precedenti configurazioni su $DEVICE echo tc qdisc del dev $DEVICE root tc qdisc del dev $DEVICE root sleep 1 echo #### inizializza una nuova coda su $DEVICE a cui assegna l'handle 20:0 #### e la cui banda massima vale $BANDATOT echo inizializza una nuova coda su $DEVICE a cui assegna l\'handle 20:0 echo e la cui banda massima vale $BANDATOT echo tc qdisc add dev $DEVICE root \ handle 20: cbq bandwidth $BANDATOT avpkt 1000 tc qdisc add dev $DEVICE root \ handle 20: cbq bandwidth $BANDATOT avpkt 1000 sleep 1 echo #### configurazione di una classe nella coda 20:0 su $DEVICE #### a cui si assegna un classid 20:1 echo configurazione di una classe nella coda 20:0 su $DEVICE echo a cui si assegna un classid 20:1 echo tc class add dev $DEVICE parent 20:0 classid 20:1 \ cbq bandwidth $BANDATOT rate $BANDATOT avpkt 1000 tc class add dev $DEVICE parent 20:0 classid 20:1 \ cbq bandwidth $BANDATOT rate $BANDATOT avpkt 1000 sleep 1 echo #### all'interno della classe 20:1 definisco la sottoclasse di handle 20:200 #### a questa sottoclasse impongo la limitazione di banda a $BANDAUSATA echo all\'interno della classe 20:1 definisco la sottoclasse di handle 20:200 echo a questa sottoclasse impongo la limitazione di banda a $BANDAUSATA echo tc class add dev $DEVICE parent 20:1 classid 20:200 \ cbq bandwidth $BANDATOT rate $BANDAUSATA avpkt 1000 bounded tc class add dev $DEVICE parent 20:1 classid 20:200 \ cbq bandwidth $BANDATOT rate $BANDAUSATA avpkt 1000 bounded sleep 1 echo #### Ora la coda <E8> stata definita, si deve comunicare al kernel la sua #### esistenza e informarlo su come deve gestirla echo Ora la coda <E8> stata definita, si deve comunicare al kernel la sua echo esistenza e informarlo su come deve gestirla echo tc qdisc add dev $DEVICE parent 20:200 \ sfq quantum 1514b perturb 15 tc qdisc add dev $DEVICE parent 20:200 \ sfq quantum 1514b perturb 15 sleep 1 echo #### Ora informiamo il kernel su quali pacchetti devono transitare #### attraverso la coda echo Ora informiamo il kernel su quali pacchetti devono transitare echo attraverso la coda echo tc filter add dev $DEVICE parent 20:0 \ protocol ip prio 25 u32 match ip dst $MIOIP flowid 20:200 tc filter add dev $DEVICE parent 20:0 \ protocol ip prio 25 u32 match ip dst $MIOIP flowid 20:200 ### tc filter add dev $DEVICE parent 20:0 # ATTENTO AL BACKSLASH :-) # \ ### protocol ip prio 25 u32 match ip src $MIOIP flowid 20:200 rshaperctl $MIOIP $BANDAUSATABITSEC
-
Grazie ma scusa una cosa con questo script limito la banda a tutti gli utenti che usano la scheda di rete interessata?
Perchè io dovrei bloccare la banda ad un client conesso in wi-fi e ho paura che se imposto la scheda wi-fi blocchi la banda a tutti i client
-
@gabriele1986 said:
[***]
Ciao Gabriele,
si, come hai già capito, il traffico viene limitato se proviene da un determinato IP.
Se riesci a confinare su un IP chi proviene dalla rete wi-fi allora ti può essere utile senza grandi modifiche.
-
Potresti fare qualcosa con Squid e iptables+layer7 ma così a naso, ma non ti posso aiutare di più