Connection tracking в Linux и не работающие хелперы [SOLVED]

Внезапно, после ребута в новое ядро, возникла проблема на пограничном маршрутизаторе – перестали устанавливаться соединения по PPTP и FTP. Для PPTP tcpdump показывает, что трафик по TCP1723 ходит в обе стороны, а GRE трафик с обоих сторон доходит до маршрутизатора и пропадает.

В настройках есть правило

iptables -A FORWARD -p ALL -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Но, вполне очевидно, что оно для GRE не отрабатывает. (Хотя до ребута всё было хорошо и GRE трафик принимался именно на этом правиле!)

Если гуглить проблему, то выдаётся 100500 ссылок с указанием загрузить модули ядра nf_conntrack_pptp, nf_nat_proto_gre и т.п. Но в моём случае эти модули точно были загружены, да и проверялось это несколько раз.

Как временное решение, были прописаны правила, насильно цепляющие нужные хелперы на соединения.

iptables -t raw -A PREROUTING -d ${SPSL_VPN} -p tcp --dport 1723 -j CT --helper pptp iptables -t raw -A PREROUTING -p tcp --dport ftp -j CT --helper ftp

Такое решение работает, хотя и напрягает, т.к. «раньшебылохорошо»

После пары дней мучений была таки найдена ссылка, с внятным описанием происходящего.

Ну и прописывание

echo 1 > /proc/sys/net/netfilter/nf_conntrack_helper

принесло мне успокоение.

Tracedump:

newBaseSize: 16pt
newBaseSizeInPt: 16