Случайно наткнулся на крайне забавное поведение iptables:
Имеется asterisk с проброшенным наружу SIP. В какой-то момент я решил закрыть этот SIP и убрал из конфига iptables правила, открывающие udp порты 5060 и 10000-20000 для входящих соединений. Перезагрузил правила, проверил, что всё применилось и обнаружил радостно, что я всё ещё могу подключиться по SIP извне. Решил, что у меня глюк - убрал правило, разрешающее tcp на 22 порт. Перезагрузил правила - SSH доступ извне исчез. Из чего я сделал вывод: конфиг читается, правила применяются, но iptables не выбрасывает udp пакеты, которые должен выбрасывать по новым правилам. Перезагрузка всего сервера (с тем же новым iptables конфигом) помогла, но это, понятно дело, не вариант для продакшена.
Вопрос: какого? Почему iptables помнит старые правила и как заставить его мгновенно о них забыть? Я грешу на RELATED,ESTABILISHED, но я перезапускал SIP-софтфон, и он даже после перезапуска прекрасно коннектился по, как я думал и как мне говорил iptables, закрытым портам. Т.е. вроде как даже новую сессию на закрытые порты прекрасно начал.