Failover Link

Fórum destinado a discussões gerais e ajuda aos usuários do BrazilFW 2.x, para os idiomas (Inglês, Espanhol, Português e outros)
BrazilFW 2.x - Ayuda en general (todos los idiomas)
Foro de discusión general y ayudar a los usuarios BrazilFW 2.x para idiomas (Inglés, español, portugués y otros)
BrazilFW 2.x - Help in General (All Languages)
Forum for general discussions and help for users of BrazilFW 2.x, for languages (English, Spanish, Portuguese and others)

Failover Link

Mensagempor Anderson Suporte » Dom Jul 05, 2020 1:17 pm

Fala Pessoal,
Uma melhoria que ajudaria bastante no BFW seria se ele reconhecesse a falta de Internet no link quando trabalhamos no cenário com dois ou mais link.
Tipo estou com meu pppoe conectado ao provedor porém não tenho link ativo (não consigo pingar para o google.com por exemplo), o BFW não tirar de rota esse link, apenas se meu pppoe cair ou não conectar, muito comum na minha região a internet cair, porém o pppoe continuar conectado ao provedor (indicando que servidor pppoe do meu provedor esta ativo, porem ele esta sem link). Não sei como funciona mais não mim engano o load balance da TP-Link consegui funcionar bem em relação a isso (talvez verifique por ping a conexão, não sei).
Aproveitando o assunto, uma ideia que acho que também ajudaria bastante era se conseguisse avisar via e-mail quando um link cair, parecido com o que o WatchDog Mail faz com os equipamentos da minha rede lan.
Avatar do usuário
Anderson Suporte
BFW Curious
 
Mensagens: 24
Registrado em: Qui Jun 09, 2016 8:29 am
BrazilFW Box:

Re: Failover Link

Mensagempor the-mask » Seg Jul 13, 2020 2:47 pm

Salve Anderson Suporte,

A muito tempo atrás eu passava por um problema no gráfico de tráfego da internet que não exibia corretamente os dados, não vou lembrar agora de onde eu tirei a solução, porém, havia uma indicação de incluir a seguinte instrução no final do arquivo /etc/brazilfw/brazilfw.cfg

Código: Selecionar todos
PING_IPS='8.8.8.8'


O IP apresentado aqui é o do dns do google, porém, acredito que pode ser usado qualquer ip alcançado pelo link, aqui uso o dns da operadora, não possuo PPPoE, todavia, teste esta solução reporte os resultados.

Que a força esteja com você!
Avatar do usuário
the-mask
BFW Participative
 
Mensagens: 107
Registrado em: Qua Fev 20, 2013 11:56 am
Localização: Belém - Pará - Brasil
BrazilFW Box: Host -> I5-2310 2.80 GHz - 4 GB RAM - 500 GB HDD - Linux Mint 17.1 Cinnamon
Gateway -> Celeron 430 1.80GHz - 1GB RAM - 40 GB HDD - BFW 3.0.258 - DNS, Cache, DHCP, QOS, Webserver, Samba

Re: Failover Link

Mensagempor Lenobare » Dom Jul 19, 2020 12:54 pm

Anderson, eu entendi o que precisa mas tem que desenvolver um addon para tal feito, pois manualmente é simples executar mas para isso ser automático, como é um Watchdog, tem de ser "fabricado" o addon para isso avisar agente.
Se alguém tiver uma dica para verificar quando a internet pare mesmo linkada sem queda, nos informe porque ainda não consegui pingar e mandar via Cron um comando para meu email ou coisa do tipo.
Obrigado a todos.
Estude, estude e... continue estudando.
Avatar do usuário
Lenobare
BFW Full Associate
BFW Beneméritos
BFW Manager
BFW Moderator
BFW HaarpCache
BFW Squid 3.5.x
 
Mensagens: 1682
Registrado em: Qua Ago 28, 2013 8:45 pm
Localização: Brasília
BrazilFW Box: Maquina: Fisica
CPU:Xeon HP ML30
Memória 8GB - 2Links
BFW 3.0.262 64 Bits
HD 300GB 15k,
Serviços Ativos: Control Mac, VPN, Squid (Cache),
Addons: Haro, Whatchdog. Squid 3.5.27, Lognet e Samba.

Re: Failover Link

Mensagempor Paulo2 » Seg Jul 20, 2020 11:53 am

É sobre o BFW 2 ou 3? :)
Pesquise o fórum.
As chances de sua dúvida já ter sido respondida são de 93,57%

