Por que o iptables subitamente bloqueou o HAProxy?

2

Eu tenho um servidor Apache atrás de um servidor HAProxy. Hoje cedo, o servidor ficou indisponível e o HAProxy lançou 503 erros no front end. Depois de investigar, parece que o iptables começou a bloquear solicitações do HAProxy, e reiniciar o Apache corrigiu o problema. Preciso de ajuda para descobrir por que o iptables começa aleatoriamente a negar essas solicitações para que eu possa evitar que isso aconteça no futuro.

HAProxy = 10.xxx.xxx.26
Web1 = 10.xxx.xxx.229

entrada de log do iptables:

May 16 22:12:27 web1 kernel: [339449.200414] iptables denied: IN=eth1 
OUT= MAC=40:40:e9:0d:29:96:40:40:25:5e:3d:74:08:00 SRC=10.xxx.xxx.26 DST=10.xxx.xxx.229
LEN=80 TOS=0x00 PREC=0xC0 TTL=64 ID=9773 PROTO=ICMP TYPE=3 CODE=3 [SRC=10.xxx.xxx.229 
DST=10.xxx.xxx.26 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=15095 DF PROTO=TCP SPT=80 DPT=43176 
WINDOW=55 RES=0x00 ACK FIN URGP=0 ]

iptables config (remove as regras do nagios / ssh para legibilidade):

Web1:/var/log# cat /etc/iptables.test.rules 
*filter
:INPUT ACCEPT [5620:459239]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4375:4238642]
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 -i ! lo -j REJECT --reject-with icmp-port-unreachable
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-A INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i eth1 -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 443 -j ACCEPT

-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -j ACCEPT
COMMIT
    
por Matt Beckman 17.05.2011 / 00:46

1 resposta

3

Esta linha é a sua culpada pela entrada de registro:

-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

Mas o material realmente suculento está na saída. O HAProxy está enviando pacotes ICMP para o seu servidor Web1, que é o que você está vendo no log.

O estranho é o tipo ... O HAProxy está enviando o seu servidor web ICMP Tipo 3 / Código 3 pacotes, que é uma resposta informando que uma porta está inacessível. Esta é uma resposta de um pacote anterior proveniente de seu servidor web (porta 80) para o servidor HAProxy (porta Dyn 43176). O que parece ter acontecido foi que o HAProxy encerrou uma sessão e fechou a porta dinâmica antes que o Apache pensasse que a conversa tinha acabado.

A razão pela qual o acima aconteceu, eu não sei. Dê uma olhada nos tempos limite, talvez?

    
por 17.05.2011 / 01:23