Como as tabelas de roteamento baseadas em políticas realmente funcionam?

6

Meu entendimento do Policy Based Routing no Linux é que existem três componentes principais, as tabelas de roteamento, as rotas e as regras. Eu segui muitos guias e em cada um deles isso parece estar correto, então eu crio uma tabela de rota, adiciono uma rota a ela e adiciono uma regra para qualificar o tráfego para usar essa tabela.

Isso parece lógico para mim, há uma lista de regras e se o tráfego coincide com a regra, ele procura a tabela de rotas e informa como chegar ao destino, no entanto, isso não parece funcionar para mim e para mim. Agora encontramos vários outros artigos em que, logo após a configuração das tabelas de roteamento, os participantes adicionam as mesmas rotas à tabela de roteamento principal, não sei por que isso é necessário, a menos que eu entenda como ela deve funcionar está errado ou não funciona.

Veja um bom exemplo no Roteamento avançado e & Controle de Trânsito HOWTO possui o seguinte trecho (caso o link desapareça):

One creates two additional routing tables, say T1 and T2. These are added in /etc/iproute2/rt_tables. Then you set up routing in these tables as follows:

ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 table T2

Nothing spectacular, just build a route to the gateway and build a default route via that gateway, as you would do in the case of a single upstream provider, but put the routes in a separate table per provider. Note that the network route suffices, as it tells you how to find any host in that network, which includes the gateway, as specified above.

Next you set up the main routing table. It is a good idea to route things to the direct neighbour through the interface connected to that neighbour. Note the 'src' arguments, they make sure the right outgoing IP address is chosen.

ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2

Then, your preference for default route:

ip route add default via $P1

Next, you set up the routing rules. These actually choose what routing table to route with. You want to make sure that you route out a given interface if you already have the corresponding source address:

ip rule add from $IP1 table T1
ip rule add from $IP2 table T2

This set of commands makes sure all answers to traffic coming in on a particular interface get answered from that interface.

OK, então eu não entendo por que, depois de adicionar as rotas para a nova tabela de rotas criada especificamente, você vai adicioná-las à tabela de roteamento principal, qual foi o objetivo? Alguém pode explicar?

    
por HuggieRich 25.11.2015 / 14:46

1 resposta

3

Na verdade, acho que a confusão vem do fato de que essas instruções estão misturando dois tópicos:

  • Lidando com o roteamento de políticas
  • Configurando sua tabela de roteamento padrão de uma maneira prática recomendada

Estas três linhas

    ip route add $P1_NET dev $IF1 src $IP1
    ip route add $P2_NET dev $IF2 src $IP2
    ip route add default via $P1

estão lá para lidar com o tráfego que não é correspondido por suas rotas de política por qualquer motivo (você adiciona um loopback no roteador, por exemplo, e o usa para gerenciamento). Eles não são estritamente necessários para que o PBR funcione, mas é melhor tê-los todos do mesmo jeito.

    
por 10.01.2016 / 06:05