LINUX.ORG.RU
ФорумAdmin

[опять про iptables]-m vs. -p


0

1

Часто в примерах в инете вижу комбинацию -m tcp -p tcp. Это имеет какой-то смысл?

Судя по манам получается тавтология:
iptables can use extended packet matching modules. These are loaded in two ways: implicitly, when -p or --protocol is specified, or with the -m or --match options, followed by the matching module name;

А вдруг есть какой то свой модуль для обработки tcp, но в данном случае действительно похоже масло маслянное

AnyKey
()

старинные артефакты наверное когда implicitly небыло

guilder
()

С точки зрения самого ipt никакой тавтологии не получается т.к. ключ -p указывает тип протокола по типу протокола во фрейме (первый фильтр), а -m tcp грузит соответствующий модуль для анализа содержимого пакета (следующий фильтр в цепочке). Т.е. это порядок в котором пакет проходит через разные фильтры в nf.

Но с точки зрения самой утилиты iptables и пользователя есть избыточность т.к. -m tcp нельзя применить к не tcp пакету и -m tcp подразумевает -p tcp. Т.е. это услуга утилиты iptables, она пытается угадать что хочет пользователь так же, как если и не указать -m tcp:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Здесь по опции --dport и -p tcp додумывает и добавляет -m tcp. Вопрос о тавтологии сводится к вопросу о доверии к способностям ipt додумывать.

Однако -p tcp ножно использовать без -m tcp:

iptables -A INPUT -p tcp -j ACCEPT

и ipt для такого правила не подгрузит -m tcp т.к. это разные фильтры.

В общем, это просто отображение внутренней логики обработки пакетов.

anonymous
()
Ответ на: комментарий от Lonli-Lokli

Вариант с явным указанием цепочки фильтров всегда будет работать ожидаемо, -m tcp без -p tcp тоже должен работать ожидаемо (почему, написал выше). А -p tcp без -m tcp может потенциально подкинуть гемор и так лучше никогда не писать.

anonymous
()
Ответ на: комментарий от anonymous

Небольшое дополнение на счёт -p tcp без -m tcp. Всё сказанное относится к случаю использования опций из -m tcp. Не все модули -m требуют tcp/udp протоколы.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.