Não vou entrar no mérito da instalação do sistema operacional. Vou levar em consideração que o sistema já esteja instalado.
Os dois links que o cliente possui são de operadoras distintas e o modem da mesma, se encarrega de fazer a discagem PPPoE. Os dois links estão conectados a um Switch e o servidor também.
Essa é uma configuração semelhante em pequenas empresas e escritórios que não têm tantos recursos para manter uma infraestrutura mais adequada.
As informações que nos foram passadas pelo cliente a respeito do link, são:
Link 1 - Primários:
- IP do modem: 10.0.2.2
- Máscara: 255.255.255.0
- Rede: 10.0.2.0
- Interface: eth0
Link 2 - Secundário:
- IP do modem: 192.168.1.1
- Máscara: 255.255.255.0
- Rede: 192.168.1.0
- Interface: eth1
Rede local
Com essas informações, já podemos configurar as interfaces de rede do servidor. A máquina possui três interfaces de rede, onde duas são para os links de Internet e a outra para a rede local. O servidor precisa estar com os IPs configurados como fixo. Esta configuração deverá ser feita no arquivo
/etc/network/interfaces.
# vi /etc/network/interfaces
E a configuração ficaria da seguinte forma:
# Link Primário
auto eth0
iface eth0 inet static
address 10.0.2.254
netmask 255.255.255.0
network 10.0.2.0
broadcast 10.0.2.255
# Link Secundário
auto eth1
iface eth1 inet static
address 192.168.1.254
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
# Rede Local
auto eth2
iface eth2 inet static
address 10.10.10.254
netmask 255.255.255.0
network 10.10.10.0
broadcast 10.10.10.255
Salve o arquivo e saia do mesmo.
Para que as interfaces de redes sejam configuradas, execute o comando:
# /etc/init.d/networking restart
Verifique se as três placas subiram com as devidas configurações.
# ifconfig
Se por algum motivo não estiver apresentando informações dos IPs nas placas, ou se elas não subiram, execute o comando abaixo que analisa o conteúdo do arquivo
/etc/network/interfaces e reconfigure as mesmas com as informações contidas neste arquivo:
# ifdown eth0
# ifup eth0
# ifdown eth1
# ifup eth1
# ifdown eth2
# ifup eth2
Configurando o FailOver dos links
Este serviço vai permitir que caso haja uma falha no primeiro link, o secundário possa assumir até o retorno do primário.
Neste cenário, há dois gateways:
- 10.0.2.2 (Primário)
- 192.168.1.1 (Secundário)
E abaixo, está o script utilizado para fazer o FailOver dos dois links:
#!/bin/bash
#---------------------------#
# CONFIGURAÇÃO DOS GATEWAYS #
#---------------------------#
GW1=10.0.2.2
GW2=192.168.1.1
LOG=/root/rc.firewall.log
#------------------------------#
# INÍCIO DA FUNÇÃO DE FAILOVER #
#------------------------------#
# Aqui optei em por uma função para deixar a estrutura do
# script mais organizada e legível. É de suma importância
# que você esteja familiarizado com o shell script
failover ()
{
# Criação de um loop infinito para testar a disponibilidade
# dos links de internet
while [ 1 ]
do
# Altera sempre para o gateway padrão dentro da tabela
# main de roteamento, ou seja, quando o link primário voltar,
# automáticamente a navegação volta para este
/sbin/ip route replace default via $GW1
# Neste for, o comando dig retornará os dois IPs relacionados
# ao site do UOL. Você poderia por qualquer site aí, porém o UOL
# retorna dois IPs que serão utilizados pelo script para saber
# se o link de internet principal está fora
for i in `dig +short uol.com.br`
do
# Verificando a comunicação do link de internet
/bin/ping -c 1 $i
done
# Caso o resultado do comando anterior seja 0 (zero), o link
# de internet principal está ok. Se for 1 (um) houve falha no comando
# deduzindo assim ausência de conexão. Quem vai determinar isso é o
# comando echo $?. Mais abaixo, haverá um if para testar as condições
STATUS_CMD_LINK=`echo $?`
if [ $STATUS_CMD_LINK -eq 0 ]; then
# Caso haja sucesso no teste do comando do ping
# as regras para o compartilhamento de internet serão inseridas
/sbin/iptables -F
/sbin/iptables -t nat -F
/sbin/modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
else
# Se o link falhar, os comandos mais abaixo farão a limpeza
# das regras de iptables e irão configurar o segundo link de internet
# e será criado um arquivo de log informando quando houve a queda
echo "_________________________" >> $LOG
echo " " >> $LOG
echo "# LINK SECUNDARIO ATIVO.: `date +%d/%m/%y-%H:%M:%S`">> $LOG
echo " " >> $LOG
echo "_________________________" >> $LOG
/sbin/ip route replace default via $GW2
/sbin/iptables -F
/sbin/iptables -t nat -F
/sbin/modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
fi
# A cada 2 minutos (120 segundos) será feito um teste no link
# principal para constar se o mesmo encontra-se no ar.
sleep 120
done
}
####### CHAMA A FUNÇÃO ########
failover
Lembre-se de salvar o seu script e dar permissão de execução ao mesmo:
# chmod +x failover.sh
É interessante deixar o script sendo executado em segundo plano, para liberar o terminal para outras atividades.
# ./failover.sh
Não esqueça de pôr a execução do script na inicialização do sistema operacional. Edite o arquivo
/etc/rc.local e insira o caminho do script:
# vi /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/root/failover.sh &
exit 0
Após salvar o arquivo, reinicie a máquina e veja se o script estará rodando com o comando:
# ps -auxf | grep failover
Pronto! Os links já estão configurados e liberando a Internet para a rede local. Vamos agora configurar o serviço de DHCP e, por último, acrescentar mais algumas regras às tabelas do IPtables.