Periodicamente, algo estranho acontece com a nossa VM.
Em algum momento, não é possível enviar solicitações para serviços. Mesmo que consul ou redis estejam funcionando, ocorreu um erro de tempo limite:
consul members
Error connecting to Consul agent: dial tcp 127.0.0.1:8400: getsockopt: connection timed out
e
/usr/local/src/redis-3.0.7/src/redis-cli -p 6379
Could not connect to Redis at 127.0.0.1:6379: Connection timed out
Mas se eu reiniciar o firewall com apf -r
, funcionará.
Eu salvei as regras do iptables no arquivo antes de reiniciar o apf, encontrei algumas regras estranhas:
Chain RESET (0 references)
pkts bytes target prot opt in out source destination
0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 reject-with tcp-reset
Chain PROHIBIT (0 references)
pkts bytes target prot opt in out source destination
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
100% de certeza de que não adicionei essas regras. A única coisa que encontrei em logs:
Jul 15 06:25:01 journey-test python3[1090]: 2018/07/15 06:25:01.935420 INFO Successfully added Azure fabric firewall rules
Jul 15 06:25:01 journey-test python3[1090]: 2018/07/15 06:25:01.963119 INFO Firewall rules:
Jul 15 06:25:01 journey-test python3[1090]: Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
Jul 15 06:25:01 journey-test python3[1090]: pkts bytes target prot opt in out source destination
Jul 15 06:25:01 journey-test python3[1090]: Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
Jul 15 06:25:01 journey-test python3[1090]: pkts bytes target prot opt in out source destination
Jul 15 06:25:01 journey-test python3[1090]: Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
Jul 15 06:25:01 journey-test python3[1090]: pkts bytes target prot opt in out source destination
Jul 15 06:25:01 journey-test python3[1090]: 0 0 ACCEPT tcp -- * * 0.0.0.0/0 168.63.129.16 owner UID match 0
Jul 15 06:25:01 journey-test python3[1090]: 0 0 ACCEPT tcp -- * * 0.0.0.0/0 168.63.129.16 ctstate INVALID,NEW
Alguma dica? Como posso encontrar quem adicionou as regras REJECT
?
UPD: Em /etc/waagent.conf encontrei OS.EnableFirewall=y
. Na nossa antiga VM, não existe essa regra. E toda a nova VM implantada tem essa regra. Portanto, o Azure alterou o comportamento padrão desse agente. E agora isso pode mudar as regras do firewall.
E, suponho, é a raiz do nosso problema.