Назад | Перейти на главную страницу

Iptables, в чем разница между -m state и -m conntrack?

В чем практическая разница между:

iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

и

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Какой лучше использовать?

Спасибо.

Оба используют одни и те же внутренние компоненты ядра (подсистема отслеживания соединений).

Заголовок xt_conntrack.c:

xt_conntrack - Netfilter module to match connection tracking
information. (Superset of Rusty's minimalistic state match.)

Поэтому я бы сказал, что модуль состояния проще (и, возможно, менее подвержен ошибкам). К тому же в ядре он длиннее. Conntrack, с другой стороны, имеет больше возможностей и функций [1].

Я призываю использовать conntrack, если вам нужны его функции, в противном случае придерживайтесь модуля состояния.

Аналогичный вопрос по почтовой рассылке netfilter.

[1] Довольно полезно, например, маршрутизация "-m conntrack --ctstate DNAT -j MASQUERADE" / исправление DNAT ;-)

Нет никакой разницы в исходе этих двух правил. Оба расширения используют одни и те же данные для соответствия состоянию отслеживания соединения. state - это "старое" расширение соответствия, а conntrack новее и имеет гораздо больше возможностей, чем просто соответствие состоянию отслеживания соединения.

Iptables Doc

Как говорится в документации:

Сопоставление conntrack - это расширенная версия сопоставления состояний, которая позволяет сопоставлять пакеты более детальным способом. Это позволяет вам просматривать информацию, непосредственно доступную в системе отслеживания соединений, без каких-либо "внешних" систем, таких как соответствие состояний. Дополнительные сведения о системе отслеживания соединений см. В главе «Конечный автомат».