Cooperação com os moderadores é indispensável,
eles trabalham para manter o bom funcionamento do fórum.
Por favor, leia as regras do Forum.
Resolveu, então encerre corretamente seu tópico.
Avatar do usuário
Paulo2
BFW Team
BFW Beneméritos
 
Mensagens: 721
Registrado em: Qui Set 21, 2006 1:57 am
BrazilFW Box: Máquina: Física
CPU: Pentium 233
Memória: 128MiB / 1 Link
BFW 2.32.2
Serviços Ativos: bandwidthd, thttpd, crond
pure-ftpd, logread, squid, bwmon, upnpd
Addons: bandwidthd, edited-root, iptraf
libcrypto, libgd, libiconv, libmagic, libpng
lynx, msmtp, nmap-lib, nmap, pure-ftpd
squid, tcpdump, upnp

Re: Failover Link

Mensagempor Lenobare » Seg Jul 20, 2020 10:46 pm

Paulo2 escreveu:É sobre o BFW 2 ou 3? :)

Paulo, boa note. Eu me referi ao Bfw 3x, mas você que é bom no BFW 2x e se tiver alguma forma de fazer o que precisamos na versão 2x, poderia exemplificar e eu corro atras para adaptar ao 3x.
A disposição.
Estude, estude e... continue estudando.
Avatar do usuário
Lenobare
BFW Full Associate
BFW Beneméritos
BFW Manager
BFW Moderator
BFW HaarpCache
BFW Squid 3.5.x
 
Mensagens: 1682
Registrado em: Qua Ago 28, 2013 8:45 pm
Localização: Brasília
BrazilFW Box: Maquina: Fisica
CPU:Xeon HP ML30
Memória 8GB - 2Links
BFW 3.0.262 64 Bits
HD 300GB 15k,
Serviços Ativos: Control Mac, VPN, Squid (Cache),
Addons: Haro, Whatchdog. Squid 3.5.27, Lognet e Samba.

Re: Failover Link

Mensagempor Paulo2 » Ter Jul 21, 2020 1:42 am

Lenobare escreveu:
Paulo2 escreveu:É sobre o BFW 2 ou 3? :)

Paulo, boa note. Eu me referi ao Bfw 3x, mas você que é bom no BFW 2x e se tiver alguma forma de fazer o que precisamos na versão 2x, poderia exemplificar e eu corro atras para adaptar ao 3x.
A disposição.

Pois é ainda uso o BFW2 rs minha máquina não instala o 3, é a máquina do perfil.

O Anderson não deixou claro qual BFW ele usa e também não tem a versão no perfil dele, e o the mask
fez referência a "/etc/brazilfw/brazilfw.cfg" por isso achei que era o BFW 3 mesmo.

Não tenho experiência com pppoe mas o BFW2 tem scripts pra conectar e desconectar via pppoe.
Seguindo a tua idéia, uma tarefa no cron com um ping pra ver se conecta pode funcionar.
Quando o ping falhar o BFW manda um email. Eu uso o addon msmtp pra mandar email
nesse esquema com algumas tarefas no cron e funciona 100%.
Pesquise o fórum.
As chances de sua dúvida já ter sido respondida são de 93,57%

Cooperação com os moderadores é indispensável,
eles trabalham para manter o bom funcionamento do fórum.
Por favor, leia as regras do Forum.
Resolveu, então encerre corretamente seu tópico.
Avatar do usuário
Paulo2
BFW Team
BFW Beneméritos
 
Mensagens: 721
Registrado em: Qui Set 21, 2006 1:57 am
BrazilFW Box: Máquina: Física
CPU: Pentium 233
Memória: 128MiB / 1 Link
BFW 2.32.2
Serviços Ativos: bandwidthd, thttpd, crond
pure-ftpd, logread, squid, bwmon, upnpd
Addons: bandwidthd, edited-root, iptraf
libcrypto, libgd, libiconv, libmagic, libpng
lynx, msmtp, nmap-lib, nmap, pure-ftpd
squid, tcpdump, upnp

Re: Failover Link

Mensagempor robsonzornitta » Dom Ago 23, 2020 2:26 pm

Se for no BFW 3.x sim! Ele tem Watchdog e funciona perfeitamente, só tem que fazer algumas alterações para poder funcionar com os ips de pings que a suas operadoras possam pingar. Até pouco tempo atrás eu não tinha a informação de que poderia colocar PING='8.8.8.8' no brazilfw.cfg para corrigir isso, por isso venho apresentar a solução que eu uso, alterando o arquivo do watchdog.

