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
принесло мне успокоение.