Назад | Перейти на главную страницу

IPtables: когда использовать -m в правиле?

match = -m имя-совпадения [параметры-соответствия]
Но меня это смущает. Вот пример:

iptables -A INPUT -p tcp -m multiport --dports 23,79 --tcp-flags ALL SYN -m recent --update --seconds 180 -m comment --comment "SYN" -j DROP

Может ли кто-нибудь объяснить мне теорию, лежащую в основе этого, почему мне не нужно использовать -m перед --tcp-flags (может быть, мне следует?), Например:

iptables -A INPUT -p tcp -m multiport --dports 23,79 -m --tcp-flags ALL SYN -m recent --update --seconds 180 -m comment --comment "SYN" -j DROP    

Для меня было бы больше смысла, если бы это было написано так:

iptables -A INPUT -p tcp -m tcp --tcp-flags ALL SYN -m multiport --dports 23,79 -m recent --update --seconds 180 -m comment --comment "SYN" -j DROP

И почему я должен использовать -m для комментариев? Я вижу это везде, но хотелось бы знать почему, а не что-то еще. Я немного сомневаюсь в этом, потому что это не совпадение, так что это немного странно.
Спасибо.

-m используется для добавления расширений к обычному сопоставлению. обычно вы не можете использовать --dports чтобы указать несколько портов. -m multiport добавляет это расширение. если вам нужно сопоставить только один порт (или не сопоставить порт вообще), нет причин для -m multiport. На странице руководства iptables есть раздел «MATCH EXTENSIONS», в котором описывается, какие еще расширения можно использовать. "state" - очень распространенное слово, которое позволит вам сопоставить состояние соединения, в котором находится пакет, например NEW, ESTABLISHED, RELATED.