Introdução

Após instalar o Balanceamento e Redundancia adquirido na internet e modificado conforme minha necessidade, acabei deparando com alguns problemas, como acessar Bancos Online que utilizam portas seguras, e fazer Acesso Remoto na rede interna.

Partindo do principio que, a instalação e configuração das Ferramentas foram bem sucedidas, apenas vou comentar as modificações que foram necessárias para funcionar de acordo..

Rede:

Link 1 = ETH1 = IP 192.168.1.10 GVT
Link 2 = ETH2 = IP 192.168.2.10 BRT
Link 3 = ETH0 = IP 192.168.0.1 Rede Interna

As estação possui ip fixo e dispõe uma porta para conexão remota, ex.:

192.168.0.3 porta de acesso do radmin 4893

O programa radmin cliente 3 possibilita scanear todas as estações cadastradas, apenas é necessário configurar o ip e porta da estação.

Ferramentas

Utilizei o método de Balanceamento retirado do site abaixo, onde explica como instalar.

Balanceamento e Redundancia retirado do Site
How To: Load Balancing & Failover With Dual/ Multi WAN / ADSL / Cable Connections on Linux

Script Gwping para Redundancia
http://blog.taragana.com/wp-content/upload/gwping

Programa Radmin 3 – Servidor e Cliente para Acesso Remoto estações Windows
http://www.radmin.com

Iptables v. 1.4.2
Kernel v. 2.6.24-etchnhalf.1-486
Distro. Debian 4.0

Balanceamento de Link

Criei as tabelas no arquivo rt_tables:

########################### rt_tables ##########################

1 gvt
2 brt

Adicionei as rotas padrão para balancear a carga de saída do tráfego, no meu caso utilizei os links da GVT e BRT, abaixo incluío as regras no arquivo rc.local:

########################### rc.local ###########################

#Limpa as rotas no cache das tabelas
ip route flush table gvt
ip route flush table brt

#Adiciona as rotas dos links para as tabelas
ip route add 192.168.1.0/24 dev eth1 src 192.168.1.10 table gvt
ip route add default via 192.168.1.1 table gvt
ip route add 192.168.2.0/24 dev eth2 src 192.168.2.10 table brt
ip route add default via 192.168.2.1 table brt

#Adiciona a regra de marcação dos links nas tabelas
ip rule add from 192.168.1.10 table gvt
ip rule add from 192.168.2.10 table brt

# Adcionando a Marcação e Prioridade para as Tabelas
ip rule add fwmark 0×10 lookup gvt prio 3
ip rule add fwmark 0×20 lookup brt prio 3

#Esta regra abaixo é responsável pelo balancemento com peso 2:1, porque no meu caso a gvt é 2x mais rápida que o link da brt
ip route add default scope global nexthop via 192.168.1.1 dev eth1 weight 2 nexthop via 192.168.2.1 dev eth2 weight 1

#Limpa as rotas no cache
ip route flush cache

Firewall

###################### firewall ######################

# Variáveis para compartilhamento
### Multi WAN ###
ETH=”eth+”
### Rede Lan ###
LAN=”192.168.0.0/24″

# Ativa o compartilhamento
iptables -t nat -A POSTROUTING -o $ETH -s $LAN -j MASQUERADE

# Ativa acessos que podem ir de uma interface mas que voltam por outra
# Fundamental estar desabilitado para funcionar o roteamento com 2 links.
echo “0″ > /proc/sys/net/ipv4/conf/default/rp_filter

# Tempo máximo que o kernel espera até tentar uma nova rota quando perceber que a atual está morta.
echo “10″ > /proc/sys/net/ipv4/route/gc_timeout

Redundancia

Agora vamos criar a chamada do script “gwping” que é responsável pela Redundancia, optei em coloca-lo na pasta /etc/link, e alterar as permissões do aquivo usando o comando: chmod 755 /etc/link/gwping

#Adcione o comando no arquivo rc.local:
nohup /etc/link/gwping &

No script “gwping” fiz algumas alterações conforme minha necessidade

###################### gwping ######################

