ipfirewall Packet Filtering
Rules
Здесь приводится детальное описание того, как пакеты обрабатываются
пакетным фильтром. Каждый пакет, который принимается маршрутизатором, проходит
через блокирующий набор фильтров. Пакеты, которые принимаются блокирующими
фильтрами, поступают на обработку в IP-компонент ядра маршрутизатора. Если
IP стек решает, что пакет не относится к данной машине и должен быть отправлен
дальше, то он проходит через маршрутизирующий набор фильтров. Информация
о пакетах, которые отбрасываются фильтрами, выводится на системную консоль,
а сами пакеты уничтожаются без уведомления источника.
Пакет, "проходящий сквозь" набор фильтров, сравнивается с каждым фильтром
в наборе, начиная с первого и заканчивая либо концом набора, либо конкретным
подходящим фильтром.
Логика поведения фильтра следующая:
-
Если набор фильтров пуст, то пакет принимается.
-
Иначе, первый же подходящий фильтр определит судьбу пакета. Если фильтр
разрешающий, то пакет принимается. Если фильтр запрещающий, то пакет отбрасывается.
Если не нашлось ни одного фильтра, подходящего к пакету, то пакет
принимается.
Логика работы конкретного фильтра представлена ниже:
-
Если поле proto
фильтра не all и это не тот же протокол, что и в пакете, то фильтр
пропускается.
-
Если адрес источника в пакете и в фильтре не совпадают, то фильтр пропускается
(если адрес был указан с маской,
то, перед сравнением, маска накладывается на оба адреса).
-
Если адреса получателя в пакете и в фильтре не совпадают, то фильтр пропускается.
(опять-таки, маска
обрабатывается так, как было описано ранее).
-
Если задан параметр ip_fragment
, но пакет не является фрагментом, то фильтр пропускается.
-
Если задан параметр ip_tail_fragment
, но пакет является либо первым, либо единственным фрагментом, то фильтр
пропускается.
-
Если задан параметр ip_head_fragment
, но пакет не является первым фрагментом фрагментированного пакета, то
фильтр пропускается.
-
Если задан параметр tcp_connection
, но пакет не является первым или единственным фрагментом TCP/IP
пакета, который пытается установить соединение, то фильтр пропускается.
-
Если задан параметр ip_option
, но пакет не имеет никаких IP опций (кроме возможно NO-OP или EOL), то
фильтр пропускается.
-
Если задан параметр ip_recroute_option
, но пакет не имеет указанных опций, то фильтр пропускается.
-
Если задан параметр ip_misc_option
, но пакет не имеет никаких IP опций кроме, возможно, record-route,
timestamp, EOL или NO-OP , то фильтр пропускается.
-
Если фильтр имеет параметр proto
установленный в udp или tcp и если адрес источника
в фильтре имеет список
портов, то если пакет не является первым (или единственным) фрагментом
или порт источника в пакете не совпадает со списком портов в фильтре, то
фильтр пропускается.
-
Если фильтр имеет параметр proto
установленный в udp или tcp и если адрес получателя
в фильтре имеет список
портов , то если пакет не является первым (или единственным) фрагментом
или порт получателя в пакете не совпадает со списком портов в фильтре,
то фильтр пропускается.
-
Пакет обрабатывается фильтром в соответствии с указанным полем disp.