Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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.
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.
1
Roteamento avançado - Linux - utilizando IPROUTE e IPTABLES - Load Balance
Abaixo descrevo detalhadamente como fazer cada configuração no Script para que você
tenha sucesso na implementação.
Entendam que os IP´s aqui utilizados são fictícios, bem como seus Defaut Gateways. Você
deverá trocá-los pelos IP´S da sua rede conforme a necessidade!
Vejamos:
##############################################################################
IF_LAN='eth0'
IF_LINK1='eth1'
IF_LINK2='eth2'
2
Roteamento avançado - Linux - utilizando IPROUTE e IPTABLES - Load Balance
# Todo pacote que passar pelo Firewall com estas particularidades receberão
# uma marca , uma espécie de carimbo. Pacotes destinados à porta 80
# recebem carimbo de número 2, pacotes com destino à porta 25
# recebem carimbo número 3.
# Desta forma, podemos diferenciá-los para que mais à frente no script tenhamos
# controle do que saiu/entrou e por onde saiu/entrou.
# Aqui montamos as tabelas dinâmicas a partir das marcas (carimbos) que fizemos
# lá em cima no nosso script.
# Pacotes que foram marcados com 2 vão para a tabela table 20 e os marcados
# com 3, vão para a tabela table 21 , com a mesma prioridade. Perceba o PRIO 20
# após os comandos.
# Este condiciona que todos os pacotes que vierem da rede 192.160.0.0 vão para
# a tabela 20.
# O comando está comentado. Caso queira utilizá-lo, apenas retire o sinal de "#"
# da frente.
# Agora sim daremos rumo aos pacotes que foram marcados e cadastrados na tabela
# dinâmica.
3
As Palavras Mais Comuns da Lingua Inglesa
# Veja que os pacotes que foram enviados para a tabela 20 têm como DEFAULT
# GATEWAY o LINK1. Sendo assim, os pacotes serão enviados para o LINK1 na
# Interface ETH1 com o IP 200.70.0.1.
# Já os pacotes da tabela 21 serão enviados para o LINK2 na Interface ETH1, com
# o IP 200.80.0.1
# Este último comando limpa a tabela, caso ela já tenha sido utilizada
# anteriormente, ou apenas para termos certeza de que quando você resetar as
# regras todas, o Firewall não guarde nenhum tipo de informação na
# memória (cache). Daí o nome FLUSH CACHE.
Você pode utilizar parte do script, se necessário. Por exemplo, se quiser apenas rotear
pacotes pela origem, utilize:
ou
Conforme o Link que deseja utilizar. Onde 192.160.0.0/24 é a origem. Neste exemplo, a
rede em questão tem a máscara 255.255.255.0 (/24)
Desta forma, não há necessidade de marcar pacotes e você poderá deletar as linhas do
script.
4
As Palavras Mais Comuns da Lingua Inglesa