#IP Address or domain name to ping. The script relies on the domain being pingable and always available
##Modifique para um endereço mais perto, ou seja mais rápido, neste caso usei o IP da GVT
TESTIP=200.139.127.26

# Relative weights of routes. Keep this to a low integer value.
## Peso das rotas, como o link da Gvt é 2x mais rápido que a BRT, deixei a proporção 2:1
W1=2
W2=1

# Broadband providers name; use your own names here.
## Mudei para o nome das minhas tabelas
NAME1=GVT
NAME2=BRT

# No of repeats of success or failure before changing status of connection.
## No meu caso se houver 4 tentativas sem resposta o link é desabilitado, uma tentativa com sucesso ele reabilida o link. Assim o script não vai trocar a rota padrão e achar que o link caiu quando houver sobrecarga.
SUCCESSREPEATCOUNT=1
FAILUREREPEATCOUNT=4

## Abaixo acrescentei as regras para desmarcar os pacotes caso um link caia, assim os pacotes marcados não retornaram sem resposta.

echo Switching to $NAME2
ip route replace default scope global via $GW2 dev $EXTIF2
#Deleta a Marcação e Prioridade para as Tabelas
ip rule del fwmark 0×10 lookup gvt prio 3
ip rule del fwmark 0×20 lookup brt prio 3
#Limpa as rotas no cache
ip route flush cache

elif [[ $LLS1 -eq 0 && $LLS2 -eq 1 ]]; then
echo Switching to $NAME1
ip route replace default scope global via $GW1 dev $EXTIF1
#Deleta a Marcação e Prioridade para as Tabelas
ip rule del fwmark 0×10 lookup gvt prio 3
ip rule del fwmark 0×20 lookup brt prio 3
#Limpa as rotas no cache
ip route flush cache

elif [[ $LLS1 -eq 0 && $LLS2 -eq 0 ]]; then
echo Restoring default load balancing
#Adiciona a Marcação e Prioridade para as Tabelas
ip rule add fwmark 0×10 lookup gvt prio 3
ip rule add fwmark 0×20 lookup brt prio 3
ip route replace default scope global nexthop via $GW1 dev $EXTIF1 weight $W1 nexthop via $GW2 dev $EXTIF2 weight $W2
#Limpa as rotas no cache
ip route flush cache

Configurando Portas para Acesso Remoto e Sites de Bancos

Configurando Portas da conexão interna para Acesso Remoto e Conexão Segura aos Bancos
Ex. o acesso ao servidor remoto do IP 192.168.0.3 porta 4893

####################### Firewall ######################

#Carregar modulos
modprobe ipt_mark
modprobe ipt_MARK

#Marcando a saída das portas 110(POP3),25(SMTP) pelo link da BRT, as portas 80 e 443 (os bancos bradesco e banrisul), sairão pelo link da GVT, os demais destinos pela porta 80 serão balanceados.
iptables -I PREROUTING -t mangle -i eth0 -s 192.168.0.0/24 -d 0/0 -p tcp -m multiport –dports 110,23,25 -j MARK –set-mark 0×20
iptables -I PREROUTING -t mangle -i eth0 -s 192.168.0.0/24 -d bradesco.com.br -p tcp -m multiport –dports 80,443 -j MARK –set-mark 0×10
iptables -I PREROUTING -t mangle -i eth0 -s 192.168.0.0/24 -d banrisul.com.br -p tcp -m multiport –dports 80,443 -j MARK –set-mark 0×10
iptables -I PREROUTING -t mangle -i eth0 -s 192.168.0.0/24 -d 0/0 -p tcp –dport 443 -j MARK –set-mark 0×10

#Permite o acesso a porta 4893 na estação windows da rede interna, marca a entrada e saída do link, nesse caso usei o link da Gvt
iptables -I FORWARD -p tcp –dport 4893 -j ACCEPT
iptables -t nat -I PREROUTING -i eth1 -p tcp –dport 4893 -j DNAT –to-dest 192.168.0.3
iptables -t mangle -A PREROUTING -p tcp -s 192.168.0.3 –sport 4893 -j MARK –set-mark gvt