Publicada por TCampmany em 28/05/2007 - 04:14h:
* TCampmany usa Debian

Olá,

Vasculhando a internet, em especial o site do VOL, consegui montar o seguinte script para controle de banda (abaixo)

No que dis respeito a controle de banda ele esta excelente, funcionando conforme o esperado.

O problema se encontra no fato de, ao ativá-lo, alguns sites não abrem (tais como o www.uol.com.br e www.netvibes.com) além do MSN não conseguir logar, nem manter-se logado.

Desde já, obrigado a todos.

### SCRIPT ###

#!/bin/bash
#modprobe sch_htb
#modprobe sch_sfq
#modprobe cls_u32
#modprobe iptable_mangle

echo "Controle de trafico v0.1"

#******************************************************************************
echo "Limpando configuracoes anteriores"
echo "De compartilhamento..."
iptables -t nat F
echo "De upload..."
iptables -t mangle -F #regras de marcacao de pacote (usado em upload)
tc qdisc del dev ppp0 root #regras de controle de upload
echo "De download..."
tc qdisc del dev eth0 root #regras de controle de download
echo "Feito"

#******************************************************************************
echo "Compartilhando a internet..."
iptables -t nat -A POSTROUTING -s 192.168.69.101/32 -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.69.102/32 -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.69.103/32 -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.69.104/32 -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.69.105/32 -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.69.106/32 -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.69.107/32 -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.69.108/32 -o ppp0 -j MASQUERADE
#ou apenas:
#iptables -t nat -A POSTROUTING -s 192.168.69.0/24 -o ppp0 -j MASQUERADE
#mas assim evitamos que ips fora da rede nao possam navegar!

#******************************************************************************
echo "Definindo regras de UPLOAD"

echo "Definindo escopo padrao"
#Tudo nao classificado, ou seja, que venha de um ip nao ligado (Veja em:
# "Ligando classes filhas aos ips", logo abaixo), vai para a classe 1:10,
#cujo limite, aqui, eh de 10kbit
tc qdisc add dev ppp0 root handle 1: htb default 10

echo "Definindo classe pai (Link de 320KBps)"
#Forcando um limite ligeiramente menor que o do modem, evitando sobrecarga nele.
tc class add dev ppp0 root classid 1:0 htb rate 320kbit burst 32kbit cburst 64kbit
#DEFAULT
tc class add dev ppp0 parent 1:0 classid 1:10 htb rate 10kbit ceil 100kbit burst 4kbit cburst 2kbit

echo "Definindo classes filhas..."
tc class add dev ppp0 parent 1:0 classid 1:11 htb rate 40kbit burst 16kbit cburst 8kbit ceil 320kbit
tc class add dev ppp0 parent 1:0 classid 1:12 htb rate 40kbit burst 16kbit cburst 8kbit ceil 320kbit
tc class add dev ppp0 parent 1:0 classid 1:13 htb rate 40kbit burst 16kbit cburst 8kbit ceil 320kbit
tc class add dev ppp0 parent 1:0 classid 1:14 htb rate 40kbit burst 16kbit cburst 8kbit ceil 320kbit
tc class add dev ppp0 parent 1:0 classid 1:15 htb rate 40kbit burst 16kbit cburst 8kbit ceil 320kbit
tc class add dev ppp0 parent 1:0 classid 1:16 htb rate 40kbit burst 16kbit cburst 8kbit ceil 320kbit
tc class add dev ppp0 parent 1:0 classid 1:17 htb rate 40kbit burst 16kbit cburst 8kbit ceil 320kbit
tc class add dev ppp0 parent 1:0 classid 1:18 htb rate 40kbit burst 16kbit cburst 8kbit ceil 320kbit

echo "Ligando classes filhas aos ips"
#Marca o pacote que chega do <IP> com <MARK>
#iptables -t mangle -A FORWARD -s <IP> -j MARK --set-mark <MARK>
#Associa o pacote marcado com <MARK> a classe <CLASSID> de upload
#tc filter add dev ppp0 parent 1:0 protocol ip handle <MARK> fw classid <CLASSID>
#Isto eh necessario pois so se pode fazer controle do que se envia, e no envio
#quando roteado, nao se associa com o ip interno

iptables -t mangle -A FORWARD -s 192.168.69.101 -j MARK --set-mark 1
tc filter add dev ppp0 parent 1:0 protocol ip handle 1 fw classid 1:11
iptables -t mangle -A FORWARD -s 192.168.69.102 -j MARK --set-mark 2
tc filter add dev ppp0 parent 1:0 protocol ip handle 2 fw classid 1:12
iptables -t mangle -A FORWARD -s 192.168.69.103 -j MARK --set-mark 3
tc filter add dev ppp0 parent 1:0 protocol ip handle 3 fw classid 1:13
iptables -t mangle -A FORWARD -s 192.168.69.104 -j MARK --set-mark 4
tc filter add dev ppp0 parent 1:0 protocol ip handle 4 fw classid 1:14
iptables -t mangle -A FORWARD -s 192.168.69.105 -j MARK --set-mark 5
tc filter add dev ppp0 parent 1:0 protocol ip handle 5 fw classid 1:15
iptables -t mangle -A FORWARD -s 192.168.69.106 -j MARK --set-mark 6
tc filter add dev ppp0 parent 1:0 protocol ip handle 6 fw classid 1:16
iptables -t mangle -A FORWARD -s 192.168.69.107 -j MARK --set-mark 7
tc filter add dev ppp0 parent 1:0 protocol ip handle 7 fw classid 1:17
iptables -t mangle -A FORWARD -s 192.168.69.108 -j MARK --set-mark 8
tc filter add dev ppp0 parent 1:0 protocol ip handle 8 fw classid 1:18

