A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Linux

Roteamento em redes Linux

Qui

12

Abr

2007


22:39

(10 votos, média 4.80 de 5) 


Regras: base de dados da política de roteamento

Quando se tem um roteador mais parrudo, que precisa atender as necessidades de muitas pessoas, entram em jogo as tabelas de roteamento da base de dados da política de roteamento. Para usar esta característica, o kernel do Linux precisa ter sido compilado com "IP: advanced router" e "IP: policy routing".

Quando o kernel precisar tomar uma decisão de roteamento, ele descobre qual tabela deve ser consultada. Como default, há três tabelas. Tanto a ferramenta "route" quanto a "ip" modificam as tabelas principal (main) e local.

$ ip rule list
0:	from all lookup local 
32766:	from all lookup main 
32767:	from all lookup default

O comando atencao ip rule list mostra a prioridade de todas as regras. De acordo com a listagem acima, todas as regras são aplicadas a todos os pacotes ("from all"). Já vimos a tabela principal quando usamos o comando ip route list (ip route ls é a mesma coisa), mas as tabelas local e default são novidade.

Se quisermos roteamentos mais sofisticados, podemos criar regras que apontam para outras tabelas que permitem modificar as regras de roteamento do sistema. Para a sintaxe correta, procure o Dicionário do iproute2 (tradução do texto de Alexey N. Kuznetsov).

Uma política de roteamento simples

Vamos a um exemplo muito comum no mundo real: dois cable modems conectados a um roteador Linux NAT ("mascarador") instalados num edifício. Os moradores do edifício pagam para usar a Internet. Imagine que um deles usa apenas o hotmail e quer pagar menos. Tudo bem para o administrador do sistema, só que o freguês vai acabar usando o low-end cable modem.

O cable modem "rápido" é conhecido como 212.64.94.251 e é um link PPP para 212.64.94.1. O cable modem "lento" é conhecido por vários endereços IP, 212.64.78.148 neste exemplo, e é um link para 195.96.98.253.

A tabela local

$ ip route list table local
broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1 
local 10.0.0.1 dev eth0  proto kernel  scope host  src 10.0.0.1 
broadcast 10.0.0.0 dev eth0  proto kernel  scope link  src 10.0.0.1 
local 212.64.94.251 dev ppp0  proto kernel  scope host  src 212.64.94.251 
broadcast 10.255.255.255 dev eth0  proto kernel  scope link  src 10.0.0.1 
broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1 
local 212.64.78.148 dev ppp2  proto kernel  scope host  src 212.64.78.148 
local 127.0.0.1 dev lo  proto kernel  scope host  src 127.0.0.1 
local 127.0.0.0/8 dev lo  proto kernel  scope host  src 127.0.0.1 

tem uma porção de coisas que precisam ser especificadas. Bem, é aqui mesmo que elas estão. Quanto à tabela default... bem, esta está vazia. Já a tabela principal mostra o seguinte:

$ ip route list table main 
195.96.98.253 dev ppp2  proto kernel  scope link  src 212.64.78.148 
212.64.94.1 dev ppp0  proto kernel  scope link  src 212.64.94.251 
10.0.0.0/8 dev eth0  proto kernel  scope link  src 10.0.0.1 
127.0.0.0/8 dev lo  scope link 
default via 212.64.94.1 dev ppp0

Agora, para atender o Marco, o morador que só usa o hotmail, vamos criar uma regra nova. Mesmo podendo trabalhar apenas com números, é muito mais fácil adicionarmos nossas tabelas ao arquivo /etc/iproute2/rt_tables.

# echo 200 Marco >> /etc/iproute2/rt_tables
# ip rule add from 10.0.0.10 table Marco
# ip rule ls
0:	from all lookup local 
32765:	from 10.0.0.10 lookup Marco
32766:	from all lookup main 
32767:	from all lookup default

Agora só falta criar a tabela do Marco e dar uma limpada no cache de rotas:

# ip route add default via 195.96.98.253 dev ppp2 table Marco
# ip route flush cache

E isto é tudo. Aproveite o exemplo e comece a brincar um pouco smile

Informações adicionais