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.
O Iptables é um gerenciador das tabelas do Netfilter e é um firewall de quarta geração para Linux. Possui em sua estrutura 3 tabelas padrões:
Filter
NAT
Mangle
cada uma com suas regras específicas para uma determinada função.
A tabela Filter contém regras de fluxo de dados aplicadas à função de filtro de pacotes;
A tabela NAT regras direcionadas a um firewall NAT e ao encaminhamento e roteamento de pacotes;
A tabela Mangle tem funções mais complexas no tratamento de pacotes, como o TOS, por exemplo.
Todas essas tabelas trabalham com situações de entrada e saída de dados para a realização de seus objetivos.
Este artigo pressupõe que você tenha conhecimento de Iptables e será abordada apenas a tabela Mangle, que proporcionará o controle por Tipo de Serviço (TOS). Se você quer saber mais a respeito do Iptables, sugiro primeiro ler outros artigos sobre o seu funcionamento e comandos básicos na Internet ou aqui no site.
Para eficiência no controle por TOS o Firewall tem que ser o ponto de indução da rede e deve usar as regras da tabela Mangle.
Teremos em mente então que TOS será o nome dados a um alvo, como DROP, ACCEPT e REJECT. Esse alvo combinado com o argumento --set-tos vai então aplicar o conceito do controle de tráfego por Tipo de Serviço.
Essa prioridade será setada conforme um bit que será alterado no pacote, e para saber o que é mais importante e o que deve ser tratado como normal temos uma tabela especificando os valores que deverão ser seguidos:
Observamos então que o valor menos significativos nesta tabela na verdade se trata da prioridade normal de um serviço.
[1] Comentá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
[9] Comentá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.
[11] Comentário enviado por wasleyalmeida em 10/02/2009 - 10:48h
Otimo Artigo, vai me ajudar e muito.
Agora uma pergunta (talvez ate idiota) 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.
[12] Comentá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
[14] Comentá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!