#******************************************************************************
echo "Definindo regras de DOWNLOAD"

echo "Definindo escopo padrao"
#Tudo nao classificado, ou seja, que venha de um ip nao associado, vai para a
#classe 2:10, cujo limite, aqui, eh de 10kbit
tc qdisc add dev eth0 root handle 2: htb default 1

echo "Definindo classe pai (Link de 4608KBps)"
#Foi separado o Uso interno, que eh quando o acesso eh no servidor, por exemplo:
#SSH, Samba, Squid, ou qualquer coisa, assim, se o usuario estiver usando um
#servido do servidor a internet dele nao sera reduzida.
#Nota, rate do Uso interno = limite fisico (100m) - link da internet (~4m) = 95m
tc class add dev eth0 root classid 2:0 htb rate 4608kbit burst 256kbit cburst 128kbit #Link da internet
#DEFAULT
tc class add dev eth0 root classid 2:1 htb rate 95mbit burst 512kbit cburst 256kbit #Uso interno

echo "Definindo classes filhas..."
#Questiono se faz sentido... (quanto a auxilio de controle de download do usuario)
tc class add dev eth0 parent 2:0 classid 2:11 htb rate 460kbit burst 64kbit cburst 32kbit ceil 4608kbit
tc class add dev eth0 parent 2:0 classid 2:12 htb rate 460kbit burst 64kbit cburst 32kbit ceil 4608kbit
tc class add dev eth0 parent 2:0 classid 2:13 htb rate 460kbit burst 64kbit cburst 32kbit ceil 4608kbit
tc class add dev eth0 parent 2:0 classid 2:14 htb rate 460kbit burst 64kbit cburst 32kbit ceil 4608kbit
tc class add dev eth0 parent 2:0 classid 2:15 htb rate 460kbit burst 64kbit cburst 32kbit ceil 4608kbit
tc class add dev eth0 parent 2:0 classid 2:16 htb rate 460kbit burst 64kbit cburst 32kbit ceil 4608kbit
tc class add dev eth0 parent 2:0 classid 2:17 htb rate 460kbit burst 64kbit cburst 32kbit ceil 4608kbit
tc class add dev eth0 parent 2:0 classid 2:18 htb rate 460kbit burst 64kbit cburst 32kbit ceil 4608kbit

echo "Ligando classes filhas aos ips"
#Cada requisicao vai para a classe referente ao seu ip de destino
tc filter add dev eth0 parent 2:0 protocol ip u32 match ip dst 192.168.69.101/32 flowid 2:11
tc filter add dev eth0 parent 2:0 protocol ip u32 match ip dst 192.168.69.102/32 flowid 2:12
tc filter add dev eth0 parent 2:0 protocol ip u32 match ip dst 192.168.69.103/32 flowid 2:13
tc filter add dev eth0 parent 2:0 protocol ip u32 match ip dst 192.168.69.104/32 flowid 2:14
tc filter add dev eth0 parent 2:0 protocol ip u32 match ip dst 192.168.69.105/32 flowid 2:15
tc filter add dev eth0 parent 2:0 protocol ip u32 match ip dst 192.168.69.106/32 flowid 2:16
tc filter add dev eth0 parent 2:0 protocol ip u32 match ip dst 192.168.69.107/32 flowid 2:17
tc filter add dev eth0 parent 2:0 protocol ip u32 match ip dst 192.168.69.108/32 flowid 2:18
#Verifica se o que esta mandando para o usuario nao eh proveniente de servico interno
#tc filter add dev eth0 parent 2:0 protocol ip u32 match ip src 192.168.69.69/32 flowid 2:1

  
 
Resposta de thiago.silva em 28/05/2007 - 07:35h:
* thiago.silva usa Ubuntu
* thiago.silva tem conceito: 9.0
 


Olá, tente isso:
iptables -A FORWARD -d IP_DO_MSN -j ACCEPT
iptables -A FORWARD -p TCP --dport PORTA_MSN -j ACCEPT.
Eu também acredito que você tenha que adicionar as linhas para sites liberados e bloqueados, senão ele vai se perder.
Vou te dar uma idéia: Por que não usas a ferramenta squid? Ela é uma ferramente que roda em cima do iptables, más tem muito mais recursos.
Espero ter ajudado.

 
Resposta de m4tri_x em 28/05/2007 - 13:41h:
* m4tri_x usa Ubuntu
* m4tri_x tem conceito: 8.6
 


acho que o problema seu deve ser com a 443
no inicio desse script depois de (echo "Compartilhando a internet...")
adiciona: iptables -A FORWARD -p TCP -s 0/0 --dport 443 -j ACCEPT


  


ATENÇÃO: Antes de contribuir com uma resposta, leia o artigo Qualidade de respostas e certifique-se de que esteja realmente contribuindo com a comunidade. Muitas vezes o ímpeto de contribuir nos leva a atrapalhar ao invés de ajudar.

Contribuir com resposta



CAPTCHA
[ Recarregar imagem ]

Digite o código acima:

  
* Nota: só é possível enviar respostas usuário que possui conta e esteja logado com ela, caso contrário sua mensagem será perdida.