Introdução
Olá amigos (as)..
Certo tempo atrás, escrevi um script usando IPROUTE2 e IPTABLES que
desenvolvi na ocasião, já que havia a necessidade de utilizar 2 links
de Internet distintos. Desta vez, reescrevi com muito mais detalhes
mostrando exatamente como funciona cada passo.
Lembrando que, este script foi desenvolvido no SLACKWARE, mas acredito
que funcione em qualquer outra distribuição LINUX com Kernel 2.4.x e
superiores, com algumas poucas modificações.
Quanto aos links, vamos chamá-los de LINK1 e LINK2...
Imagine que você queira que determinado protocolo use o LINK1 e
outro protocolo use o LINK2.
Um exemplo fácil seria dizer que mensagens de E-mail SMTP e POP
(portas 110 e 25) utilizam o LINK1, enquanto o tráfego de internet
(portas 80, 21, 53, 443...) utiliza o LINK2. Isto permitiria
que usuários fizessem downloads pesados sem comprometer o tráfego de mensagens,
ou ainda, enviar e receber mensagens de E-mail grandes sem interferir na
velocidade dos usuários que navegam na Internet.
Um outro exemplo para quem tem Vlans em suas redes seria dizer que a REDE
192.160.0.X utiliza o Link1, enquanto a REDE 192.170.0.X utiliza o LINK2.
Basicamente, o processo funciona marcando pacotes que entram e saem do FIREWALL
onde o script será implementado com o Comando IPTABLES usando Mark, um
artifício que faz com que o Firewall monte uma tabela dinâmica de todos os
pacotes que passam por ele. Imagine que você tenha um Firewall com 4
Interfaces, assim vamos chamá-las de: ETH0, ETH1, ETH2 e ETH3, onde ETH0 está
conectada a sua LAN interna, a ETH1 conectada em uma DMZ, e as interfaces ETH3
e ETH4 conectadas a 2 Links distintos.
Se um pacote entrou pela interface ETH0 e saiu pela interface ETH3, é
necessário que ele retorne para o mesmo lugar de onde veio. Eis o motivo de
marcar os pacotes; caso contrário, eles se utilizarão do DEFAULT GATEWAY do
Firewall, que pode não ser o mesmo que você deseja. Entendendo isto, podemos
seguir adiante com nosso script.
Abaixo descrevo detalhadamente como fazer cada configuração no Script para que
você tenha sucesso na implementação. Entendam que os IPs aqui utilizados são
fictícios, bem como seus Defaut Gateways. Você deverá trocá-los pelos IPs da
sua rede conforme a necessidade!
Eis um exemplo de um script pronto em um Firewall com 3 Interfaces apenas.
A primeira - ETH0, é a interface conectada a rede interna. A Interface ETH1 é a
interface ligada ao LINK1, e por último, a interface ETH2, ligada ao LINK2.