Roteamento baseado em política

5

Encontrei um artigo muito bom sobre balanceamento de carga no link . Eu não consegui implementá-lo, embora minha exigência seja ligeiramente diferente do balanceamento de carga puro.

Temos duas conexões ISP. Eu conectei esses dois roteadores ao servidor Linux em eth0 (ip público 121.XXX.XX.XXX) e eth1 (192.168.129.XXX) respectivamente, e nossa rede interna está em eth2 (192.168.1.XXX).

Eu decidi que nosso FTP deveria usar a interface eth1, o Squid deveria usar eth0, o Sendmail deveria usar eth0 e alguns usuários deveriam usar eth0 e algum outro usuário deveria usar eth1.

Alguém pode dizer se é possível, como posso conseguir isso usando iptables e iproute2? A ajuda passo a passo é muito apreciada. Agradecemos antecipadamente.

    
por Silkograph 29.07.2010 / 09:44

2 respostas

3

Configurar o IPROUTE2

echo "4        sendmail" >> /etc/iproute2/rt_tables
ip route add 121.XXX.XX.XXX/MASK dev eth0 src 121.XXX.XX.XXX table sendmail
ip route add 192.168.1.XXX/24 dev eth2 table sendmail
ip route add default via GATEWAY1 table sendmail
ip ru add from 121.XXX.XX.XXX lookup sendmail
ip ru add fwmark 2 table sendmail
ip route flush cache

Configurar IPTABLES

iptables -t mangle -I OUTPUT -p tcp --dport 25 -j MARK --set-mark 0x2
iptables -t mangle -I PREROUTING -i eth2 -p tcp --dport 25 -j MARK --set-mark 0x2

iptables -t nat -I POSTROUTING -s 192.168.1.XXX/24 -o eth0 -j SNAT --to-source 121.XXX.XX.XXX
    
por 30.07.2010 / 11:21
0

Eu fiz algo similar usando o shorewall.
Tudo é baseado na marcação e filtragem de pacotes e na aplicação de algumas regras. Tudo deve ser explicado no seguinte link: link O processo deve ser assim (eu tenho que reler algo, eu fiz isso há alguns meses):

  • o pacote vem da rede interna

  • netfilter aplica no tráfego alguma MARCA

  • regras baseadas em marcas encaminham o pacote pelo dispositivo certo

por 29.07.2010 / 12:44