Roteamento com marcação de pacotes

Publicado por Marcio Jose em 07/04/2011

[ Hits: 10.037 ]

Blog: http://br.linkedin.com/in/marciojose

 


Roteamento com marcação de pacotes



Objetivo:

Através de marcação de pacotes determinar as solicitações de internet da rede interna para provedores diferentes.

Considerando a seguinte estrutura:
  • Dois provedores com modens configurados com os IPs internos 172.0.0.104/24 e 192.168.1.1/24;
  • Rede interna 10.1.0.0/24.

Tratamento da estrutura para com o objetivo:
  • O modem do provedor que tem o modem 172.0.0.104/24 se chamará vm e o do 192.168.1.1/24 se chamará comp;
  • Para a rede interna sair para a internet pelo provedor vm (172.0.0.104/24) deveremos marcar os pacotes como 2 e para a internet pelo provedor comp (192.168.1.1/24) deveremos marcar os pacotes como 1.

Mão na massa

1 - Criar uma tabela de roteamento para cada provedor:

Editar o arquivo /etc/iproute2/rt_tables e inserir as tabelas:

200 comp
201 vm

Para verificar se as tabelas estão criadas, digite:

# ip route list table comp

Não deve retornar nenhum valor ou erro. Repita o passo para a tabela vm.

2 - Agora precisamos criar o default gateway para cada tabela que criamos no item 1:

# ip route add default via 172.0.0.104 table vm
# ip route add default via 192.168.1.1 table comp


Para verificar a configuração, digite:

# ip route list table vm
# ip route list table comp


Deve retornar somente uma linha com a rota padrão de cada tabela.

3 - Determinar qual marcação será encaminhada para cada tabela de roteamento criada no item 1:

Como mencionado acima, a internet para o provedor do modem 172.0.0.104/24 (vm) tem a marcação dos pacotes como 2 e para o provedor do modem 192.168.1.1/24 (comp) terá a marcação dos pacotes como 1. Sendo assim, vamos criar as regras para o roteamento.

# ip rule add fwmark 1 table comp
# ip rule add fwmark 2 table vm


Para verificar a configuração, digite:

# ip rule list

4 - Determinar o que será marcado para cada link de internet com base na regras criadas no item 3:

Vamos agora determinar através do iptables, na tabela nat, na chain PREROUTING (antes do roteamento) qual a condição para que o pacote seja marcado como 1 (comp - 192.168.1.1/24) ou 2 (vm - 172.0.0.104/24). No meu caso, determinei assim:

a) Que a navegação (80 e 443) seja pela tabela comp para sair pelo gateway 192.168.1.1/24 (configurado no item 2) que tem que ser marcado como 1 (configurado no item 3).

b) Que para email (25,110) para a tabela vm para sair pelo gateway 172.0.0.104/24 (configurado no item 2) que tem que ser marcado como 2 (configurado no item 3).

# iptables -t nat -t mangle -A PREROUTING -p tcp -m multiport --dport 80,443 -j MARK --set-mark 1
# iptables -t nat -t mangle -A PREROUTING -p tcp -m multiport --dport 25,110 -j MARK --set-mark 2


Caso o pacote não seja marcado, ele irá para a tabela main do ip route, ou seja, para o gateway default que está configurado. Tendo a marcação no iptables e não diretamente no ip route lhe dá maior facilidade e flexibilidade para determinar a regra em que o pacote é marcado (ip origem, ip destino, porta origem, porta destino, interface, protocolo etc).

Post previamente publicado em meu blog: http://marciojose.blogspot.com/2011/03/roteamento-de-dois-links-com- marcacao.html

Outras dicas deste autor

CentOS + Qmail-Toaster = SpamHaus/SpamCop com Score

Leitura recomendada

Manual de instalação do giFT (traduzido)

Instalando o X-lite

Ralink RT2570 no SuSE 9.x

Certificação Linux - LPIC 1

Criando um menu em shell script

  

Comentários
[1] Comentário enviado por dfsantos em 08/04/2011 - 10:28h

Ótima dica amigo, realmente muito útil. Parabéns

[2] Comentário enviado por DouglasMenger em 03/12/2013 - 16:49h

Marcio,

Segui os passos do seu artigo mas não tive sucesso, fiz um monitoramento pelo log do firewall e observei que a saída dos pacotes estão indo para a interface do meu gateway secundário porem não e possível navegar ou acessar qualquer outra porta. Ate o momento não consegui entender o porque.

Meu firewall e simples não tem nenhum restrição de entrada ou saída.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts