LAYER7 Balanceamento com 3 links
Boa tarde Galera!
Estou com um problemão aqui e gostaria de um help!
Tenho 3 links (01 Adsl 4MB , 01 Adsl 1MB, 01 Link dedicado 512Kb)
Gostaria de fazer com que a navegação saia pelo 4MB. Os serviços de email (25, 110) pelo 512Kb. E o resto pelo 1MB.
Até ai consegui fazer tudo funcionar. Mas qdo resovil redirecionar os Downloads de EXE , MP3 , RAR e etc. para o 1MB começaram meus problemas.
Ele não consegue fazer com que esses downloads venham pelo Link de 1MB. Ou ele vem pelo link de 4Mb ou não vem.
O que é mais estranho é que quando vou fazer donwload que vem do Emule que vem do SOUCEFORGE ele vem certo pelo 1MB.
Dá pra entender?
Acredito que ele esteja conflitando com a regra da porta 80 qdo é feito download via http. Mas qual seria a solução!?
Vou mandar parte de meu script pra vossa análize.
Obrigado se alguém puder ajudar.
#ETH5 - Cliente
#ETH0 - LINK 4 MB
#ETH6 - LINK 512Kb
#ETH7 - LINK 1 MB
iptables -F
iptables -t nat -F
iptables -t mangle -F
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth6 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth7 -j MASQUERADE
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu
#REGRAS PARA O 4MB
iptables -t mangle -A PREROUTING -i eth5 -p tcp --dport 80 -j MARK --set-mark 1
#REGRAS PARA O 512Kbps
iptables -t mangle -A PREROUTING -i eth5 -p tcp --dport 25 -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -i eth5 -p tcp --dport 110 -j MARK --set-mark 2
#REGRAS PARA O 1MB
iptables -t mangle -A PREROUTING -m layer7 --l7proto exe -j MARK --set-mark 3
iptables -t mangle -A PREROUTING -m layer7 --l7proto mp3 -j MARK --set-mark 3
iptables -t mangle -A PREROUTING -m layer7 --l7proto rar -j MARK --set-mark 3
iptables -t mangle -A PREROUTING -m layer7 --l7proto zip -j MARK --set-mark 3
#REGRAS PARA O 4MB
iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 1
#REGRAS PARA O 512Kbps
iptables -t mangle -A OUTPUT -p tcp --dport 25 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -p tcp --dport 110 -j MARK --set-mark 2
#REGRAS PARA O 1MB
iptables -t mangle -A OUTPUT -m layer7 --l7proto exe -j MARK --set-mark 3
iptables -t mangle -A OUTPUT -m layer7 --l7proto mp3 -j MARK --set-mark 3
iptables -t mangle -A OUTPUT -m layer7 --l7proto rar -j MARK --set-mark 3
iptables -t mangle -A OUTPUT -m layer7 --l7proto zip -j MARK --set-mark 3
ip route add default via 192.168.1.1 dev eth0 table 200
ip route add default via 192.168.0.1 dev eth6 table 201
ip route add default via 10.0.0.138 dev eth7 table 202
ip rule add fwmark 1 table 200
ip rule add fwmark 2 table 201
ip rule add fwmark 3 table 202
ip route flush cache
tenho pouca esperiencia mas...
velho é o seguinte veja o meu caso e minhas regras e vê se te ajuda,
tenho dois links dedicados sendo um de 512 e outro de 1024, uso o bfw (você encontra ele em BrazilFW Firewall and Router )
faço somente o seguinte uso as regras que ja vem prontas no bfw para balanceamento, e uso o peso no link de 512 - peso 1 e o peso no link de 1024 - peso 3...
isso fas que vá uma conexão para o link menor e tres para maior mais uso as seguintes regras abaixo para que tudo que for msn e paginas que usem 443 passem somento no link de 512.
iptables -t mangle -A PREROUTING -p tcp --dport 443 -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -p tcp --dport 1853:1864 -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -p udp --dport 1853:1864 -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -p udp --dport 6891:6900 -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -p tcp --dport 6891:6900 -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -p tcp -d login.passport.net -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -p tcp -d svcs.microsoft.com -j MARK --set-mark 2
ip rule add fwmark 2 table 20 prio 20
ip route add default via (ip do meu routeador) dev eth1 table 20
agora nunca usei o l7 mais se usasse acho que colocaria assim
iptables -t mangle -A POSTROUTING -m layer7 --l7proto msn -j MARK --set-mark 2
bom como disse eu to completamente engatinhando em iptables li a primeira apostila ontem sobre isso ve ai se ajuda em algo..
até boa sorte.