Curitiba/PR Contato
Administração e Suporte em Ti

Os procedimentos abaixo consiste em utilizar dois ou mais links de acesso a internet com balanceamento de carga sem utilizar-se do iptables com o alvo “MARK” para marcar os pacotes em trânsito entre as interfaces de rede.
O teste de balanceamento de links foi realizado com duas máquinas virtuais sendo uma delas com três placas de rede

1° Máquina
endereço IP = 192.168.3.91/24
endereço IP = 192.168.10.168/24
endereço IP = 172.16.32.1/16

2° Máquina
Placa de rede conectada a saída da primeira maquina pelo serviço de DHCP ativo para rede 172.16.0.0/16

A primeira máquina será nosso firewall/roteador e a segunda, o nosso desktop
Faça uma instalação mínima para a maquina firewall e mais os seguintes pacotes:
ntsysv iproute iptraf nmap wget, ferramentas para monitoramento de trafego de rede.
yum install ntsysv iproute iptraf nmap wget -y

defina os endereços IP´s que se deseja para as interfaces de rede nos arquivos de configuração, ou carregue pelo comando “ip”
ip address add “endereço IP/REDE” dev “interface”
Ex:
ip address add 192.168.3.91/24 dev eth0
ip address add 192.168.10.168/24 dev eth1
ip address add 172.16.32.1/26 dev eth2

Pelos arquivos de configuração não defina o gateway, faremos isso pelo comando “ip route”
PS: Eu configurei os endereços diretamente nos arquivos em /etc/sysconfig/network-scripts/

Como iremos atuar com dois links vamos inserir duas novas tabelas para roteamento
echo “10 link1” >> /etc/iproute2/rt_tables
echo “20 link2” >> /etc/iproute2/rt_tables

Iniciando as configurações das redes…
inserimos as rotas para as rede informando saídas e suas rotas default
ip route add 192.168.3.0/24 dev eth0 src 192.168.3.91 table link1
ip route add default via 192.168.3.2 link1

ip route add 192.168.10.0/24 dev eth1 src 192.168.10.168 table link2
ip route add default via 192.168.10.31 table link2

inserir as rotas para a tabela padrão do sistema
ip route add 192.168.3.0/24 dev eth0 src 192.168.3.91
ip route add 192.168.10.0/24 dev eth1 src 192.168.10.168

devemos informar também ao sistema a rota padrão, a mesma será excluída posteriormente para dar lugar ao balanceamento de carga
ip route add default via 192.168.3.2

[root@localhost ~]# ip route list
192.168.3.0/24 dev eth0 proto kernel scope link src 192.168.3.91
192.168.10.0/24 dev eth1 proto kernel scope link src 192.168.10.168
172.16.0.0/16 dev eth2 proto kernel scope link src 172.16.32.1
169.254.0.0/16 dev eth0 scope link metric 1002
169.254.0.0/16 dev eth1 scope link metric 1003
169.254.0.0/16 dev eth2 scope link metric 1004
default via 192.168.3.2 dev eth0

PS: Como dito anteriormente a rota default sera excluída posteriormente para dar lugar ao
balanceamento de carga

Agora acrescentamos as regras das rotas às tabelas
ip rule add from 192.168.3.91 table link1
ip rule add from 192.168.10.168 table link2

[root@localhost ~]# ip rule list
0: from all lookup local
32764: from 192.168.10.168 lookup link2
32765: from 192.168.3.91 lookup link1
32766: from all lookup main
32767: from all lookup default

inserir as rotas para a rede interna
ip route add 172.16.0.0/16 dev eth2 table link1
ip route add 172.16.0.0/16 dev eth2 table link2
ip route add 127.0.0.0/8 dev lo table link1
ip route add 127.0.0.0/8 dev lo table link2

Agora efetuamos o balanceamento.
ip route add default nexthop via 192.168.3.2 dev eth0 weight 1 nexthop via 192.168.10.31 dev eth1 weight 1

se quisermos alterar o valor do peso de balanceamento de carga
ip route delete default nexthop via 192.168.3.2 dev eth0 weight 1 nexthop via 192.168.10.31 dev eth1 weight 1
ip route add default nexthop via 192.168.3.2 dev eth0 weight 1 nexthop via 192.168.10.31 dev eth1 weight 3

[root@localhost ~]# ip route list
192.168.3.0/24 dev eth0 proto kernel scope link src 192.168.3.91
192.168.10.0/24 dev eth1 proto kernel scope link src 192.168.10.168
172.16.0.0/16 dev eth2 proto kernel scope link src 172.16.32.1
169.254.0.0/16 dev eth0 scope link metric 1002
169.254.0.0/16 dev eth1 scope link metric 1003
169.254.0.0/16 dev eth2 scope link metric 1004
default
nexthop via 192.168.3.2 dev eth0 weight 1
nexthop via 192.168.10.31 dev eth1 weight 3

PS se aparecer apenas a rota default para eth0, exclua a rota e repita a adição de rota para as duas interfaces…
ip route delete default dev eth0
ip route add default nexthop via 192.168.3.2 dev eth0 weight 1 nexthop via 192.168.10.31 dev eth1 weight 3

[root@localhost ~]# ip rule list
0: from all lookup local
32764: from 192.168.10.168 lookup link2
32765: from 192.168.3.91 lookup link1
32766: from all lookup main
32767: from all lookup default

Habilitar o kernel para encaminhamento de pacotes IPV4 o qual pode ser feito por linha de comando através de scripts.

echo 1 > /proc/sys/net/ipv4/ip_forward

ou diretamente no sysctl.conf em /etc/sysctl.conf na linha net.ipv4.ip_forward mudando de 0 para 1
net.ipv4.ip_forward = 1

execute apos edição
sysctl -q

Como mencionado anteriormente o balanceamento dos Links também pode ser feito por serviço com o uso do Iptables e o alvo MARK para marcar os pacotes no tráfego da rede. Isto será colocado no próximo post…

Procure salvar os arquivos de configuração em um script para que possa ser carregado durante uma reinicialização do equipamento.