Debian 9.6.0 e CONNTRACKD com problemas ao inicializar e sincronizar informações

1. Debian 9.6.0 e CONNTRACKD com problemas ao inicializar e sincronizar informações

Perfil removido
removido

(usa Nenhuma)

Enviado em 04/01/2019 - 10:46h

Olá a todos. Tudo bem?

Gostaria de pedir ajuda a todos da comunidade.
Tenho 2 redes (192.168.1.0/24 e 192.168.2.0/24) onde 2 servidores (primário e secundário) fazem a conexão entre as duas redes.
Para a rede secundário (192.168.2.0/24), os servidores trabalham com os serviços de DNS e DHCP, além do firewall para liberar o acesso a Internet.
Tenho instalado e configurado o KeepAlived para que ambos os servidores tenham o mesmo IP virtual.
O meu problema é quando o sistema está inicializando e o CONNTRACKD não sobe. Por diversas vezes (entre 4 e 6 vezes), o serviço tenta carregar no boot mas aparece como FAIL. Caso eu queira fazer funcionar, eu tenho que inicializar manualmente (sudo systemctl restart conntrackd.service) ou editar as opções do serviço (sudo systemctl edit --full conntrackd.service) onde eu altero o campo "Type" de "notify" para "idle".
Mesmo após o serviço subir, tenho problemas em manter a internet compartilhada, caso um dos servidores fique fora.
Tenho um script de firewall que é usado em ambos os servidores e tem as mesmas regras, porém se o servidor primário fica fora, os clientes vão visualizar o servidor secundário, mas vão perder a conexão com a internet.

Seguem as minhas configurações de CONNTRACKD, KeepAlived e script firewall:

/etc/conntrackd/conntrackd.conf
Sync {
Mode FTFW {
ResendQueueSize 131072
CommitTimeout 180
PurgeTimeout 60
ACKWindowSize 300
DisableExternalCache off
}

Multicast {
IPv4_address 225.0.0.50
Group 3780
IPv4_interface 192.168.2.1 // Servidor primário
Interface enp0s8 // Interface da rede secundária (192.168.2.0/24)
SndSocketBuffer 1249280
RcvSocketBuffer 1249280
Checksum on
}

Options {
TCPWindowTracking on
ExpectationSync on
}
}

General {
Systemd on

Nice -20 // No servidor secundário, esta opção está como -19

HashSize 32768
HashLimit 32768

LogFile on
Syslog on

LockFile /var/lock/conntrack.lock

NetlinkOverrunResync 5
NetlinkEventsReliable on
PollSecs 5

EventIterationLimit 200

UNIX {
Path /var/run/conntrackd.ctl
Backlog 50
}

Filter From Kernelspace {
Protocol Accept {
TCP
SCTP
DCCP
}

Address Ignore {
IPv4_address 127.0.0.1
IPv4_address 192.168.2.1 // Servidor primário
IPv4_address 192.168.2.2 // Servidor secundário
IPv4_address 192.168.2.3 // IP virtual (KeepAlived)
IPv4_address 192.168.2.0/24
}
}

Scheduler {
Type FIFO
Priority 99
}
}


/etc/keepalived/keepalived.conf
namespace_with_ipsets
linkbeat_use_polling

global_defs {
notification_email
{
sysadmin@dominio.tld
}
notification_email_from sysadmin@dominio.tld
smtp_server localhost
smtp_connect_timeout 120
router_id LVS_DEVEL

vrrp_mcast_group4 225.0.0.50

default_interface enp0s8 // Placa da rede interna (192.168.2.0/24)

lvs_sync_daemon enp0s8 1 id 51 maxlen 65535 port 3780 ttl 255 group 192.168.2.0/24

vrrp_garp_master_delay 5
vrrp_garp_master_repeat 5
vrrp_garp_lower_prio_delay 10
vrrp_garp_lower_prio_repeat 1
vrrp_garp_master_refresh 60

vrrp_iptables keepalived

// No secundário, as prioridades estão como -19 (menos 19)
vrrp_priority -20
checker_priority -20
bfd_priority -20

// No secundário, as prioridades estão como 2
vrrp_rt_priority 1
checker_rt_priority 1
bfd_rt_priority 1
}

vrrp_sync_group G1 {
group {
VI1
}
notify_master "/etc/conntrackd/primary-backup.sh primary"
notify_backup "/etc/conntrackd/primary-backup.sh backup"
notify_fault "/etc/conntrackd/primary-backup.sh fault"
}

vrrp_instance VI1 {
interface enp0s8 // Interface da rede 192.168.2.0/24
state MASTER // No servidor secundário, esta opção está como BACKUP
virtual_router_id 51
priority 100 // No secundário, a prioridade está como 99
advert_int 1
authentication {
auth_type PASS
auth_pass MinhaSenha
}
virtual_ipaddress {
192.168.2.3/24
}
}


