|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Feb 2003
Città: Padova
Messaggi: 5905
|
Iptables e Traffic Control
Ciao sto cercando di mettere a punto uno script che faccia uso di iptables e traffic control per gestire la banda in uscita della mia connessione
ecco lo script Codice:
#!/bin/sh # # banda.sh # paths TC="/sbin/tc" IPTABLES="/sbin/iptables" case "$1" in start) # specifica la lunghezza della coda per dare una latenza di circa 2 secondi ai pacchetti a bassa priorità ip link set dev eth0 qlen 30 # diminuisce il MTU ip link set dev eth0 mtu 1492 # specifica la lunghezza della coda per eth0 ifconfig eth0 txqueuelen 16 # specifica l' HTB qdisc per la gestione della coda $TC qdisc add dev eth0 root handle 1: htb default 10 # stabilisce la classe principale $TC class add dev eth0 parent 1: classid 1:1 htb rate 450kbit # stabilisce le sottoclassi e per ciascuna la banda e la priorità $TC class add dev eth0 parent 1:1 classid 1:10 htb rate 450kbit prio 1 $TC class add dev eth0 parent 1:1 classid 1:20 htb rate 450kbit prio 2 $TC class add dev eth0 parent 1:1 classid 1:30 htb rate 80kbit prio 3 $TC class add dev eth0 parent 1:1 classid 1:40 htb rate 50kbit prio 4 $TC class add dev eth0 parent 1:1 classid 1:50 htb rate 400kbit prio 5 # aggiunge l'algoritmo qdisc alle classi create per suddividere la banda equamente $TC qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10 $TC qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 10 $TC qdisc add dev eth0 parent 1:30 handle 30: sfq perturb 10 $TC qdisc add dev eth0 parent 1:40 handle 40: sfq perturb 10 $TC qdisc add dev eth0 parent 1:50 handle 50: sfq perturb 10 # limita la banda alle porte del proxy $TC filter add dev eth0 parent 1: protocol ip u32 match ip sport 13452 0xffff flowid 1:30 $TC filter add dev eth0 parent 1: protocol ip u32 match ip sport 13453 0xffff flowid 1:30 # limita la banda ai client del proxy #$TC filter add dev eth0 parent 1: protocol ip u32 match ip dst **.**.**.** flowid 1:30 #$TC filter add dev eth0 parent 1: protocol ip u32 match ip dst **.**.**.** flowid 1:30 #$TC filter add dev eth0 parent 1: protocol ip u32 match ip dst **.**.**.** flowid 1:30 $TC filter add dev eth0 parent 1: protocol ip u32 match ip dst **.**.**.** flowid 1:40 $TC filter add dev eth0 parent 1: protocol ip u32 match ip dst **.**.**.** flowid 1:40 $TC filter add dev eth0 parent 1: protocol ip u32 match ip dst **.**.**.** flowid 1:40 #$TC filter add dev eth0 parent 1: protocol ip u32 match ip dst **.**.**.** flowid 1:30 #$TC filter add dev eth0 parent 1: protocol ip u32 match ip dst **.**.**.** flowid 1:30 #$TC filter add dev eth0 parent 1: protocol ip u32 match ip dst **.**.**.** flowid 1:30 # limita la banda ai processi usando i marks di iptables $TC filter add dev eth0 parent 1: prio 0 protocol ip handle 10 fw flowid 1:10 $TC filter add dev eth0 parent 1: prio 0 protocol ip handle 20 fw flowid 1:20 $TC filter add dev eth0 parent 1: prio 0 protocol ip handle 30 fw flowid 1:30 $TC filter add dev eth0 parent 1: prio 0 protocol ip handle 40 fw flowid 1:40 $TC filter add dev eth0 parent 1: prio 0 protocol ip handle 50 fw flowid 1:50 # aggiunge le entrate fwmark per classificare i differenti tipi di uscite $IPTABLES -t mangle -A OUTPUT -p tcp --sport 0:1024 -j MARK --set-mark 10 # default per traffico attraverso porte < 1024 $IPTABLES -t mangle -A OUTPUT -p tcp --dport 0:1024 -j MARK --set-mark 10 # "" $IPTABLES -t mangle -A OUTPUT -p tcp --dport 20 -j MARK --set-mark 20 # ftp $IPTABLES -t mangle -A OUTPUT -p icmp -j MARK --set-mark 10 # ICMP (ping) $IPTABLES -t mangle -A OUTPUT -p udp -j MARK --set-mark 10 # DNS & UDP $IPTABLES -t mangle -A OUTPUT -p tcp --dport 22 -j MARK --set-mark 20 # secure shell $IPTABLES -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 20 # "" $IPTABLES -t mangle -A OUTPUT -p tcp --dport 13452 -j MARK --set-mark 30 # proxy http $IPTABLES -t mangle -A OUTPUT -p tcp --sport 13452 -j MARK --set-mark 30 #"" $IPTABLES -t mangle -A OUTPUT -p tcp --sport 80 -j MARK --set-mark 50 # web server $IPTABLES -t mangle -A OUTPUT -p tcp -m length --length :64 -j MARK --set-mark 10 # small packets (ACKs) $IPTABLES -t mangle -A OUTPUT -m mark --mark 0 -j MARK --set-mark 20 # redundant- pacchetti non specificati $IPTABLES -t mangle -A OUTPUT -m owner --uid-owner 33 -j MARK --set-mark 50 # torrentflux $IPTABLES -t mangle -A OUTPUT -p tcp --sport 139 -j MARK --set-mark 20 # samba $IPTABLES -t mangle -A OUTPUT -p tcp --sport 138 -j MARK --set-mark 20 # "" $IPTABLES -t mangle -A OUTPUT -p tcp --sport 137 -j MARK --set-mark 20 # "" ;; stop) # elimina le classi $TC qdisc del dev eth0 root ;; esac exit 0 In pratica ho fatto dei test prima commentando la parte incriminata e le regole sovrastanti funzionanvano, viceversa decommentandola non funzionavano. Commentando le regole precedenti e decommentando la parte incriminata lo stesso non funziona Dov'è che sbaglio? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Feb 2003
Città: Padova
Messaggi: 5905
|
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:58.