Redundância tem falhas

1. Redundância tem falhas

adir castro
adircastro

(usa Debian)

Enviado em 18/08/2007 - 21:59h

Estou usando outro script que adaptei para o meu caso.
Quando inicio com o link princial sozinho, ele atende. Quando coloco o link reserva, ele assume em poucos minutos o lugar do principal, e aí se retiro o link reserva, fico sem conexão.

Algumas linhas que estão comentadas não atrapalham o script, aliás, com elas estava dando muitos erros, principalmente durante o restart do iptables.conf.

Alguém pode me dá uma luz?

Segue abaixo as configurações:
cyber:/etc/init.d# cat iptables.conf
#!/bin/bash
# Legenda
# eth0 -> Rede interna (192.168.0.14/24)
# eth1 -> Principal (192.168.100.14/24)
# eth2 -> Reserva (10.10.0.186/30)
# Variaveis
DNS1="200.241.247.1"
DNS2="200.228.94.130"
# Carregando os modulos basicos:
echo -n "Carregando os modulos..."
modprobe ip_tables
modprobe iptable_filter
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ipt_LOG
modprobe ipt_state
modprobe ipt_MASQUERADE
echo " [OK]"
# Resetando o Firewall:
echo -n "Resetando o firewall..."
iptables -F
iptables -Z
iptables -X
iptables -t nat -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
echo " [OK]"
# Habilitando o roteamento de pacotes:
echo -n "Habilitando o roteamento..."
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo " [OK]"
# Liberando a chain INPUT para o localhost:
echo -n "Liberando acesso do localhost..."
iptables -A INPUT -p ALL -s 127.0.0.1 -i lo -j ACCEPT
iptables -A INPUT -p ALL -s 192.168.0.14 -i lo -j ACCEPT
iptables -A INPUT -p ALL -s 192.168.100.14 -i lo -j ACCEPT
iptables -A INPUT -p ALL -s 10.10.0.186 -i lo -j ACCEPT
echo " [OK]"
# Otimizando o firewall:
echo -n "Otimizando o roteamento..."
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
echo " [OK]"
# Liberando resposta dos servidores DNS:
echo -n "Liberando servidores DNS..."
iptables -A INPUT -p udp -s 192.168.0.0/24 --sport 53 -d $DNS1 -j ACCEPT
iptables -A INPUT -p udp -s 192.168.0.0/24 --sport 53 -d $DNS2 -j ACCEPT
echo " [OK]"
# DHCP Server (TEM QUE SER OPCIONAL)
#echo -n "Liberando servidor DHCP..."
#iptables -A INPUT -p udp -s 192.168.0.0/24 --sport 79 -d 192.168.0.1 -j ACCEPT
#echo " [OK]"
# Descartar pacotes fragmentados:
echo -n "Bloqueando pacotes fragmentados..."
iptables -A INPUT -i eth1 -f -j LOG --log-prefix "Pacote fragmentado: "
iptables -A INPUT -i eth1 -f -j DROP
iptables -A INPUT -i eth2 -f -j LOG --log-prefix "Pacote Fragmentado: "
iptables -A INPUT -i eth2 -f -j DROP
echo " [OK]"
# Bloqueando ataques do tipo SPOOF de IP:
#echo -n "Bloqueando spoofing..."
#iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
#iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
#iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP
#iptables -A INPUT -i eth1 -s 224.0.0.0/4 -j DROP
#iptables -A INPUT -i eth1 -s 240.0.0.0/5 -j DROP
#echo " [OK]"
# Liberando alguns acessos por ping:
echo -n "Liberando acesso por ping..."
iptables -A INPUT -p icmp --icmp-type 8 -i eth0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -p icmp -s 192.168.0.0/24 -d 0/0 -j ACCEPT
echo " [OK]"
# Regra para SSH: (opcional)
#echo -n "Liberando acesso ao SSH..."
#iptables -A INPUT -p TCP --dport 22 -j ACCEPT
#echo " [OK]"
# Regras do FORWARD
# Descarta pacotes invalidos:
echo -n "Descartando pacotes invalidos para reenvio..."
iptables -A FORWARD -m state --state INVALID -j DROP
echo " [OK]"
# Mantendo conexoes ativas:
echo -n "Manutencao de conexoes ativas..."
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
echo " [OK]"
# Liberando acesso ao DNS para a rede interna (Email):
echo -n "Liberando DNS para rede interna..."
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -p udp -s 192.168.0.0/24 -d $DNS1 --dport 53 -j ACCEPT
iptables -A FORWARD -p udp -s 192.168.0.0/24 -d $DNS2 --dport 53 -j ACCEPT
iptables -A FORWARD -p udp -s $DNS1 --sport 53 -d 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -p udp -s $DNS2 --sport 53 -d 192.168.0.0/24 -j ACCEPT
echo " [OK]"
# Fazendo mascaramento de enderecos IP (NAO NAT):
# OBS: essa regra eh mutuamente excludente com a proxima, a do NAT
# ou seja, escolha uma das duas
echo -n "Habilitando o mascaramento..."
#iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
echo " [OK]"
# Marcando pacotes
echo -n "Marcando pacotes..."
iptables -A PREROUTING -t mangle -s 192.168.0.0/24 -d 0/0 -j MARK --set-mark 3
echo " [OK]"
# Desabilitando o filtro de pacotes do martian source
echo -n "Desligando rp_filter..."
for eee in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 0 > $eee
done
echo " [OK]"
# Definindo regras de balanceamento de Link:
echo -n "Balanceando links..."
# principal #1
ip route add 192.168.100.0/24 dev eth1 src 192.168.100.14 table principal
#ip route add 192.168.0.0/24 via 192.168.0.1 table principal
ip route add default via 192.168.100.100 table principal
# reserva #2
ip route add 10.10.0.184/30 dev eth2 src 10.10.0.186 table reserva
#ip route add 192.168.0.0/24 via 192.168.0.1 table reserva
ip route add default via 10.10.0.185 table reserva
# setando link principal na tabela principal de roteamento
ip route add 192.168.100.0/24 dev eth1 src 192.168.100.14
ip route add 10.10.0.184/24 dev eth2 src 10.10.0.186
# setando a rota preferencial
ip route add default via 192.168.100.100
# regras das tabelas
ip rule add from 192.168.100.14 table principal
ip rule add from 10.10.0.186 table reserva
# balanceamento de link
ip rule add fwmark 3 lookup links prio 3
ip route add default table links nexthop via 192.168.100.100 dev eth1 weight 1 nexthop via 10.10.0.185 dev eth2 weight 1
# flush no roteamento
ip route flush cache
echo " [OK]"
sleep 3
-------------
cyber:/etc# cat 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.
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
#
touch /var/lock/subsys/local

