Е, не знаех как точно да задам този въпрос, но знам, че можете да използвате ключовата дума flags, за да посочите кои флагове искате да филтрирате.
Според документацията на пакетния филтър:
За да може PF да проверява TCP флаговете по време на оценка на правило, ключовата дума flags се използва със следния синтаксис:
флагове проверка/маска
флагове всякаквиЧастта за маска казва на PF да проверява само посочените флагове, а частта за проверка указва кой флаг(а) трябва да бъде "включен" в заглавката, за да възникне съвпадение. Използването на ключовата дума any позволява всяка комбинация от флагове да бъдат зададени в заглавката.
предаване на fxp0 proto tcp от всеки към всеки порт ssh флагове S/SA
предаване на fxp0 proto tcp от всеки към всеки порт sshТъй като флаговете S/SA са зададени по подразбиране, горните правила са еквивалентни. Всяко от тези правила пропуска TCP трафик с зададен флаг SYN, докато разглежда само флаговете SYN и ACK. Пакет с флаговете SYN и ECE ще отговаря на горните правила, докато пакет със SYN и ACK или само ACK не би отговарял.
И така, разбрах примера и защо пакетът с флаговете S и E може да премине (тъй като флагът E не се взема предвид поради маската SA) и защо пакетът само с флага Ack не може да премине защитната стена.
Това, което не разбрах, е защо пакетът с флаговете S и A не може да премине правилото S/SA, ако флагът S е "включен" в заглавката на пакета. Може би документацията е двусмислена? Съжалявам, ако това е глупав въпрос или неразбран английски.
Предполагам, че може да премине само ако ТРЯБВА ДА ИМА САМО флага S. В наборната аритметика ще бъде нещо подобно:
флаг(ове) трябва да бъде(т) включен(и) в заглавката -> флаг(а) се отнася до маскираното подмножество [pf doc]
само флага (s) трябва да бъде „включено“ в заглавката -> флагът(ите) е еднакъв с маскираното подмножество [това, което разбрах от дадения пример]
Благодаря предварително!