У чому різниця між -m conntrack --статом і -m state --state


85

Я читаю це хау, і є щось подібне:

Ми можемо дозволити встановленим сеансам отримувати трафік:

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

Вищевказане правило не має пробілів з обох сторін кома в ESTABLISHED, RELATED

Якщо рядок вище не працює, ви можете скористатися кастрованим VPS, постачальник якого не надав розширення, і в цьому випадку нижчу версію можна використовувати як крайній спосіб:

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

Чи є значна різниця в роботі між -m conntrack --ctstateі -m state --state? Вони кажуть, що це може не працювати, але вони не кажуть, чому. Чому я віддаю перевагу одному перед іншим?


1
Можливий копій
сервера

Я це бачу, чи потрібно це питання зняти?
Михайло Морфіков

1
@ John1024 - дублікати є лише в межах одного веб-сайту SE. Цілком чудово розміщувати подібні запитання на декількох веб-сайтах SE, доки питання відповідатимуть правилам, що регулюють певний сайт SE!
slm

1
@MikhailMorfikov - ваше запитання, хоча подібне до інших запитань Q на інших веб-сайтах SE тут ідеально добре!
slm

1
@Totor - якщо ви бачите мою "точку даних №4" у моїй відповіді, stateце фактично псевдонім до conntrack. Так що це не має значення. Я думаю, в якийсь момент в майбутньому вони можуть видалитись stateцілком, але наразі це не має значення, якщо ви їх використовуєте.
slm

Відповіді:


99

Я не претендую на експерт з 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, навіть модуль ядра стану можна було б видалити.)

Список літератури


3

Я не експерт з netfilter, але я заглянув у сторінку iptables-Extension man і здивуй, ось це

The "state" extension is a subset of the "conntrack" module.

Таким чином, держава є частиною conntrack і просто більш простою його версією, якщо вам справді просто потрібно - держава і не з більш вигадливих особливостей conntrack

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.