1) Crie um arquivo dentro de /etc/brazilfw/custom, chamado route-monitor.

2) Dentro dele cole isto:
Código: Selecionar todos
#!/bin/sh

# Copyright (C) 2012 Washington Rodrigues <woshman@brazilfw.com.br>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

. /etc/brazilfw/brazilfw.cfg
. /lib/system-functions

export APP_NAME="route-monitor"

[ -z "$PING_IPS" ] && PING_IPS="8.8.8.8,208.67.222.222"
[ -z "$PING_WAIT" ] && PING_WAIT="5"
[ -z "$CHECK_INTERVAL" ] && CHECK_INTERVAL="60"

ROUTECHANGE="/var/run/route.change"
ROUTEFILE="/proc/net/route"
CHK_CONN="/var/state/check_connection.lst"
SMFILE="/var/run/smartroute.reload"
EXTIPFILE="/var/state/externaladdr.inet"
NETRELOAD="/tmp/network.reload"
EXTIPFILE="/var/state/externaladdr.inet"
IPROUTE="ip route replace default table main proto static "

ping_remote() {
   [ -z "$1" ] && exit
   if [ ! -e "$CHK_CONN" ]; then
      for IP in $(split "$PING_IPS" ","); do
         echo "$IP" >> $CHK_CONN
      done
   fi
   [ ! -e "$CHK_CONN" ] && exit
   CHK_LIST=$(cat $CHK_CONN)
   CCOUNT=1
   NET_STATUS=1
   for SRV in $CHK_LIST; do
      ping $SRV -I $1 -c1 -w$PING_WAIT >/dev/null 2>&1
      RESP=$?
      if [ "$RESP" = 0 -a "$CCOUNT" -gt 1 ]; then
         sed -i "$CCOUNT"'d;1i\'$SRV $CHK_CONN
      fi
      if [ "$RESP" = 0 ]; then
         NET_STATUS=0   
         break
      fi
      CCOUNT=$((CCOUNT+1))
   done
   echo $NET_STATUS
}

ping_gateway() {
   ping $1 -I $2 -c1 -w$PING_WAIT >/dev/null 2>&1
   echo $?
}

rm -fr $CHK_CONN >/dev/null 2>&1

while :; do
   CHK_ROUTE="$(awk '$4~/003/{print $3}' $ROUTEFILE)"
   if [ -z "$CHK_ROUTE" ]; then
      ROUTEVAR="$IPROUTE $(find /tmp -type f -name \*.inet -exec grep -il "LINK_CONNECTION='internet'" {} \; | \
      while read FILENAME; do
         . $FILENAME
         if [ "$LINK_TYPE" = "pppoe" -o "$LINK_TYPE" = "ppp" ]; then
            INTERFACE_PHYSICAL="$INTERFACE_PPP"
         else
            . /tmp/$PHYSICAL_ALIAS.phy
            [ -e "/tmp/$PHYSICAL_ALIAS.veth" ] && . /tmp/$PHYSICAL_ALIAS.veth
         fi
         [ "$LOADBALANCE" != "no" ] && echo -n "nexthop via $GATEWAY dev $INTERFACE_PHYSICAL weight $WEIGHT "
         sed -i s/STATUS.*/STATUS=\'up\'/g $FILENAME >/dev/null 2>&1
         log_connection "$(basename $FILENAME .inet): $LINK_TYPE connection up"
      done)"
      $ROUTEVAR >/dev/null 2>&1
      echo "" > $ROUTECHANGE
   else
      ROUTEVAR="$IPROUTE $(find /tmp -type f -name \*.inet -exec grep -il "LINK_CONNECTION='internet'" {} \; | \
      while read FILENAME; do
         . $FILENAME
         if [ "$LINK_TYPE" = "pppoe" -o "$LINK_TYPE" = "ppp" ]; then
            [ "$LOADBALANCE" != "no" ] && echo -n "nexthop via $GATEWAY dev $INTERFACE_PPP weight $WEIGHT "
         else
            . /tmp/$PHYSICAL_ALIAS.phy
            [ -e "/tmp/$PHYSICAL_ALIAS.veth" ] && . /tmp/$PHYSICAL_ALIAS.veth
            if [ "$(ping_gateway "$GATEWAY" "$IPADDR")" = 0 ]; then
               NEW_STATUS="wait"
               if [ "$(ping_remote "$IPADDR")" = 0 ]; then
                  [ "$LOADBALANCE" != "no" ] && echo -n "nexthop via $GATEWAY dev $INTERFACE_PHYSICAL weight $WEIGHT "
                  NEW_STATUS="up"
               fi
            else
               NEW_STATUS="down"   
            fi
            [ "$NEW_STATUS" != "up" -a "$LINK_PERSISTENT" = "yes" -a "$LOADBALANCE" != "no" ] && echo -n "nexthop via $GATEWAY dev $INTERFACE_PHYSICAL weight $WEIGHT "
            if [ "$STATUS" != "$NEW_STATUS" ]; then
               log_connection "$(basename $FILENAME .inet): $LINK_TYPE connection $NEW_STATUS"
               $(echo "sed -i s/STATUS.*/STATUS='$NEW_STATUS'/g $FILENAME")
               echo "" > $ROUTECHANGE
            fi
         fi
      done)"
   fi
   if [ -e "$ROUTECHANGE" ]; then
      rm -fr $ROUTECHANGE >/dev/null 2>&1
      $ROUTEVAR >/dev/null 2>&1
      echo "$(find /tmp -type f -name \*.inet -exec grep -il "LINK_CONNECTION='internet'" {} \; | while read FILENAME; do
         EXTIP="0.0.0.0"
         . $FILENAME
         [ "$STATUS" = "up" ] && [ "$(is_internalip $IPADDR)" != "true" ] && EXTIP=$IPADDR || EXTIP=$(get_wan_ip $IPADDR)
         echo "$(basename $FILENAME .inet):$EXTIP"
      done)" > $EXTIPFILE
      /etc/init.d/ipupdate reload >/dev/null 2>&1
      /etc/rc.d/rc.accept >/dev/null 2>&1
      /etc/rc.d/rc.forward >/dev/null 2>&1
      /usr/local/sbin/route-mark >/dev/null 2>&1
      /etc/rc.d/rc.vpn-client >/dev/null 2>&1
   fi
   if [ -e "$SMFILE" ]; then
      rm -fr $SMFILE >/dev/null 2>&1
      /etc/rc.d/rc.route >/dev/null 2>&1
   fi
   if [ -e "$NETRELOAD" ]; then
      rm -fr $NETRELOAD >/dev/null 2>&1
      /etc/rc.d/rc.inet
   fi
   [ -e "/tmp/time.syncfail" ] && /etc/rc.d/rc.time >/dev/null 2>&1 &
   [ -e "/var/run/squid.reload" ] && /etc/init.d/squid reload >/dev/null 2>&1 &   
   sleep $CHECK_INTERVAL
done



Onde está [ -z "$PING_IPS" ] && PING_IPS="8.8.8.8,208.67.222.222", ou seja, onde se encontram os ips de ping, mude para ips que vc tenha certeza de que podem ser pingados pela sua operadora, os ips padrões que vem no BFW são alguns ips da Embratel que nem todas as operadores conseguem pingar, justamente por causa de briga de operadoras (sim isso realmente existe e é mais comum do que vcs pensam), por isso precisamos adequar os ips aos que possam ser pingados.

3) No Script de Inicialização do BFW ou rc.local, cole isso:
Código: Selecionar todos
#Resolve Problema do Router Monitor
chmod 777 /etc/brazilfw/custom/route-monitor
rm /usr/local/sbin/route-monitor
cp /etc/brazilfw/custom/route-monitor /usr/local/sbin/
/etc/rc.d/rc.inet
/etc/rc.d/rc.route


Aqui diz basicamente para cada vez que inicializar o BFW substituir o arquivo route-monitor pelo que criamos no diretório custom, damos privilégios de execução e reiniciamos as interfaces de rede e a tabela de rotas.

Pronto, este é o método que eu uso para isso, é mais trabalhoso, é mais complicado mas, funciona perfeitamente!

Espero ter ajudado! :o!
Seja Livre! Use Linux!
Avatar do usuário
robsonzornitta
BFW Very Participative
 
Mensagens: 310
Registrado em: Ter Ago 10, 2010 10:36 pm
Localização: Curitiba - Paraná
BrazilFW Box:


Voltar para BrazilFW 2.x - Ajuda em Geral (Todas as Línguas)

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes