iptables -p с протоколами, отличными от tcp/udp

Использование GNU awkилиmawk:

$ awk -v word="are" -v RS='--\n' -v ORS='--\n' '$1 ~ "^" word "[[:punct:]]?"' file
are you happy
--
are(you hungry
too
--

Это устанавливает разделитель записей для ввода и вывода на --, за которым следует новая строка. Первое слово каждого абзаца находится в $1. Мы сопоставляем это с заданным словом (, за которым может следовать знак пунктуации ). Если они совпадают, абзац печатается.

Обратите внимание, что маркеры абзаца в выводе будут помещены в конец каждого абзаца, а не в начало, так как мы используем ORSдля их вывода.


Использование скрипта sed:

:top
/^--/!d;                   # This is not a new paragraph, delete
N;                         # Append next line
/^--\nare[[:punct:]]?/!d;  # This is not a paragraph we want, delete
:record
n;                         # Output line, get next
/^--/!brecord;             # Not yet done with this record, branch to :record
btop;                      # Branch to :top

Работает:

$ sed -E -f script.sed file
--
are you happy
--
are(you hungry
too

Или как один -лайнер, который использует переменную оболочки$word:

sed -E -e ':t;/^--/!d;N;' \
       -e "/^--\n$word[[:punct:]]?/!d" \
       -e ':r;n;/^--/!br;bt' file
2
10.08.2020, 14:48
1 ответ

iptables поддерживает фильтрацию на канальном, сетевом и транспортном уровнях.

Опция-p(протокола )конкретно не ограничивается протоколами уровня 4. На справочной странице конкретно упоминаются icmp и esp. Я знаю, что gre также поддерживается (либо как 'gre', либо как протокол '47' ). Указанный протокол может быть передан в эту опцию по имени или по его целому номеру, указанному в /etc/protocols. Я не уверен, что все протоколы в этом списке поддерживаются iptables.

If the -p or --protocol was specified and if and only if an unknown option is encountered, iptables will try load a match module of the same name as the protocol, to try making the option available.

Этот синтаксис «модуля сопоставления» является расширенным модулем сопоставления пакетов и может быть указан с использованием опций -m --match.

Вы можете найти список поддерживаемых расширений здесь:iptables -расширения . Список доступных модулей ядра netfilter находится по адресу /lib/modules/$(uname -r)/kernel/net/netfilter.

6
18.03.2021, 23:13

Теги

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