Столкнулись с проблемой. Обнаружили, что UFW на серверах иногда блокирует разрешённые пакеты. Т.е. всё работает, но иногда не работает. Долго этой проблемы не замечали, пока она не коснулась базы данных.
UFW (Uncomplicated Firewall) — это интерфейс iptables, предназначенный для упрощения процесса настройки брандмауэра.
iptables — утилита командной строки, которая является стандартным интерфейсом управления работой межсетевого экрана netfilter для ядер Linux, начиная с версии 2.4.
netfilter — межсетевой экран, встроен в ядро Linux с версии 2.4.
В логе можно обнаружить сообщения вида:
[UFW BLOCK] IN=eno1 OUT= MAC=[MAC адрес] SRC=[IP источника] DST=[IP сервера] LEN=52 TOS=0x08 PREC=0x20 TTL=51 ID=63422 PROTO=TCP SPT=6738 DPT=5432 WINDOW=4093 RES=0x00 ACK FIN URGP=0
Интернет подсказал куда копать:
iptables -nL -v | grep "ctstate INVALID"
И видим, что срабатывают дропы на кривых пакетах. Первый столбец: pkts — пакеты, второй: bytes — байты.
Причина появления кривых пакетов неизвестна. И разбираться в этом нет времени и желания. Самый простой способ — отключить это правило. Безопасность при этом мы не нарушим, запрещённый трафик так и будет блокироваться, просто для разрешённых IP адресов трафик перестанет блокироваться независимо от степени кривизны пакета.
В before.rules комментируем строки:
# drop INVALID packets (logs these in loglevel medium and higher)
# -A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny
# -A ufw-before-input -m conntrack --ctstate INVALID -j DROP
Ну, и ещё надо конфиги пошерстить, мало ли кто чего добавил.