Pular para o conteúdo

QOS com Iptables

Este script tem a funcao de limitar a banda do usuario em 1/4 da banda
especificada na variavel RATEUP. Caso a banda total nao esteja sendo utilizado,
o usuario que estiver utilizando o sistema, pode utilizar a banda total
Júlio César Mauro jmaurobug
Hits: 25.025 Categoria: Shell Script Subcategoria: Avançado
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Este script tem a funcao de limitar a banda do usuario em 1/4 da banda
especificada na variavel RATEUP. Caso a banda total nao esteja sendo utilizado,
o usuario que estiver utilizando o sistema, pode utilizar a banda total
Download qos.sh Enviar nova versão

Esconder código-fonte

#!/bin/sh

#chkconfig: 2345 11 89

# Autor: Julio Cesar Mauro <julio.mauro<at>gmail.com

# Data: 23/10/2004

# Versao: 1.0

# Descricao: Este script tem a funcao de limitar a banda do usuario em 1/4 da banda 

#         especificada na variavel RATEUP. Caso a banda total nao esteja sendo utilizado, 

#        o usuario que estiver utilizando o sistema, pode utilizar a banda total.



. /etc/rc.d/init.d/functions



. /etc/sysconfig/network



[ ${NETWORKING} = "no" ] && exit 0





DEV=eth0

RATEUP=256

RATEDN=700

IPT="/sbin/iptables"

TC="/sbin/tc"

HOSTS="172.16.24.0/24"





case "$1" in

start)



################################################################################################

# Add HTB root qdisc

   $TC  qdisc add dev $DEV root handle 1: htb default 26 2> /dev/null > /dev/null



   $IPT -A FORWARD -t mangle -p udp --sport 1024:49151 -j TOS --set-tos Maximize-Throughput

   $IPT -A FORWARD -t mangle -p udp --dport 1024:49151 -j TOS --set-tos Maximize-Throughput

   $IPT -A FORWARD -t mangle -p tcp --sport 1:65535 -j TOS --set-tos Minimize-Delay

   $IPT -A FORWARD -t mangle -p tcp --dport 1:65535 -j TOS --set-tos Minimize-Delay



# Adiciona root qdisc

   $TC qdisc add dev $DEV root handle 1: htb default 50 2> /dev/null > /dev/null

        $TC class add dev $DEV parent 1: classid 1:1 htb rate ${RATEUP}kbit 2> /dev/null > /dev/null



# Classes # 

   $TC class add dev $DEV parent 1:1 classid 1:20 htb rate $[$RATEUP/4]kbit ceil ${RATEUP}kbit prio 0 2> /dev/null > /dev/null



# Sqf #

   $TC qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10 2> /dev/null > /dev/null



# Filtros #

   $TC filter add dev $DEV parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:20 2> /dev/null > /dev/null

   $TC filter add dev $DEV parent 1:0 protocol ip prio 0 u32 match ip dst $HOSTS classid 1:20 2> /dev/null > /dev/null

 

# Marca pacotes #

   $IPT -A FORWARD -t mangle

   $IPT -A PREROUTING -t mangle -d 172.16.24.0/24 -j MARK --set-mark 1

        $IPT -t nat -I POSTROUTING -s 172.16.24.0/24 -d 0/0 -o $DEV -j MASQUERADE

   $IPT -A FORWARD -t mangle -p tcp --dport 1:65535 -j MARK --set-mark 23

   $IPT -A FORWARD -t mangle -p tcp --sport 1:65535 -j MARK --set-mark 23

   $IPT -A FORWARD -t mangle -p icmp -j MARK --set-mark 20

   $IPT -A FORWARD -t mangle -p udp -j MARK --set-mark 21

   $IPT -A FORWARD -t mangle -m mark --mark 0 -j MARK --set-mark 26



   echo "Adicionado Regras de QoS:" ; 

   ;;



#################################################################################################

stop)

   $TC  qdisc del dev $DEV root 2> /dev/null > /dev/null



   $IPT -D FORWARD -t mangle -p udp --sport 1024:49151 -j TOS --set-tos Maximize-Throughput

   $IPT -D FORWARD -t mangle -p udp --dport 1024:49151 -j TOS --set-tos Maximize-Throughput

   $IPT -D FORWARD -t mangle -p tcp --sport 1:65535 -j TOS --set-tos Minimize-Delay

   $IPT -D FORWARD -t mangle -p tcp --dport 1:65535 -j TOS --set-tos Minimize-Delay

   $IPT -D FORWARD -t mangle

   $IPT -D FORWARD -t mangle -p tcp --dport 1:65535 -j MARK --set-mark 23

   $IPT -D FORWARD -t mangle -p tcp --sport 1:65535 -j MARK --set-mark 23

   $IPT -D FORWARD -t mangle -p icmp -j MARK --set-mark 20

   $IPT -D FORWARD -t mangle -p udp -j MARK --set-mark 21

   $IPT -D FORWARD -t mangle -m mark --mark 0 -j MARK --set-mark 26

   

   echo "Removendo Regras de QoS:" ;

   ;;



   



#################################################################################################

status)



        echo "[qdisc]"

        $TC  -s qdisc show dev $DEV

        echo "[class]"

        $TC  -s class show dev $DEV

        echo "[filter]"

        $TC  -s filter show dev $DEV

        exit

   ;;

*)

   echo "Usage: qos {start|stop|restart|status}"

    exit 1

esac



# EOF #

##################################################################################################

Execução temporizada de programas

PDC Samba + LDAP no Debian Lenny

Intalação do Thunderbird - Debian

Gerenciador Simples de Empresa

Claro 3g Sony Ericsson md300 script conexao - Revisado

#1 Comentário enviado por lucas peregrino em 05/07/2011 - 13:27h
Amigo to vendo seu script aqui voce poderia me da uma ajuda pois queria sensura so alguns ip da maquina para ter o nivel de velocidade menor de download e upload tentei modifica seu poste mais nao deu muito certo nao

Contribuir com comentário

Entre na sua conta para comentar.