Каково различие между-m conntrack - ctstate и состоянием-m - состояние

file=/usr/lib/python2.6/LICENSE.txt
dict=/usr/share/dict/british-english-huge   # or any suitable list

sort "$dict" \
     <(sed "s/[].,\"?!;:#$%&()*+<>=@\^_{}|~[]\+/\n/g   # keep ' for now
            s|[-/[[:digit:][:blank:][:cntrl:]]\+|\n|g
            s/\<'\+/\n/; s/'\>\+/\n/                   # remove '
           " <(<"$file" tr '[:upper:]' '[:lower:]') ) |
uniq -c | awk '$1 > +1 {print $2}' 

найденный 382 словами (нечувствительными к регистру) вовремя:

real   0m1.723s
user   0m1.872s
sys    0m0.048s
87
07.01.2014, 10:41
2 ответа

Я не утверждаю, что был экспертом с iptables правила, но первая команда используют расширение отслеживания соединения (conntrack) в то время как второе использует state расширение.

Точка данных № 1

Согласно этому документу conntrack расширение заменяется state.

 Obsolete extensions:
  • -m state: replaced by -m conntrack

Точка данных № 2

Несмотря на это, я нашел этот SF Вопросами и ответами названный: вопросы о Брандмауэре о состоянии и политике? где OP утверждал, что задал этот вопрос на IRC в #iptables@freenode. После обсуждения его там он пришел к выводу что:

Технически соответствие conntrack заменяет - и так obsoletes - соответствие состояния. Но практически соответствие состояния не является obsoleted всегда.

Точка данных № 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" routing/DNAT fixup ;-)

Точка данных № 4

Я нашел этот поток из netfilter@vger.kernel.org netfilte/iptables обсуждениями, названными: соответствие состояния устаревшее 1.4.17, который в значительной степени говорит это state просто псевдоним к conntrack таким образом, это действительно не имеет значения, который Вы используете при обоих обстоятельствах, Вы используете conntrack.

выборка

На самом деле я должен согласиться. Почему мы не сохраняем "состояние" как псевдоним и принимаем старый синтаксис в "conntrack"?

состояние в настоящее время искажается и переводится в conntrack в iptables, если ядро имеет его. Никакие сценарии не повреждаются.

Если искажение сделано в пространстве пользователя, часть ядра может быть удалена - когда-нибудь, возможно.

Искажение уже сделано в пространстве пользователя. Каждый вводит в "состоянии", и оно преобразовывается в "conntrack", и это затем отправляется в ядро. (Таким образом, насколько я вижу, были ли ipt_state, и т.д. псевдонимы модуля добавлены к conntrack модулю, даже модуль ядра состояния мог быть удален.)

Ссылки

101
27.01.2020, 19:30

Я не специалист по сетевым фильтрам, но я заглянул на страницу iptables -extension man -и удивился, там

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

Таким образом, состояние — это часть conntrack и просто его более простая версия, если вам действительно нужно --состояние, а не более причудливые функции conntrack

9
27.01.2020, 19:30

Теги

Похожие вопросы