Capítulo 11. Netfilter & iproute – marcação de pacotes
Até aqui temos visto como o iproute funciona, e o netfilter foi mencionado algumas vezes. Esse seria um bom momento para surfar através do Guia Bastante Não Confiável de Rusty. O netfilter em si pode ser encontrado aqui.
O netfilter permite-nos filtrar pacotes, ou manipular seus cabeçalhos. Uma funcionalidade especial é que nós podemos marcar um pacote com um número. Isso é feito com a facilidade --set-mark.
Como exemplo, esse comando marca todos os pacotes destinados a porta 25, no email sainte:
# iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport 25 -j MARK --set-mark 1
Digamos que nós temos múltiplas conexões, uma que é rápida (e cara, por megabyte) e outra que é lenta, porém de tarifa flat. Nós gostaríamos muito certamente que os emails saintes sigam pela rota barata.
Já temos marcado os pacotes com um número ‘1’, agora instruiremos o database de política de roteamento para atuar sobre isso:
# echo 201 mail.out >> /etc/iproute2/rt_tables
# ip rule add fwmark 1 table mail.out
# ip rule ls
0: from all lookup local
32764: from all fwmark 1 lookup mail.out
32766: from all lookup main
32767: from all lookup default
Agora geraremos um rota para o link lento, mas barato na tabela mail.out:
# /sbin/ip route add default via 195.96.98.253 dev ppp0 table mail.out
E concluímos. Se desejássemos fazer exceções, existem muitas formas de conseguir isso. Nós podemos modificar a instrução netfilter para excluir certos hosts, ou nós podemos inserir uma regra com uma prioridade mais baixa que aponte para a tabela principal para nossos hosts excepcionalizados.
Nós podemos também usar essa funcionalidade para honrar os bits TOS marcando pacotes com um diferente tipo de serviço com diferentes números, e criar regras para agir sobre isso. Dessa forma você pode mesmo dedicar, digamos, um link ISDN para as sessões interativas.
É inútil dizer que isso funciona bem sobre um host que esteja fazendo NAT (‘masquerading’).
IMPORTANTE: Nós recebemos um relato de que o MASQ e o SNAT pelo menos colidem com a marcação de pacotes. Rusty Russell explica-o nessa postagem. Desligue o filtro do caminho reverso para fazê-lo funcionar adequadamente.
Obs.: Para marcar pacotes, você precisa ter algumas opções habilitadas em seu kernel:
IP: advanced router (CONFIG_IP_ADVANCED_ROUTER) [Y/n/?]
IP: policy routing (CONFIG_IP_MULTIPLE_TABLES) [Y/n/?]
IP: use netfilter MARK value as routing key (CONFIG_IP_ROUTE_FWMARK) [Y/n/?]
Veja também a Seção 15.5 no Cookbook.
Leituras Complementares:
http://www.rnp.br/newsgen/0201/roteamento_linux.html;
http://linuxflex.blogspot.com/2008/02/controle-de-trfego.html;
http://www.numaboa.com/informatica/linux/configuracoes/703-roteamento-linux;
http://ornellas.apanela.com/dokuwiki/pub:pt-br:linuxfwrt.
Autores Originais dos textos:
Bert Hubert (Netherlabs BV)
bert.hubert@netherlabs.nl
Thomas Graf (Autor de Seção)
tgraf@suug.ch
Gregory Maxwell (Autor de Seção)
greg@linuxpower.cx
Remco van Mook (Autor de Seção)
remco@virtu.nl
Martijn van Oosterhout (Autor de Seção)
kleptog@cupid.suninternet.com
Paul B Schroeder (Autor de Seção)
paulsch@us.ibm.com
Jasper Spaans (Autor de Seção)
jasper@spaans.ds9a.nl
Pedro Larroy (Autor de Seção)
piotr@member.fsf.org
Bert Hubert (Netherlabs BV)
bert.hubert@netherlabs.nl
Thomas Graf (Autor de Seção)
tgraf@suug.ch
Gregory Maxwell (Autor de Seção)
greg@linuxpower.cx
Remco van Mook (Autor de Seção)
remco@virtu.nl
Martijn van Oosterhout (Autor de Seção)
kleptog@cupid.suninternet.com
Paul B Schroeder (Autor de Seção)
paulsch@us.ibm.com
Jasper Spaans (Autor de Seção)
jasper@spaans.ds9a.nl
Pedro Larroy (Autor de Seção)
piotr@member.fsf.org
Nenhum comentário:
Postar um comentário