У меня есть это правило в моих iptables:
iptables -A INPUT -p tcp -m tcp --dport 9191 -j DROP
Мне действительно нужен "-m tcp"? Я уже использую "-p tcp", поэтому я должен использовать "-m tcp", чтобы быть более безопасным?
С -p tcp
опцией модуль tcp уже загружен, и поэтому он несколько избыточен и не обязателен для использования -m tcp
опции, и я не вижу никакой причины, почему использование этой опции сделало бы правило более безопасным.
Пожалуйста, смотрите справочную страницу iptables для лучшего понимания и сравнения:
-p, --protocol [!] протокол
Протокол правила или пакета для проверки. Указанный протокол может быть одним из tcp, udp, icmp или all или может быть числовым значением, представляющим один из этих протоколов или другой. Имя протокола из / etc / protocol также разрешено. "!" аргумент перед протоколом инвертирует тест. Число ноль эквивалентно всем. Протокол all будет совпадать со всеми протоколами и используется по умолчанию, если эта опция не указана.
...
Расширения матча
iptables может использовать расширенные модули сопоставления пакетов. Они загружаются двумя способами: неявно, когда заданы -p или --protocol или с параметрами -m или --match, за которыми следует соответствующее имя модуля; после этого становятся доступными различные дополнительные параметры командной строки, в зависимости от конкретного модуля. Вы можете указать несколько модулей расширенного соответствия в одной строке и использовать параметры -h или --help после того, как модуль был указан, для получения справки, относящейся к этому модулю.
А список доступных опций -p tcp
смотрите здесь:
http://ipset.netfilter.org/iptables-extensions.man.html#lbCF
Как указано выше, с помощью -m
опции можно добавлять модули расширения, и тогда доступны дополнительные опции соответствия. Например, модуль процессора :
ЦПУ
[!] - номер процессора
Подходим процессор, обрабатывающий этот пакет. Процессоры пронумерованы от 0 до NR_CPUS-1. Может использоваться в сочетании с RPS (удаленным управлением пакетами) или сетевыми картами с несколькими очередями для распределения сетевого трафика по разным очередям.
Пример:
iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 0 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 1 -j REDIRECT --to-port 8081
Доступно с Linux 2.6.36.
Полный список iptables-расширений.
Дополнительный вопрос от OP: я не понимаю, что соответствует -m. Какая строка? -m tcp соответствует чему? Он пытается найти слово "tcp", где?
Ответ: -m
для соответствующего имени модуля, а не строки. Используя определенный модуль, вы получаете определенные опции для соответствия. См. Пример модуля процессора выше. С -m tcp
модулем загружается tcp. Модуль tcp предоставляет определенные возможности: --dport, --sport, --tcp-flags, --syn, --tcp-option
использовать в правилах iptables. Но использование -p tcp
уже включает модуль tcp, поэтому можно использовать эти опции даже без использования -m tcp
. Надеюсь, это очистит все ваше замешательство.
-m
опция фактически используется для загрузки,extension modules
которая предоставляет дополнительные опции. Смотрите мой обновленный ответ и ссылку для примера.-m tcp
опции.--dport
является частью модуля tcp и будет работать-p tcp
только с. Пожалуйста, обратитесь к моему ответу еще раз.