Bug 28608 - efw restart загружает conntrack
Summary: efw restart загружает conntrack
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: etcnet (show other bugs)
Version: unstable
Hardware: all Linux
: P3 major
Assignee: Mikhail Efremov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-02-26 22:27 MSK by Anton Farygin
Modified: 2013-02-27 13:56 MSK (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Anton Farygin 2013-02-26 22:27:53 MSK
Сразу после загрузки модулей conntrack нет (так и должно быть).

После efw restart модули появляются. Это плохо на высоконагруженных роутерах - загруженные модули conntrack приводят к тому, что ядро отслеживает все соединения и не создаёт новых при переполнении таблицы conntrack.

и что ещё хуже - увеличение таблицы через sysctl не работает, ибо на момент загрузки системы модулей conntrack в системе нет.

Необходимо сделать так, что бы перезапуск firewall в etcnet не загружал дополнительных модулей ядра, если в этом нет необходимости.

Воспроизводится очень просто на любой системе, не являющейся шлюзом:
[root@riderkvmS ~]# lsmod |grep conn
[root@riderkvmS ~]# efw restart
Interface is "default"
Table is "filter"
Chain is ""
Action is "restart"

Firewall type is "iptables"
Stopping iptables for default
	Flushing the "OUTPUT" chain in the "filter" table
	Flushing the "FORWARD" chain in the "filter" table
	Flushing the "INPUT" chain in the "filter" table
	Flushing the "POSTROUTING" chain in the "nat" table
	Flushing the "OUTPUT" chain in the "nat" table
	Flushing the "PREROUTING" chain in the "nat" table
	Flushing the "POSTROUTING" chain in the "mangle" table
	Flushing the "OUTPUT" chain in the "mangle" table
	Flushing the "FORWARD" chain in the "mangle" table
	Flushing the "INPUT" chain in the "mangle" table
	Flushing the "PREROUTING" chain in the "mangle" table
	Setting ACCEPT policy for the "INPUT" chain in the "filter" table
	Setting ACCEPT policy for the "FORWARD" chain in the "filter" table
	Setting ACCEPT policy for the "OUTPUT" chain in the "filter" table
Starting iptables for default
	Setting ACCEPT policy for the "INPUT" chain in the "filter" table
	Setting ACCEPT policy for the "FORWARD" chain in the "filter" table
	Setting ACCEPT policy for the "OUTPUT" chain in the "filter" table

[root@riderkvmS ~]# lsmod |grep conn
nf_conntrack_ipv4      14110  3 nf_nat,iptable_nat
nf_defrag_ipv4          1537  1 nf_conntrack_ipv4
nf_conntrack           83469  3 nf_nat,iptable_nat,nf_conntrack_ipv4
Comment 1 Andrew Kornilov 2013-02-26 22:45:42 MSK
А это не efw, ответственно заявляю как автор ;-)

Экспериментально выяснил только что следующее:

# lsmod |grep conn
# iptables -F OUTPUT -t nat
# lsmod |grep conn
nf_conntrack_ipv4      10493  3 iptable_nat,nf_nat
nf_conntrack           63523  3 iptable_nat,nf_nat,nf_conntrack_ipv4
nf_defrag_ipv4          1205  1 nf_conntrack_ipv4


Именно после этого flush-а начинается эта проблема. Другие flush-и это не делают. Грузит это всё, похоже, модуль iptables_nat.

Команда modprobe -r iptable_nat  убирает все эти модули.

Можете её выполнял где-то в скриптах любых остановки (даже в конфигах).  Можно еще что-то придумать, но это уже будет костыль, imho.
Comment 2 Sergey Bolshakov 2013-02-27 00:31:58 MSK
если нужно держать в рамках размер conntrack'а -- есть таблица raw и джамп NOTRACK. файрвол же вообще без conntrack -- это как-то хм.
Comment 3 Anton Farygin 2013-02-27 10:03:32 MSK
А зачем на файрволле conntrack, объясни пожалуйста ?

Файрволл - это же не всегда NAT, верно ?
Таблица raw - ещё один костыль.
Давайте сделаем хотя-бы так, что если в таблице nat пусто - то и не делаем её -F
Comment 4 Andrew Kornilov 2013-02-27 12:57:41 MSK
А как мы узнаем, пустая она или нет? Встраивать ненужный интеллект в скрипты? 

Проще, мне кажется, в blacklist запихнуть эти модули, чтобы не грузились. Ну или выяснить, почему iptables их вообще грузит для этого.
Comment 5 Sergey Bolshakov 2013-02-27 13:56:12 MSK
(In reply to comment #3)
> А зачем на файрволле conntrack, объясни пожалуйста ?
> 
> Файрволл - это же не всегда NAT, верно ?

Для RELATED. Вообще, этот наш линупс со времён 2.2 имеет
stateful firewall, и conntrack -- это вот оно и есть.