Implementando prioridade nos serviços com TOS no Iptables
O conceito de TOS (Type Of Service) permite aplicarmos regras no Iptables para que nosso firewall possa realizar um controle na prioridade dos pacotes que saem e chegam na nossa rede. Dessa forma, podemos garantir que aplicações "úteis" não fiquem prejudicadas pelo tráfego gerado por outros serviços.
Todos nós (ou a maioria) sabemos a fantástica ferramenta que é o Iptables. O Linux possui suporte a um conjunto de normas e regras para filtragem de pacotes incorporadas ao Kernel desde a versão 1.X.
Conhecido por sua performance, simplicidade e pouca exigência de hardware, é considerada a melhor ferramenta da categoria de firewall via software, pode ser usado como alternativa a ferramentas caras como Check Point e Sonicwall, que são soluções baseadas em hardware.
Um firewall pode atuar como filtro de pacotes graças à estrutura atual de comunicação em rede, onde a informação é dividida em diferentes pacotes de diversos tamanhos para poder ser enviada pelo meio físico, que pode ser um cabo de rede, por exemplo. Esses pacotes possuem um cabeçalho que podem conter muita informação como, host de origem, host de destino, porta de origem e porta de destino, tamanho do pacote, tempo de vida e muito mais. Esse cabeçalho é definido pelo protocolo, que nada mais é que um conjunto de regras estabelecidas para viabilizar a comunicação.
O protocolo IP faz parte da pilha de protocolos TCP/IP e possui um modelo de cabeçalho extremamente estruturado, com diversos campos que podem ser usados para armazenar informações, são 12 campos e mais o que efetivamente irá transportar os dados.
Um desses campos é o Type Of Service (Tipo de Serviço), que é justamente o que vai proporcionar o controle de prioridade nos pacotes.
#1Comentário enviado por fabio em 11/08/2006 - 12:32h
Excelente! Acabei de implementar aqui, finalmente poderei navegar e baixar e-mails normalmente sem precisar configurar limite de velocidade de download no meu aMule :P
Um abraço
#2Comentário enviado por morvan em 11/08/2006 - 14:13h
Excelente, mundoguero. Muito bem explicado. Parabéns pela clareza e pelo detalhamento.
#3Comentário enviado por arauto em 13/08/2006 - 11:54h
também gostei do artigo. Gostaria de fazer isso pro meu asterisk, mas ainda preciso pesquisar mais um pouquinho.
#4Comentário enviado por gelemeurer em 13/08/2006 - 14:56h
legal, foi pros favoritos...
valeu!
#5Comentário enviado por Guesser em 13/08/2006 - 19:59h
Olá,
Exelente artigo, tenho algumas perguntas relacionadas ao seu tópico.
Em qual distribuição será mais facíl de fazer esta configuração?
Esta implementação que você postou se aplica para Internet ou para rede local? Ou os dois?
Desculpe a iguinorância é que sou novato no linux
Valeu obrigado
#6Comentário enviado por solucoesnandor em 14/08/2006 - 00:16h
Muito bom, em poucas palavras você descreveu o que eu procurava a tempos na internet. :-)
Valew !!
#7Comentário enviado por fabiolima em 10/11/2006 - 17:09h
Muito bom esse artigo do mundoguero, já estou implementando aqui, parabéns!!!
[]'s
#8Comentário enviado por eduardofraga em 10/03/2007 - 11:42h
Parabéns pelo artigo. Vou implementar no meu servidor.
#9Comentário enviado por lanaf em 07/08/2008 - 12:51h
Blz de artigo, bem explicado.
Uma duvida que tive, se eu especificar o Ip e a porta na minha regra do iptables priorizando o trafego desta regra funcionar normalmente ou não.
#10Comentário enviado por edinhow em 28/10/2008 - 17:13h
esse é realmente um ótimo artigo, retirado de um ótimo livro. que recomendo a todos.
Valeu.
Abraço.
#11Comentário enviado por wasleyalmeida em 10/02/2009 - 10:48h
Otimo Artigo, vai me ajudar e muito.
Agora uma pergunta (talvez ate [*****]) após a implementação tem como testar se a regra TOS esta funcionando corretamente, ou seja se esta tendo prioridade no trafego a ela destina.
Agradeço desde já
Abraços
#12Comentário enviado por andriopj em 01/03/2009 - 19:19h
exemplo de QoS:
#Esta configuração esta priorizando o tráfego nas portas 80, 53, 3128 e 443, de entrada e saida da rede.
#Caso queira priorizar outros pacotes, mude as portas e set para 16 ou 0x10, que é a mesma coisa.
#saida
iptables -t mangle -A OUTPUT -o eth1 -p tcp --dport 80 -j TOS --set-tos 16
iptables -t mangle -A OUTPUT -o eth1 -p tcp --dport 443 -j TOS --set-tos 16
iptables -t mangle -A OUTPUT -o eth1 -p udp --dport 53 -j TOS --set-tos 16
iptables -t mangle -A OUTPUT -o eth1 -p tcp --dport 3128 -j TOS --set-tos 16
iptables -t mangle -A OUTPUT -o eth1 -p udp --dport 3128 -j TOS --set-tos 16
#entrada
iptables -t mangle -A PREROUTING -i eth1 -p tcp --sport 80 -j TOS --set-tos 0x10
iptables -t mangle -A PREROUTING -i eth1 -p udp --sport 53 -j TOS --set-tos 0x10
iptables -t mangle -A PREROUTING -i eth1 -p tcp --sport 443 -j TOS --set-tos 0x10
iptables -t mangle -A PREROUTING -i eth1 -p tcp --sport 3128 -j TOS --set-tos 0x10
iptables -t mangle -A PREROUTING -i eth1 -p udp --sport 3128 -j TOS --set-tos 0x10
#13Comentário enviado por eduardofraga em 02/03/2009 - 19:56h
Uma dica é sempre inserir as regras da tabela "mangle" no inicio do script, pois estas são lidas primeiro pelo iptables.
#14Comentário enviado por danistation em 21/12/2010 - 15:20h
Parabéns pelo post. Fui sucinto na explanação além de utilizar vocabulário simples e boa analogia.
Gostaria de fazer apenas um apelo: Poderia nos explicar melhor a diferença entra as opções da tabela ToS? Qual a diferença entre:
Espera mínima, processamento máximo, confiança máxima, custo mínimo?? Fisicamente, se eu entregar diversos pacotes com diversos ToS setados, como o router iria trabalhar esse monte de pacotes com prioridades diferentes? Quem seria privilegiado entre o outro? Julgo isso importante pois dependendo do tipo de dados que queremos priorizar, alguma regra não poderia não ser tão recomendada quanto alguma outra... Pode nos explicar melhor sobre a diferença entre essas prioridades??? Grande abraço!
#15Comentário enviado por lpossamai em 06/09/2011 - 17:22h
Boa tarde.
Eu quero priorizar o tráfego em algumas portas, tanto na saída como na entrada.
Seria certo por assim?:
echo "Priorizando o trafego. Tabela mangle"
## PRIORIZANDO OS TRAFEGOS ##
iptables -t mangle -A OUTPUT -o $EXT -p tcp --dport 22 -j TOS --set-tos 16 ## Priorizando porta ssh
iptables -t mangle -A PREROUTING -i $EXT -p tcp --sport 22 -j TOS --set-tos 16
iptables -t mangle -A OUTPUT -o $EXT -p tcp --dport 5947 -j TOS --set-tos 16 ## Priorizando porta vnc Anderson
iptables -t mangle -A PREROUTING -i $EXT -p tcp --sport 5947 -j TOS --set-tos 16
iptables -t mangle -A OUTPUT -o $EXT -p tcp --dport 5948 -j TOS --set-tos 16 ## Priorizando porta vnc Lucas
iptables -t mangle -A PREROUTING -i $EXT -p tcp --sport 5948 -j TOS --set-tos 16
iptables -t mangle -A OUTPUT -o $EXT -p tcp --dport 5949 -j TOS --set-tos 16 ## Priorizando porta vnc Ricardo
iptables -t mangle -A PREROUTING -i $EXT -p tcp --sport 5950 -j TOS --set-tos 16
iptables -t mangle -A OUTPUT -o $EXT -p tcp --dport 5950 -j TOS --set-tos 16 ## Priorizando porta vnc Rodrigo
iptables -t mangle -A PREROUTING -i $EXT -p tcp --sport 5950 -j TOS --set-tos 16
iptables -t mangle -A OUTPUT -o $EXT -p tcp --dport 5951 -j TOS --set-tos 16 ## Priorizando porta vnc Fernando
iptables -t mangle -A PREROUTING -i $EXT -p tcp --sport 5951 -j TOS --set-tos 16
iptables -t mangle -A OUTPUT -o $EXT -p tcp --dport 5500 -j TOS --set-tos 16 ## Priorizando porta VNC
iptables -t mangle -A PREROUTING -i $EXT -p tcp --sport 5500 -j TOS --set-tos 16
Fazendo isso, eu deixo as outras portas, como por exemplo 53, não prioritárias, isso?
Obrigado!
Preferências de cookies
Usamos cookies essenciais para manter o site funcionando. Cookies de estatísticas e anúncios só serão carregados se você permitir.
Um abraço