Соответствия ebtables не требуется явно загружать с помощью опции -m, поскольку они включены в программы пользовательского пространства. Однако для использования этих соответствий в ядре должны быть активизированы требуемые для них модули.
Проверка полей DSAP/SSAP и SNAP в кадрах 802.3
Описанные здесь соответствия служат для проверки полей 802.3 DSAP/SSAP или типа SNAP. Для проверки соответствия требуется указать протокол LENGTH.
--802_3-sap [!] sap
проверяет однобайтовые поля DSAP и SSAP в заголовках кадров 802.3. Значения этих полей всегда совпадают, поэтому в качестве аргумента указывается только одно значение.
--802_3-type [!] type
Если в кадре 802.3 поля DSAP и SSAP имеют значение 0xaa, для определения типа содержимого пакета должно использоваться 2-байтовое поле SNAP. Аргумент задается шестнадцатеричным значением. Поле SNAP проверяется только для кадров 802.3 с полями DSAP/SSAP = 0xaa.
Для использования этой проверки в ядре должна быть включена опция ebt: 802.3 filter support. Если для этой опции было выбрано значение M, потребуется также загрузить модуль ядра ebt_802_3.
Проверка наличия адресов в списке
Это условие служит для проверки наличия MAC-адресов или пар MAC/IP в списке MAC-адресов и пар MAC/IP. Записи списка имеют формат xx:xx:xx:xx:xx:xx[=ip.ip.ip.ip][,]. Записи списка разделяются запятыми, поле адреса IP является необязательным. Для проверки соответствия можно указывать один MAC-адрес в паре с различными адресами IP и наоборот. Если MAC-адрес не присутствует ни в одной записи списка, кадр считается несоответствующим данному правилу (если не указана инверсия с помощью знака !). Для проверки соответствия можно использовать две опции:
--among-dst [!] list
проверяет наличие MAC-адреса получателя в заданном списке. Если кадр Ethernet имеет тип IPv4 или ARP, можно проводить сравнение для пары MAC/IP.
--among-src [!] list
проверяет наличие MAC-адреса отправителя в заданном списке. Если кадр Ethernet имеет тип IPv4 или ARP, можно проводить сравнение для пары MAC/IP.
Для использования такой проверки в ядре должна быть включена опция ebt: among filter support. Если при компиляции ядра для опции было выбрано значение M, потребуется также загрузить модуль ядра ebt_among.
Проверка полей ARP
Описанные ниже соответствия служат для проверки полей arp. Для использования этих условий должен быть указан протокол ARP или RARP.
--arp-opcode [!] opcode
проверяет значение поля opcode пакетов ARP/RARP. Код может быть указан именем или десятичным значением. Соответствие имен и значений приведено ниже. Для просмотра списка имен и значений кодов можно также воспользоваться командой ebtables -h arp.
1=Request (запрос)
2=Reply (отклик)
3=Request_Reverse (запрос обратного преобразования)
4=Reply_Reverse (отклик на запрос обратного преобразования)
5=DRARP_Request (запрос DRARP)
6=DRARP_Reply (отклик на запрос DRARP)
7=DRARP_Error (ошибка DRARP)
8=InARP_Request (запрос InARP )
9=ARP_NAK
--arp-htype [!] hardware type
проверяет тип оборудования. В качестве идентификатора типа может использоваться символьное имя Ethernet или десятичное значение 1.
--arp-ptype [!] protocol type
проверяет тип используемого протокола для пакетов ARP/RARP. Протокол может быть задан символьным именем (IPv4) или шестнадцатеричным числом (0x0800).
--arp-ip-src [!] address[/mask]
проверяет IP-адрес отправителя пакетов ARP.
--arp-ip-dst [!] address[/mask]
проверяет IP-адрес получателя пакетов ARP.
--arp-mac-src [!] address[/mask]
проверяет MAC-адрес отправителя пакетов ARP.
--arp-mac-dst [!] address[/mask]
проверяет MAC-адрес получателя пакетов ARP.
Для использования такой проверки в ядре должна быть включена опция ebt: ARP filter support. Если при компиляции ядра для опции было выбрано значение M, потребуется также загрузить модуль ядра ebt_arp.
Проверка полей IP
Эти условия служат для проверки полей IP и требуют указания в спецификации правила протокола IPv4.
--ip-source [!] address[/mask]
проверяет IP-адрес отправителя. Допускается использование синонима --ip-src.
--ip-destination [!] address[/mask]
проверяет IP-адрес получателя. Допускается использование синонима --ip-dst.
--ip-tos [!] tos
проверяет тип обслуживания, задаваемый шестнадцатеричным значением.
--ip-protocol [!] protocol
проверяет протокол IP. Допускается использование синонима --ip-proto.
--ip-source-port [!] port[:port]
проверяет порт (диапазон портов) отправителя для протоколов TCP (6) и UDP (17). Если опущена нижняя граница диапазона, ее значение предполагается нулевым, при опущенной верхней границе предполагается значение 65535. Допускается использование синонима --ip-sport.
--ip-destination-port [!] port[:port]
проверяет порт (диапазон портов) получателя для протоколов TCP (6) и UDP (17). Если опущена нижняя граница диапазона, ее значение предполагается нулевым, при опущенной верхней границе предполагается значение 65535. Допускается использование синонима –ip-dport.
Для проверки полей IP требуется ядро со включенной опцией ebt: IP filter support. Если при компиляции ядра для опции было выбрано значение M, потребуется также загрузить модуль ядра ebt_ip.
Ограничение темпа совпадений (limit)
Это условие позволяет ограничить темп совпадений с остальными условиями данного правила. Для ограничения темпа соответствия могут использоваться параметры
--limit <средняя частота>
и
--limit-burst <пиковое значение>
Первый параметр задает пороговую частоту событий (число событий в единицу времени) и указывается в формате значение/суффикс. Значение определяет число событий, а суффикс – единицу времени (/s или /second – секунда, /m или /minute – минута, /h или /hour – час, /d или /day – сутки). По умолчанию используется пороговая частота 3 пакета в час. Второй параметр определяет пик “разовой” доставки пакетов. По умолчанию для пика используется значение 5. Модуль работает следующим образом:
-
условие считается выполненным, пока значение счетчика пакетов не превысит пика limit-burst;
-
каждый пакет, соответствующий правилу, увеличивает значение счетчика на 1;
-
по истечении каждого интервала 1/limit значение счетчика уменьшается на 1.
Для установки пороговых значений темпа соответствия требуется ядро со включенной опцией. Если при компиляции ядра для опции было выбрано значение M, потребуется также загрузить модуль ядра ebt_limit.
Проверка маркеров
Условие
--mark [!] [value][/mask]
позволяет проверить соответствие целочисленного беззнакового значения маркера. Если в условии задано также значение маски, для сравнения с заданным значением используется результат операции AND по отношению к маске и значению маркера в кадре. Если в условии указана только маска, полученное в результате операции AND значение сравнивается с нулем.
Для проверки маркеров требуется ядро с поддержкой опций ebt: mark target support и ebt: mark filter support. В зависимости от выбора значения этих опций при компиляции ядра может также потребоваться загрузка модулей ebt_mark и ebt_mark_m.
Проверка типа кадров
Условие
--pkttype-type [!] type
позволяет проверить для кадров “класс” Ethernet. Допустимы значения классов:
-
broadcast (широковещательный MAC-адрес получателя),
-
multicast (групповой MAC-адрес получателя),
-
host (MAC-адрес принимающего устройства),
-
otherhost (не относится ни к одному из перечисленных типов).
Для проверки соответствия кадров тому или иному классу требуется ядро с поддержкой опции ebt: packet type filter support. Если при компиляции ядра для опции было выбрано значение M, потребуется также загрузить модуль ядра ebt_pkttype.
Проверка STP
Этот модуль используется для проверки полей STP1 BPDU2. Адрес получателя должен быть указан как BGA-адрес.
--stp-type [!] type
проверяет тип BPDU (0-255); распознаются типы config (0) и tcn (128 – изменение топологии).
--stp-flags [!] flag
проверяет флаг BPDU (0-255); распознаются флаги topology-change (1 – изменение топологии) и topology-change-ack (128 – подтверждение изменения топологии).
--stp-root-prio [!] [prio][:prio]
проверяет значение приоритета корневого моста (0-65535).
--stp-root-addr [!] [address][/mask]
проверяет MAC-адрес корневого моста.
--stp-root-cost [!] [cost][:cost]
проверяет стоимость пути до корневого моста (0-4294967295).
--stp-sender-prio [!] [prio][:prio]
проверяет значение приоритета для отправителя BPDU (0-65535).
--stp-sender-addr [!] [address][/mask]
проверяет MAC-адрес отправителя BPDU.
--stp-port [!] [port][:port]
проверяет идентификатор порта (0-65535).
--stp-msg-age [!] [age][:age]
проверяет значение таймера “старения” (age timer - 0-65535).
--stp-max-age [!] [age][:age]
проверяет максимальное значение таймера “старения” (0-65535).
--stp-hello-time [!] [time][:time]
проверяет значение таймера hello (0-65535).
--stp-forward-delay [!] [delay][:delay]
проверяет значение таймера задержки пересылки (0-65535).
Возможность проверки полей STP BPDU обеспечивается при включенной опции ядра ebt: STP filter support. Если для опции было выбрано значение M, потребуется также загрузка модуля ядра ebt_stp.
Проверка параметров VLAN
Этот модуль служит для проверки управляющих полей тегов 802.1Q. Для использования модуля в спецификации правила должен быть задан протокол 802_1Q (0x8100).
--vlan-id [!] id
проверяет значение идентификатора VLAN (VID); допустимые значения лежат в диапазоне от 0 до 4095.
--vlan-prio [!] prio
проверяет значение поля user_priority (0 – 7). Поле VID должно иметь значение 0 (null VID) или быть пустым (в этом случае предполагается VID = 0).
--vlan-encap [!] type
проверяет тип/размер инкапсулированного кадра Ethernet, заданный шестнадцатеричным значением (0x0000 – 0xFFFF) или символьным именем3. Значения меньше 0x0800 задают размер инкапсулированного кадра Ethernet.
Для проверки тегов VLAN требуется ядро со включенной опцией ebt: 802.1Q VLAN filter support. Если при компиляции ядра для этой опции использовалось значение M, потребуется также загрузка модуля ebt_vlan.
|