Script sysadmin-firewall.sh
#!/bin/sh

# Carregando os módulos do IPTables
modprobe ip_tables
modprobe iptable_nat
modprobe iptable_filter
modprobe iptable_mangle
modprobe iptable_nat
modprobe ipt_CLUSTERIP
modprobe ipt_LOG
modprobe ipt_MASQUERADE
modprobe ipt_REJECT
modprobe nf_conntrack
modprobe nf_conntrack_ipv4
modprobe nf_conntrack_ftp
modprobe nf_conntrack_h323
modprobe nf_conntrack_sip
modprobe nf_nat
modprobe nf_tables
modprobe nf_tables_ipv4
modprobe nft_masq
modprobe nft_masq_ipv4
modprobe nft_nat
modprobe nft_redir
modprobe nft_redir_ipv4

# Habilitando IP_FORWARD
echo 1 > /proc/sys/net/ipv4/ip_forward

# O IP externo seria para receber as informações da primeira rede: 192.168.1.0/24
# O IP interno é para a segunda rede: 192.168.2.0/24
if [ $(hostname) = "alpha" ]; then
EXTERNAL_IP=192.168.1.181
INTERNAL_IP=192.168.2.1
else
EXTERNAL_IP=192.168.1.182
INTERNAL_IP=192.168.2.2
fi

# Limpando as regras
iptables -F
iptables -t filter -F
iptables -t mangle -F
iptables -t nat -F
iptables -t raw -F
iptables -t security -F
iptables -X

# Alterando as regras padrão
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD ACCEPT

# LOOPBACK
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Rede primaria
iptables -A INPUT -i enp0s3 -j ACCEPT
iptables -A OUTPUT -o enp0s3 -j ACCEPT
iptables -A FORWARD -i enp0s3 -j ACCEPT

# Rede secundaria
iptables -A INPUT -i enp0s8 -j ACCEPT
iptables -A OUTPUT -o enp0s8 -j ACCEPT
iptables -A FORWARD -i enp0s8 -j ACCEPT

iptables -A INPUT -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT

# Permitindo conexões SSH pela porta 1024
iptables -A INPUT -d $EXTERNAL_IP -i enp0s3 -p tcp --dport 1024 -j ACCEPT
iptables -A OUTPUT -s $EXTERNAL_IP -o enp0s3 -p tcp --dport 1024 -j ACCEPT

# Se um pacote sai da rede secundaria, esse pacote deve voltar para a mesma rede
iptables -A FORWARD -s 192.168.2.0/24 -p tcp -j ACCEPT
iptables -A FORWARD -d 192.168.2.0/24 -p tcp -j ACCEPT

# Permitindo NAT com MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o enp0s3 -j MASQUERADE
iptables -A FORWARD -s 192.168.2.0/24 -i enp0s8 -j ACCEPT

# Conntrackd Multicast
iptables -I INPUT -i enp0s8 -d 225.0.0.50 -p tcp --dport 3780 -j ACCEPT
iptables -I INPUT -i enp0s8 -d 225.0.0.50 -p udp --dport 3780 -j ACCEPT
iptables -I OUTPUT -o enp0s8 -d 225.0.0.50 -p tcp --sport 3780 -j ACCEPT
iptables -I OUTPUT -o enp0s8 -d 225.0.0.50 -p udp --sport 3780 -j ACCEPT

iptables -A FORWARD -s 192.168.2.0/24 -p udp --dport 53 -j ACCEPT # DNS (rede 192.168.2.0/24)
iptables -A FORWARD -d 192.168.2.0/24 -p udp --sport 53 -j ACCEPT # DNS (rede 192.168.2.0/24)
iptables -A FORWARD -s 192.168.2.0/24 -m multiport -p tcp --dport 80,443 -j ACCEPT # WWW + WWWS
iptables -A FORWARD -d 192.168.2.0/24 -m multiport -p tcp --sport 80,443 -j ACCEPT # WWW + WWWS


Um detalhe a mais que gostaria de incluir é o retorno do comando "sudo conntrackd -s" (estatística do CONNTRACKD):
cache internal:
current active connections: 1
connections created: 1 failed: 0
connections updated: 0 failed: 0
connections destroyed: 0 failed: 0

cache external:
current active connections: 0
connections created: 0 failed: 0
connections updated: 0 failed: 0
connections destroyed: 0 failed: 0

traffic processed:
0 Bytes 0 Pckts

multicast traffic (active device=enp0s8):
336 Bytes sent 256 Bytes recv
26 Pckts sent 16 Pckts recv
0 Error send 0 Error recv

message tracking:
0 Malformed msgs 0 Lost msgs


Alguma dica ou ajuda para permitir que os usuários continuem conectados com a internet, mesmo após o servidor primário ficar fora?


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts