В чем практическая разница между:
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
а также
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Какой из них лучше всего использовать?
Спасибо.
В чем практическая разница между:
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 maillist.
[1] Очень полезно, например, «-m conntrack --ctstate DNAT -j MASQUERADE», исправление маршрутизации / DNAT ;-)
Нет разницы в результатах этих двух правил. Оба совпадающих расширения используют одни и те же данные для соответствия состоянию отслеживания соединения. состояние является «старым» расширением совпадения, а conntrack является более новым и имеет гораздо больше возможностей, чем просто сопоставление состояния отслеживания соединения.
Как сказано в документации:
Сопоставление conntrack - это расширенная версия сопоставления состояний, которая позволяет сопоставлять пакеты гораздо более детально. Это позволяет вам просматривать информацию, непосредственно доступную в системе отслеживания соединений, без каких-либо «внешних» систем, например, в состоянии соответствия. Для получения дополнительной информации о системе отслеживания соединений, посмотрите главу «Конечный автомат».