Scroll Ignore | ||||
---|---|---|---|---|
Содержание
|
Описание
В текстовом виде PCAP-фильтр выглядит как выражение, состоящее из одного или нескольких примитивов. Примитивы в выражении определяют возможность приема фильтром входящего пакета. Каждый примитив определяет конкретный элемент пакета протокола стандартной структуры и его значение, сравниваемое фильтром со значением соответствующего элемента входящего пакета. Если значение примитива совпадает со значением элемента пакета, фильтр отмечает его как "логическую истину" (true) и переходит к сравнению следующего примитива. При совпадении всех значений выражения со значениями проверенных элементов пакета фильтр принимает решение о приеме данного пакета, в противном случае входящий пакет игнорируется.
Каждый примитив обычно состоит из одного или нескольких квалификаторов и следующего за ними идентификатора (имя или число). Всего имеется три типа квалификаторов:
- "type" – определяет тип имени или номера идентификатора. Возможные значения: "host" (хост), "net" (сеть), "port" (порт) или "portrange" (диапазон портов). Если квалификатор отсутствует, по умолчанию принимается "host".
- "dir" – определяет возможное направление приема и передачи данных объектом, указанным в качестве идентификатора: к нему и/или от него. Допускается указание следующих значений: "src" (отправитель), "dst" (получатель), "src and dst" (отправитель и получатель), "src or dst" (отправитель или получатель). Если квалификатор не указан, по умолчанию принимается "src or dst".
- "proto" – определяет тип протокола, используемого объектом, указанным в качестве идентификатора. Возможные значения: "ether", "fddi", "ip", "arp", "rarp", "decnet", "lat", "sca", "moprc", "mopdl", "tcp" и "udp". При отсутствии квалификатора значение по умолчанию выбирается по максимальному соответствию указанному идентификатору.
Стоит отметить, что существуют некоторые специальные примитивы, которые не соответствуют шаблону: "broadcast", "less", "greater", а также арифметические выражения. Подробное описание приведено ниже.
Более сложные выражения фильтра создаются с использованием слов "and", "or" и "not" для объединения примитивов. Примитивы можно группировать с помощью скобок и логических операций:
- отрицание ("!" или "not");
- сложение ("&&" или "and");
- дизъюнкция ("||" или "or").
Отрицание имеет самый высокий приоритет. Сложение и дизъюнкция имеют одинаковый приоритет в выражении и читаются слева направо.
Note | ||
---|---|---|
| ||
Если в фильтре есть несколько одинаковых повторяющихся квалификаторов, то для сокращения записи их можно не писать. |
Аббревиатуры "ip", "arp", "rarp", "atalk", "aarp", "iso", "stp", "ipx", "netbeui" являются сокращениями для "ether proto p", где "p" один из указанных протоколов. "tcp", "udp", "icmp" являются сокращениями для "ip proto p", где "p" - один из указанных выше протоколов. "clnp", "esis", "isis" являются сокращениями для "iso proto p", где "p" - один из указанных выше протоколов.
Примитивы
Center | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Примеры
Фильтрация, запрещающая приём трафика, в котором есть данные, принадлежащие порту 80 ("udp" или "tcp"). В данном примере приведён полный синтаксис команды "ipfw", в последующих примерах параметры самой команды будут опущены.
| ||||||||||||||||||||||||||||||||||||||||||
Если в фильтре есть несколько одинаковых повторяющихся классификаторов, то для сокращения записи их можно указать один раз.
Можно сократить:
Выражение, исключающее пакеты, в которых есть IP-адреса "1.1.1.1" и "1.1.1.2".
Можно сократить:
Не допускается сокращение, указанное ниже:
В этом случае будут пропущены пакеты, в которых нет первого IP-адреса и есть второй.
В этом случае будут исключены пакеты, в которых есть хотя бы один из указанных IP-адресов. | ||||||||||||||||||||||||||||||||||||||||||
Фильтрация трафика, в котором в качестве адреса (отправителя или получателя) стоит IP-адрес "192.168.0.1".
| ||||||||||||||||||||||||||||||||||||||||||
Фильтрация трафика, в котором в качестве адреса получателя стоит IP-адрес из сети "172.16.0.0/16" (точнее, находится в диапазоне от "172.16.0.0" до "172.16.255.255").
| ||||||||||||||||||||||||||||||||||||||||||
Фильтрация трафика, принадлежащего сети "192.168.0.0/24" (отправитель или получатель), передающего данные по протоколу TCP и использующего порт 21.
| ||||||||||||||||||||||||||||||||||||||||||
Фильтрует весь многоадресный трафик.
| ||||||||||||||||||||||||||||||||||||||||||
Фильтрует все IPv4-пакеты.
| ||||||||||||||||||||||||||||||||||||||||||
Фильтрует только нефрагментированные IPv4-дейтаграммы и отбрасывает фрагментированные IPv4-дейтаграммы. Эта проверка неявно применяется к операциям фильтрации tcp и udp. "tcp[0]" всегда учитывает первый байт TCP-заголовка и никогда не учитывает первый байт промежуточного фрагмента.
| ||||||||||||||||||||||||||||||||||||||||||
Фильтрует пакеты с меткой VLAN 200, инкапсулированные в сервисный VLAN 100.
| ||||||||||||||||||||||||||||||||||||||||||
Фильтрует пакеты IPv4, инкапсулированные в VLAN 300.
| ||||||||||||||||||||||||||||||||||||||||||
Фильтрует все пакеты, инкапсулированные сервисным VLAN 100.
| ||||||||||||||||||||||||||||||||||||||||||
Фильтрует пакеты с внешней меткой 100000 и внутренней меткой 1024.
| ||||||||||||||||||||||||||||||||||||||||||
Фильтрует пакеты от/к сетевому узлу "192.9.200.1" с внутренней меткой 1024 и без внешней метки.
| ||||||||||||||||||||||||||||||||||||||||||
Фильтрует кадры IPv4, инкапсулированные в PPPoE.
|