echo "Inicializando conexao com a internet.."
/sbin/ifdown eth1
/sbin/ifdown eth2

echo "Iniclizando PRINCIPAL"
/sbin/ifup eth1
/sbin/route add default gw 192.168.100.100
# /etc/firewall/ip-velox.pl
/etc/init.d/iptables.conf

echo "Inicializando RESERVA"
/sbin/ifup eth2
/sbin/route del default gw 192.168.100.100
/sbin/route add default gw 10.10.0.185
# /etc/firewall/ip-velox.pl
/etc/init.d/iptables.conf

/sbin/route del default gw 10.10.0.185

echo "Configurando o firewall"
/etc/iptables.conf
# /etc/firewall/firewall.sh
exit 0
-----------------
cyber:/etc/init.d# ./iptables.conf restart
Carregando os modulos... [OK]
Resetando o firewall... [OK]
Habilitando o roteamento... [OK]
Liberando acesso do localhost... [OK]
Otimizando o roteamento... [OK]
Liberando servidores DNS... [OK]
Bloqueando pacotes fragmentados... [OK]
Liberando acesso por ping... [OK]
Descartando pacotes invalidos para reenvio... [OK]
Manutencao de conexoes ativas... [OK]
Liberando DNS para rede interna... [OK]
Habilitando o mascaramento... [OK]
Marcando pacotes... [OK]
Desligando rp_filter... [OK]
Balanceando links...RTNETLINK answers: File exists
RTNETLINK answers: Invalid argument
RTNETLINK answers: File exists
[OK]

Se restartar o iptables, a mensagem acima aparece e o serviço pára, e só volta se for resetado.
Depois de um certo tempo, com os dois links juntos, o reserva assume o lugar do principal. Se desconecto o reserva, o principal não volta... fico sem conexão.
O proxy também só funciona se for indicado no navegador.


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts