Teste de rede [RESOLVIDO]

1. Teste de rede [RESOLVIDO]

Fernanda Montovani Albuquerk
fernanda_mon

(usa Debian)

Enviado em 30/04/2021 - 12:57h

Bom dia Pessoal,
estou montando um script de failover e estou tendo o seguinte problema, no cenario:

Link1 Wan Principal: GW 201.x.x.10 e Placa enp1s0 201.x.x.9
Link2 Wan Secundario: GW 192.168.0.1 e Palca enp2s0 192.168.0.10
Rede Lan: GW: 192.168.100.1 e Plaaca enp3s0 192.168.100.10

Rota padrao é o Link1
[email protected]:/s route -n
Tabela de Roteamento IP do Kernel
Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface
0.0.0.0 201.x.x.10 0.0.0.0 UG 0 0 0 enp1s0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 enp2s0

Até aqui ok,servidor e rede navegando sem erros, teste de ping com placa da rota default

[email protected]:/$ ping -c 2 -I enp1s0 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 201.x.x.9 enp1s0: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=2.08 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=4.47 ms


--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 7ms
rtt min/avg/max/mdev = 2.082/3.387/4.474/0.852 ms
[email protected]:/$

Mas o teste com link secundario nao comunica, Nota! o Link esta online e sem erros

[email protected]:/$ ping -c 2 -I enp2s0 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 192.168.0.10 enp2s0: 56(84) bytes of data.

--- 8.8.8.8 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 58ms
pipe 2
[email protected]:/$

Alguem sabe me dizer por que o teste de ping pela placa do link secundario nao comunica, sendo que ele esta online?









  


2. MELHOR RESPOSTA

Leandro Silva
LSSilva

(usa Outra)

Enviado em 20/05/2021 - 23:06h

fernanda_mon escreveu:

/bin/laden escreveu:

Vê se ajuda: https://lstein.github.io/Net-ISP-Balance/


---
echo 1244394795515721490698P | dc


Ola /bin/laden

analisando o tutorial, ele menciona no teste preliminar de icmp pelas placas de redes,
onde no meu caso a placa que não é a rota default nao ping (perda total de pacotes).

Minha duvida é porque a placa secundaria nao pinga a net

sendo:

Link1 Wan Principal: GW 201.x.x.10 e Placa enp1s0 201.x.x.9 - Rota Default
Link2 Wan Secundario: GW 192.168.0.1 e Palca enp2s0 192.168.0.10
Rede Lan: GW: 192.168.100.1 e Plaaca enp3s0 192.168.100.10



[email protected]:/$ ping -c 2 -I enp1s0 8.8.8.8 - Sucesso

[email protected]:/$ ping -c 2 -I enp2s0 8.8.8.8 - Insucesso


Já tem um tempo que vejo você testando esta feature de failover. Acho legal fazer em Linux mesmo, quando digo isso, quero dizer: tela preta e faca na caveira (ou pinguim, sei lá...).

Bom, com relação ao ping, provavelmente não adicionou a rota pelo gw do link secundário. Provavelmente também não criou as tabelas de roteamento para os links (me perdoe se eu estiver sendo ignorante).

Como faço:

Crio as tabelas de roteamento e ativo o encaminhamento de pacotes (comutação entre interfaces):

echo "200 link1">>/etc/iproute2/rt_tables
echo "201 link2">>/etc/iproute2/rt_tables
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p


Executo este script (comentado) e é chamado loadbalance :

#!/bin/bash

#Vars
#link1
iflink1="ens3"
tablelink1="200"
gwlink1="192.168.10.1"
netlink1="192.168.10.0/24"
pesolink1=1

#link2
iflink2="enp5s5"
tablelink2="201"
gwlink2="192.168.2.1"
netlink2="192.168.2.0/24"
pesolink2=1


#Internal
ifinternal="ens2"
internalnet="192.168.0.0/24"

#Modulos
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ipt_MARK

#Ativar tcp_syncookies, ip_forward e ip_dynaddr (feitos sysctl)
#Deleta rota padrão
ip route del default

#limpa regras tabelas
ip route flush $tablelink1
ip route flush $tablelink2

#Define rotas
ip route add default dev $iflink1 via $gwlink1 table $tablelink1
ip route add default dev $iflink2 via $gwlink2 table $tablelink2

#Define roteamento links
cmd_link1=$(ip rule show | grep $netlink1)
if [ "$cmd_link1" = "" ]; then
ip rule add from $netlink1 lookup $tablelink1
fi
cmd_link2=$(ip rule show | grep $netlink2)
if [ "$cmd_link2" = "" ]; then
ip rule add from $netlink2 lookup $tablelink2
fi

#Define as regras para balanceamento
ip route add default scope global nexthop via $gwlink1 dev $iflink1 weight $pesolink1 nexthop via $gwlink2 dev $iflink2 weight $pesolink2

#Aplica as regras
ip route flush cache


Rodo este daemon (que contém um loop infinito) e é chamado failover:

#!/bin/bash

#Executar no rc.local nohup > /dev/null /etc/firewall/failover &

#Arquivo de Log
LOGFILE=/etc/firewall/log

#Tempo de espera para teste de conexão
tempo_espera=30

#Número de pacote do ping
numero_pacotes=2

#Internet ifaces
iflink1=ens3
iflink2=enp5s5

#Gw's
gwlink1=192.168.10.1
gwlink2=192.168.2.1

#Tables
tablelink1=200
tablelink2=201

#Ping destiny
endereco_ping_link1=8.8.8.8
endereco_ping_link2=8.8.4.4

#Arquivos balance
arquivo=/etc/firewall/loadbalance

#Não alterar
#Variáveis destinadas ao controle
i=0
link1=1
link2=1

#Ativação banlanceamento de links
sh $arquivo > /dev/null

while [ $i -le 10 ];
do

#Determining Routes
ip route add 8.8.8.8/32 via $gwlink1
ip route add 8.8.4.4/32 via $gwlink2

#Gets date
DATE=`date '+%d-%m-%Y %H:%M:%S'`

#########
#Link1###
#########
#Detecta se esta em link up antes de testar ping.
cmd_link1=$(ip addr show $iflink1 | grep state | awk '{print $9}')
if [ "$cmd_link1" != "DOWN" ]
then
cmd_link1_route=$(ip route show table $tablelink1 | awk '{print $2}')
if [ "$cmd_link1_route" != "via" ]
then
ip route add default dev $iflink1 via $gwlink1 table $tablelink1
fi
if (ping -I $iflink1 -c $numero_pacotes $endereco_ping_link1 > /dev/null)
then
link1="1"
else
link1="0"
fi
else
link1="0"
fi

#########
#Link2###
#########
#Detecta se esta em link up antes de testar ping.
cmd_link2=$(ip addr show $iflink2 | grep state | awk '{print $9}')
if [ "$cmd_link2" != "DOWN" ]
then
cmd_link2_route=$(ip route show table $tablelink2 | awk '{print $2}')
if [ "$cmd_link2_route" != "via" ]
then
ip route add default dev $iflink2 via $gwlink2 table $tablelink2
fi
if (ping -I $iflink2 -c $numero_pacotes $endereco_ping_link2 > /dev/null)
then
link2="1"
else
link2="0"
fi
else
link2="0"
fi


#Testing comparations
if [ "$link1" = "1" ] && [ "$link2" = "1" ];then
sh $arquivo > /dev/null
elif [ "$link1" = "0" ] && [ "$link2" = "1" ];then
echo -e "------------------" >> $LOGFILE
echo -e "Evento de Queda..." >> $LOGFILE
echo -e "Link L1 Inativo!" >> $LOGFILE
echo -e $DATE >> $LOGFILE
echo -e "------------------" >> $LOGFILE
ip route del default
ip route add default via $gwlink2
ip route flush cache
elif [ "$link1" = "1" ] && [ "$link2" = "0" ];then
echo -e "------------------" >> $LOGFILE
echo -e "Evento de Queda..." >> $LOGFILE
echo -e "Link L2 Invativo!" >> $LOGFILE
echo -e $DATE >> $LOGFILE
echo -e "------------------" >> $LOGFILE
ip route del default
ip route add default via $gwlink1
ip route flush cache
elif [ "$link1" = "0" ] && [ "$link2" = "0" ];then
echo -e "------------------" >> $LOGFILE
echo -e "Evento de Queda..." >> $LOGFILE
echo -e "Link L1/L2 Invativos!" >> $LOGFILE
echo -e $DATE >> $LOGFILE
echo -e "------------------" >> $LOGFILE
fi

sleep $tempo_espera


done


Como era CENTOS, também desativava o SELINUX (não recomendo sua desativação, caso consiga), o network-manager e o firewalld, porque nesses arquivos mesmo, também tinha um firewall integrado com squid e squidguard.

Bom, espero muito (muito mesmo) que isto te ajude a vencer esta etapa pela qual está passando.

É muito válido ressaltar aqui o que usei como base quando fiz:
https://www.vivaolinux.com.br/artigo/Balanceamento-de-links-Load-balance-Failover-Failback

Créditos para este cara aí!


Boa noite!



3. Re: Teste de rede [RESOLVIDO]

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 30/04/2021 - 13:51h


O endereço do roteador na saída de route -n está 0.0.0.0


4. Re: Teste de rede

Fernanda Montovani Albuquerk
fernanda_mon

(usa Debian)

Enviado em 30/04/2021 - 15:01h

Ola leandropscardua,

a rota padrao esta para a placa enp1s0, ou seja route add default gw 201.x.x.1

e a outra rede assim:

allow-hotplug enp2s0
iface enp2s0 inet static
address 192.168.0.10/24
network 192.168.0.0
gateway 192.168.0.1

Tenho que estudar muito, mas o 0.0.0.0 indica mascaramento aberto na saida?



5. Re: Teste de rede [RESOLVIDO]

Fernanda Montovani Albuquerk
fernanda_mon

(usa Debian)

Enviado em 30/04/2021 - 17:13h

traceroute esta com a seguinte saida

[email protected]:/$ traceroute 192.168.0.1
traceroute to 192.168.0.1 (192.168.0.1), 30 hops max, 60 byte packets
1 c93e6510.virtua.com.br (192.168.0.10) 3076.234 ms !H 3076.191 ms !H 3076.177 ms !H

[email protected]:/$


6. Re: Teste de rede

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 30/04/2021 - 23:30h

O "0.0.0.0"
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 enp2s0
Pacotes endereçados à rede: 192.168.0.0, não precisam passar pelo roteador (0.0.0.0)
------------------------------------------------------------------------------------------------------------------------
0.0.0.0 201.x.x.10 0.0.0.0 UG 0 0 0 enp1s0
Para qualquer outro destino (0.0.0.0), devem sair pela enp1s0,
e ir para o roteador 201.x.x.10, que é o GATEWAY, fato que pode ser observado pela letra G na coluna "opções",
U => UP
G => Gateway.
-----------------------------------------------------------------------------------------------------------------------
Alguem sabe me dizer por que o teste de ping pela placa do link secundario nao comunica, sendo que ele esta online?
Está "UP", mas não é o gateway!

______________________________________________________________________
Att.: Marcelo Oliver



7. Re: Teste de rede [RESOLVIDO]

Fernanda Montovani Albuquerk
fernanda_mon

(usa Debian)

Enviado em 03/05/2021 - 08:38h


Bom dia Pessoal,

muito obrigada pela atenção Marcelo Oliver.

Nota! se eu alterar a rota padrão para o link secundario o teste de ping passa a retornar sucesso, mas
consequentemente para o primario.


8. Re: Teste de rede

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 03/05/2021 - 18:42h

fernanda_mon escreveu:


Bom dia Pessoal,

muito obrigada pela atenção Marcelo Oliver.

Nota!
Se eu alterar a rota padrão para o link secundario o teste de ping passa a retornar sucesso, mas,
consequentemente para o primario.

Fernanda, boa noite.
#------------------------------------------#
PS:. As duas redes foram ativadas somente para testes, normalmente só, utilizo
a wlan0 ativada.
#------------------------------------------#
Testes executados:
eth0 e wlan0 ativas.
netstat -r
Tabela de Roteamento IP do Kernel
Destino Roteador MáscaraGen. Opções MSS Janela irtt Iface
default 10.0.0.1 0.0.0.0 UG 0 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 0 0 0 wlan0
10.0.0.0 0.0.0.0 255.255.255.248 U 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
#-------------------------------------------------------------------------------------------------#
ping -I eth0 -c2 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 10.0.0.3 eth0: 56(84) bytes of data.
....
2 packets transmitted, 2 received, 0% packet loss
#-------------------------------------------------------------------------------------------------#
ping -I wlan0 -c2 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 192.168.1.5 wlan0: 56(84) bytes of data.
...
2 packets transmitted, 2 received, 0% packet loss
#-------------------------------------------------------------------------------------------------#
Para ter a redundância de "Link", a opção que conheço,
é, criar regras no iptables, definindo "onde é a saida", 'por qual rede sai'
#-------------------------------------------------------------------------------------------------#
Acredito que para os dois links funcionarem simultaneamente,
deve ser implementado o "load balance"
#-------------------------------------------------------------------------------------------------#
Veja: https://www.vivaolinux.com.br/artigo/Balanceamento-de-links-Load-balance-Failover-Failback



______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:

Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.


______________________________________________________________________



9. Re: Teste de rede

Fernanda Montovani Albuquerk
fernanda_mon

(usa Debian)

Enviado em 20/05/2021 - 17:06h

Boa tarde msoliver,

no caso eu não quero montar um loadbalance, mas sim um failover,

e se a placa secundaria que nao é a rota padrao nao comunicar com a internet

não vai subir o link backup nunca apos o principal sair, pois o teste de ping sempre vai ser negativo. Me corrija se eu estiver errada.


Achei que seria um topico de muitas respostas, pois eu pensava que quase todo mundo aqui teria um failover implementado.

Nota! Testei varios scripts de failover em topicos aqui, mas realmente na minha infra o teste de ping não funciona.
https://www.vivaolinux.com.br/artigo/Balanceamento-de-links-Load-balance-Failover-Failback

No mais eu agradeço muito pelas msgs.

bjs


10. Re: Teste de rede [RESOLVIDO]

Osama Jr.
/bin/laden

(usa Void Linux)

Enviado em 20/05/2021 - 17:33h

Vê se ajuda: https://lstein.github.io/Net-ISP-Balance/


---
echo 1244394795515721490698P | dc


11. Re: Teste de rede

Fernanda Montovani Albuquerk
fernanda_mon

(usa Debian)

Enviado em 20/05/2021 - 17:40h

/bin/laden escreveu:

Vê se ajuda: https://lstein.github.io/Net-ISP-Balance/


---
echo 1244394795515721490698P | dc


Ola /bin/laden

analisando o tutorial, ele menciona no teste preliminar de icmp pelas placas de redes,
onde no meu caso a placa que não é a rota default nao ping (perda total de pacotes).

Minha duvida é porque a placa secundaria nao pinga a net

sendo:

Link1 Wan Principal: GW 201.x.x.10 e Placa enp1s0 201.x.x.9 - Rota Default
Link2 Wan Secundario: GW 192.168.0.1 e Palca enp2s0 192.168.0.10
Rede Lan: GW: 192.168.100.1 e Plaaca enp3s0 192.168.100.10



[email protected]:/$ ping -c 2 -I enp1s0 8.8.8.8 - Sucesso

[email protected]:/$ ping -c 2 -I enp2s0 8.8.8.8 - Insucesso


12. Re: Teste de rede [RESOLVIDO]

Fernanda Montovani Albuquerk
fernanda_mon

(usa Debian)

Enviado em 21/05/2021 - 08:35h


Bom dia LSSilva,

muito obrigada pelo retorno. Você não foi ignorante, pelo contrario foi bem fofo e detalhista.

O ponto que quero mencionar, é que não quero respostas prontas e sim dicas na solução,
claro se a solução vier vou usa-la e agradecer muito, neste topico acredito eu que muita gente
tem dificuldade na criação de um failover.

O meu problema é que esta tudo em produção, então os teste tem que ter o minimo de impacto negativo
na operação da empresa, ela infelizmente trabalho 24*7 dias da semana.

Pra resolver problemas similares de montar estruturas até entrei um curso em SP numa escola conceituada,
mas a teoria e a pratica la empenhados ainda nao foram capazes de me dar conhecimento sobre este problema.

Mas estou na luta e vou conseguir, vou analisar sua ajuda e tentar resolver este grande problema.

No mais muito obrigada.
bjs



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts