Я не претендую на експерт з iptables
правилами, але перша команда використовує розширення відстеження зв’язку ( conntrack
), а друга використовує state
розширення.
Точка даних №1
Згідно з цим документомconntrack
розширення витіснені state
.
Obsolete extensions:
• -m state: replaced by -m conntrack
Точка даних №2
Тим не менш, я знайшов це питання з питань безпеки та відповіді під назвою: Питання брандмауера про стан та політику? де ОП заявляла, що задала це питання на IRC у # iptables @ freenode. Обговоривши це там, він дійшов висновку, що:
Технічно контингент збігу витісняє - і так застаріває - державну відповідність. Але практично державна відповідність жодним чином не застаріла.
Точка даних №3
Нарешті, я знайшов це питання запитання SF під назвою: Iptables, в чому різниця між -m станом та -m conntrack? . Відповідь на це питання, мабуть, найкращий доказ та порада щодо перегляду використання conntrack
та використання state
.
витяг
Обидва використовують однакові внутрішні ядра під ними (підсистема відстеження з'єднання).
Заголовок xt_conntrack.c:
xt_conntrack - Netfilter module to match connection tracking
information. (Superset of Rusty's minimalistic state match.)
Тому я б сказав - модуль стану простіший (і, можливо, менше схильний до помилок). Це також довше в ядрі. Conntrack з іншого боку має більше можливостей та можливостей [1] .
Мій дзвінок - використовувати conntrack, якщо вам потрібні його функції, інакше дотримуйтесь модуля стану.
[1] Настільки корисний, як "-m conntrack --ctstate DNAT -j MASQUERADE"
маршрутизація / налаштування DNAT ;-)
Точка даних №4
Я знайшов цю тему з дискусій netfilter@vger.kernel.org netfilte / iptables під назвою: збіг стану застарілий 1.4.17 , що майже говорить про те, що state
це просто псевдонім, conntrack
тому це не має значення, яким ви користуєтесь, обидва обставини, якими ви користуєтесь conntrack
.
витяг
Власне, я повинен погодитися. Чому б нам не зберегти "державу" як псевдонім і не прийняти старий синтаксис у "conntrack"?
стан тепер є псевдонімом і перекладається на conntrack в iptables, якщо ядро має його. Жоден сценарій не порушений.
Якщо псевдонім виконано в просторі користувачів, частину ядра можна видалити - можливо, колись.
Псевдонім вже зроблено в просторі користувачів. Один з типів "state" і перетворюється на "conntrack", після чого він надсилається до ядра. (Наскільки я бачу, чи додані псевдоніми ipt_state і т. Д. До модуля conntrack, навіть модуль ядра стану можна було б видалити.)
Список літератури