E isto está correto?O BROAD_ETH1 usado na configuração do LINK2?
ifconfig $IF_LINK2 $IP_SERV_ETH2 broadcast $BROAD_ETH1 netmask $MASK_ETH2Em 23 de junho de 2015 08:29, Flavio Menezes dos Reis <flavio-reis@pge.rs.gov.br> escreveu:Atte,Gustavo,De cara já notei que o problema pode ser teus segmentos de rede e a máscara, afinal 10.0.0.200/16 e 10.0.0.100/16, as duas interfaces, estarão no mesmo segmento e realmente acredito que isto pode criar uma confusão de roteamento. Sugiro que altere, por exemplo, o eth2 para 10.100.0.0/16.--Em 22 de junho de 2015 21:41, Gustavo S. L. <ghtp25@gmail.com> escreveu:Boa noite. Escrevi um script para balancear dois links, na verdade um teste, usando 3 vms com Debian Jessie. Quando rodo ele e confiro pelo iptraf tudo certo, tráfego encaminhado para a interface correta de acordo com a regra indicada. O problema é que depois de um tempo o balanceamento parece não ter mais efeito e o que deveria sair por uma interface sai por outra. Se alguem que já tenha feito algo parecido puder me ajudar a identificar o problema (se está na configuração ou no roteamento, ou se falta algo) eu ficaria muito grato.Sei que o indicado é usar um pastebin, mas como acredito que a resposta ao problema esteja no script vou postá-lo na íntegra para facilitar a resposta. Desde já obrigado pela ajuda
OBS: a eth0 representa a rede interna, a eth1 represente o link1 (gvt por exemplo), e a eth2 o link2 (copel por exemplo). Para o link 1 uso o gateway da minha rede e para o link2 uso a própria máquina real.
Segue:
#!/bin/bash
# Configuração dos ips do servidor
echo "Configurando variáveis das interface..."
IF_LAN="eth0"
IF_LINK1="eth1"
IF_LINK2="eth2"
echo "Configurando variáveis da interface eth0..."
IP_SERV_ETH0="192.168.0.1"
BROAD_ETH0="192.168.0.255"
MASK_ETH0="255.255.255.0"
GW_LAN="10.0.0.1"
echo "Configurando variáveis da interface eth1 para link1..."
IP_SERV_ETH1="10.0.0.100"
BROAD_ETH1="10.0.255.255"
MASK_ETH1="255.255.0.0"
GW_LINK1="10.0.0.1"
echo "Configurando variáveis da interface eth2 para link2..."
IP_SERV_ETH2="10.0.0.200"
BROAD_ETH2="10.0.255.255"
MASK_ETH2="255.255.0.0"
GW_LINK2="10.0.0.4"
# Identificação dos ips de clientes na rede
echo "Configurando variáveis que apontam para clientes 1 e 2..."
CLIENTE01="192.168.0.100"
CLIENTE02="192.168.0.200"
# Comandos para configuração dos ips
echo "Realizando comandos para configuração de ips..."
ifconfig $IF_LAN $IP_SERV_ETH0 broadcast $BROAD_ETH0 netmask $MASK_ETH0
ifconfig $IF_LINK1 $IP_SERV_ETH1 broadcast $BROAD_ETH1 netmask $MASK_ETH1
ifconfig $IF_LINK2 $IP_SERV_ETH2 broadcast $BROAD_ETH1 netmask $MASK_ETH2
echo "Realizando comandos para configuração de rotas..."
route add default gw $GW_LAN
ip route add default via $GW_LINK1 dev $IF_LINK1 table link1
ip route add default via $GW_LINK2 dev $IF_LINK2 table link2
# Liberando o Forward e Mascarando os ips para saída pelo Firewall
echo "Realizando comandos para configuração de forward e mascaramento..."
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $IF_LAN -j MASQUERADE
iptables -t nat -A POSTROUTING -o $IF_LINK1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o $IF_LINK2 -j MASQUERADE
# Configurando marcação de pacotes
echo "Configurando comandos para marcação de pacotes..."
ip rule add fwmark 1 prio 20 table link1
ip rule add fwmark 2 prio 20 table link2
# Configurando roteamento dos pacotes via marcação
iptables -t mangle -A PREROUTING -s $CLIENTE01 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -s $CLIENTE02 -j MARK --set-mark 2
--GutoFlávio Menezes dos ReisProcuradoria-Geral do Estado do RSSeção de Infraestrutura de Rede - Assessoria de InformáticaAnalista de Informática(51) 3288-1764
--Flávio Menezes dos ReisProcuradoria-Geral do Estado do RSSeção de Infraestrutura de Rede - Assessoria de InformáticaAnalista de Informática(51) 3288-1764