.\" -*- coding: UTF-8 -*- .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH iptables\-extensions 8 "" "iptables 1.8.10" "iptables 1.8.10" .SH ИМЯ iptables\-extensions \- набор дополнений к стандартной программе iptables .SH СИНТАКСИС \fBip6tables\fP [\fB\-m\fP \fIname\fP [\fImodule\-options\fP...]] [\fB\-j\fP \fItarget\-name\fP [\fItarget\-options\fP...] .PP \fBiptables\fP [\fB\-m\fP \fIname\fP [\fImodule\-options\fP...]] [\fB\-j\fP \fItarget\-name\fP [\fItarget\-options\fP...] .SH "КРИТЕРИИ ДОПОЛНИТЕЛЬНЫЕ" iptables can use extended packet matching modules with the \fB\-m\fP or \fB\-\-match\fP options, followed by the matching module name; after these, various extra command line options become available, depending on the specific module. You can specify multiple extended match modules in one line, and you can use the \fB\-h\fP or \fB\-\-help\fP options after the module has been specified to receive help specific to that module. The extended match modules are evaluated in the order they are specified in the rule. .PP .\" @MATCH@ Если был указан параметр \fB\-p\fP или \fB\-\-protocol\fP и если (и только если) встретится неизвестный параметр, то iptables попытается загрузить соответствующий модуль с тем же наименованием, что и протокол, чтобы попытаться сделать параметр доступным. .SS addrtype Модуль критерия соответствия пакета типу адреса. Типы адресов используются в сетевом стеке ядра и классифицируют адреса по различным группам. Точное определение этой группы зависит от конкретного протокола третьего (межсетевого) уровня. .PP Поддерживаются следующие типы адресов: .TP \fBUNSPEC\fP \- реально не существующий, адрес (т.е. 0.0.0.0); .TP \fBUNICAST\fP \- реальный и единственный адрес; .TP \fBLOCAL\fP \- локальный адрес; .TP \fBBROADCAST\fP \- адрес широковещательной рассылки; .TP \fBANYCAST\fP \- адрес группы хостов, но запрос будет обработан только одним из хостов данной группы; .TP \fBMULTICAST\fP \- адрес многоадресной рассылки; .TP \fBBLACKHOLE\fP \- адрес "чёрной дыры" (пакет с таким адресом будет просто удалён; никаких сообщений отправителю пакета послано не будет); .TP \fBUNREACHABLE\fP \- недоступный адрес; .TP \fBPROHIBIT\fP \- запрещенный адрес; .TP \fBTHROW\fP \- фиктивный адрес. .TP \fBNAT\fP \- фиктивный адрес. .TP \fBXRESOLVE\fP .TP [\fB!\fP] \fB\-\-src\-type\fP \fItype\fP Критерий \- если исходящий адрес относится к заданному типу. .TP [\fB!\fP] \fB\-\-dst\-type\fP \fItype\fP Критерий \- если адрес назначения относится к заданному типу. .TP \fB\-\-limit\-iface\-in\fP Проверка типа адреса ограничена интерфейсом, через который пришёл пакет. Этот параметр действителен только в цепочках \fBPREROUTING\fP, \fBINPUT\fP и \fBFORWARD\fP. Этот параметр не может быть определен с помощью параметра \fB\-\-limit\-iface\-out\fP. .TP \fB\-\-limit\-iface\-out\fP Проверка типа адреса ограничена интерфейсом, через который отправляется пакет. Этот параметр действителен только в цепочках \fBPOSTROUTING\fP, \fBOUTPUT\fP и \fBFORWARD\fP. Этот параметр не может быть определен с помощью параметра \fB\-\-limit\-iface\-in\fP. .SS "ah (Специфика IPv6)" Модуль критерия соответствия параметров в заголовке аутентификации пакетов протокола IPSec. .TP [\fB!\fP] \fB\-\-ahspi\fP \fIspi\fP[\fB:\fP\fIspi\fP] Критерий SPI. .TP [\fB!\fP] \fB\-\-ahlen\fP \fIlength\fP Общая длина данного заголовка в октетах. .TP \fB\-\-ahres\fP Критерий \- если зарезервированное поле заполнено нулями. .SS "ah (Специфика IPv4)" Модуль критериев соответствия SPI в заголовке аутентификации пакетов протокола IPSec. .TP [\fB!\fP] \fB\-\-ahspi\fP \fIspi\fP[\fB:\fP\fIspi\fP] .SS bpf Модуль критерия, использующий фильтр сокетов Linux. Модуль использует путь к объекту eBPF или к программе cBPF в десятичном формате. .TP \fB\-\-object\-pinned\fP \fIpath\fP Передаёт путь к закрепленному объекту eBPF. .PP Приложения загружают программы eBPF в ядро с помощью системного вызова bpf() и команды BPF_PROG_LOAD и могут закрепить их в виртуальной файловой системе с помощью BPF_OBJ_PIN. Чтобы использовать закрепленный объект в iptables, смонтируйте файловую систему bpf с помощью .IP mount \-t bpf bpf ${BPF_MOUNT} .PP затем вставьте фильтр пути в iptables: .IP iptables \-A OUTPUT \-m bpf \-\-object\-pinned ${BPF_MOUNT}/{PINNED_PATH} \-j ACCEPT .TP \fB\-\-bytecode\fP \fIcode\fP Передать формат байт\-кода BPF, созданный утилитой \fBnfbpf_compile\fP utility. .PP Формат кода аналогичен выводу команды tcpdump \-ddd: одна строка, в которой хранится количество инструкций, за которой следует по одной строке для каждой инструкции. Строки команд следуют шаблону "u16 u8 u8 u32" в десятичной системе счисления. Поля кодируют операцию смещение перехода, если оно истинно, смещение перехода, если оно ложно и общее, многоразового применения, поле "K". Комментарии не поддерживаются. .PP Например, чтобы читать только пакеты, соответствующие "ip proto 6", вставьте следующее, без комментариев или завершающих пробелов: .IP 4 # номер команды .br 48 0 0 9 # загрузка байта ip\->proto .br 21 0 1 6 # прыжок равный IPPROTO_TCP .br 6 0 0 1 # обратный проход (ненулевой) .br 6 0 0 0 # возвращение ошибки (ноль) .PP Вы можете передать этот критерий в фильтр bpf с помощью следующей команды: .IP iptables \-A OUTPUT \-m bpf \-\-bytecode '4,48 0 0 9,21 0 1 6,6 0 0 1,6 0 0 0' \-j ACCEPT .PP Или, вместо этого, вы можете вызвать утилиту nfbpf_compile: .IP iptables \-A OUTPUT \-m bpf \-\-bytecode "`nfbpf_compile RAW 'ip proto 6'`" \-j ACCEPT .PP Или используйте tcpdump \-ddd. В этом случае создайте BPF, предназначенный для устройства с тем же типом канала передачи данных, который соответствует xtables. Iptables передает пакеты с сетевого уровня вверх, без mac\-уровня. Выберите устройство с типом канала передачи данных RAW, например устройство tun: .IP ip tuntap add tun0 mode tun .br ip link set tun0 up .br tcpdump \-ddd \-i tun0 ip proto 6 .PP Список известных типов каналов передачи данных для данного устройства может быть просмотрен с помощью команды tcpdump \-L \-i $dev. .PP Возможно, вы захотите узнать больше о BPF на странице руководства bpf(4) FreeBSD. .SS cgroup .TP [\fB!\fP] \fB\-\-path\fP \fIpath\fP Модуль критерия членства в группе 2. Каждый сокет связан с группой создания процесса v2c. Этот модуль проверяет соответствие пакетов, поступающих из всех сокетов в подиерархии указанного пути или направляющиеся ко всем сокетам указанного пути. Путь должен быть определён относительно корня иерархии группы 2. .TP [\fB!\fP] \fB\-\-cgroup\fP \fIclassid\fP Критерий класса группы net_cls. classid \- это маркер, установленный с помощью контроллера cgroup net_cls. Этот параметр и параметр \-\-path нельзя использовать вместе. .PP Например: .IP iptables \-A OUTPUT \-p tcp \-\-sport 80 \-m cgroup ! \-\-path service/http\-server \-j DROP .IP iptables \-A OUTPUT \-p tcp \-\-sport 80 \-m cgroup ! \-\-cgroup 1 \-j DROP .PP \fBIMPORTANT\fP: При использовании в цепочке INPUT модуль cgroup в настоящее время обладает ограниченной функциональностью, это означает, что он будет проверять только пакеты, которые обрабатываются для локальных сокетов посредством раннего демультиплексирования сокетов. Следовательно, общее использование в цепочке INPUT не рекомендуется, если только вы хорошо понимаете какие могут быть последствия. .PP Доступен начиная с Linux версии 3.14. .SS cluster Этот модуль позволяет развертывать шлюзовые и серверные кластеры с общим распределением нагрузки без использования средств балансировки нагрузки. .PP Модуль этого критерия требует, чтобы все узлы видели одни и те же пакеты. Этот модуль решает, должен ли этот узел обрабатывать пакет, на основе следующих параметров: .TP \fB\-\-cluster\-total\-nodes\fP \fInum\fP Задаёт общее количество узлов в кластере. .TP [\fB!\fP] \fB\-\-cluster\-local\-node\fP \fInum\fP Задаёт номер идентификатора локального узла. .TP [\fB!\fP] \fB\-\-cluster\-local\-nodemask\fP \fImask\fP Устанавливает маску идентификатора номера локального узла. Вы можете использовать этот параметр вместо \-\-cluster\-local\-node. .TP \fB\-\-cluster\-hash\-seed\fP \fIvalue\fP Задаёт начальное значение хэша Дженкинса. Например: .PP Например: .IP iptables \-A PREROUTING \-t mangle \-i eth1 \-m cluster \-\-cluster\-total\-nodes 2 \-\-cluster\-local\-node 1 \-\-cluster\-hash\-seed 0xdeadbeef \-j MARK \-\-set\-mark 0xffff .IP iptables \-A PREROUTING \-t mangle \-i eth2 \-m cluster \-\-cluster\-total\-nodes 2 \-\-cluster\-local\-node 1 \-\-cluster\-hash\-seed 0xdeadbeef \-j MARK \-\-set\-mark 0xffff .IP iptables \-A PREROUTING \-t mangle \-i eth1 \-m mark ! \-\-mark 0xffff \-j DROP .IP iptables \-A PREROUTING \-t mangle \-i eth2 \-m mark ! \-\-mark 0xffff \-j DROP .PP Также должны быть выполнены следующие команды, чтобы заставить все узлы видеть одни и те же пакеты: .IP ip maddr add 01:00:5e:00:01:01 dev eth1 .IP ip maddr add 01:00:5e:00:01:02 dev eth2 .IP arptables \-A OUTPUT \-o eth1 \-\-h\-length 6 \-j mangle \-\-mangle\-mac\-s 01:00:5e:00:01:01 .IP arptables \-A INPUT \-i eth1 \-\-h\-length 6 \-\-destination\-mac 01:00:5e:00:01:01 \-j mangle \-\-mangle\-mac\-d 00:zz:yy:xx:5a:27 .IP arptables \-A OUTPUT \-o eth2 \-\-h\-length 6 \-j mangle \-\-mangle\-mac\-s 01:00:5e:00:01:02 .IP arptables \-A INPUT \-i eth2 \-\-h\-length 6 \-\-destination\-mac 01:00:5e:00:01:02 \-j mangle \-\-mangle\-mac\-d 00:zz:yy:xx:5a:27 .PP \fBПРИМЕЧАНИЕ\fP: Приведенные выше команды iptables используют основной синтаксис. Если вы используете программу arptables\-jf, содержащуюся в некоторых версиях RedHat, CentOS и Fedora, то вы столкнетесь с синтаксическими ошибками. Следовательно, чтобы заставить их работать, вам придется адаптировать их к синтаксису arptables\-jf. .PP В случае TCP\-соединений средство pickup facility должно быть отключено, чтобы избежать маркировки пакетов TCP ACK, поступающих в направлении ответа, как действительных. .IP echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose .SS comment Этот модуль позволяет добавлять комментарии (длиной до 256 символов) к любому правилу. .TP \fB\-\-comment\fP \fIcomment\fP .TP Например: iptables \-A INPUT \-i eth1 \-m comment \-\-comment "my local LAN" .SS connbytes Модуль критерия количества байт или пакетов, переданных соединением (или одним из двух потоков, составляющих соединение) на данный момент или среднего количества байт в пакете. .PP Счетчики являются 64\-разрядными и поэтому не ожидается их переполнения. .PP Основное применение \- обнаружение длительных загрузок и маркировка их как запланированных с использованием диапазона с более низким приоритетом в системе управления трафиком. .PP Переданные байты для каждого соединения также можно просмотреть с помощью команды conntrack \-L, получить доступ можно с помощью ctnetlink. .PP ПРИМЕЧАНИЕ: Для соединений, у которых нет учетной информации, критерий всегда будет возвращать значение false. Флаг sysctl "net.netfilter.nf_conntrack_acct" определяет, будут ли подсчитываться байты или пакеты в соединениях \fBnew\fP. Существующие потоки соединений не будут получать или терять учётную информацию при изменении состояния флага sysctl. .TP [\fB!\fP] \fB\-\-connbytes\fP \fIfrom\fP[\fB:\fP\fIto\fP] Критерий соответствия пакетов в соединении (пакеты/байты/средний размер пакета) диапазону более FROM и менее TO байт/пакетов; когда TO не определено, то выполняется проверка только FROM. Символ "!" используется для проверки пакетов, не попадающих в заданный диапазон. .TP \fB\-\-connbytes\-dir\fP {\fBoriginal\fP|\fBreply\fP|\fBboth\fP} Определяет какие пакеты следует учитывать. .TP \fB\-\-connbytes\-mode\fP {\fBpackets\fP|\fBbytes\fP|\fBavgpkt\fP} Определяет следует ли проверять количество пакетов, количество переданных байт или средний размер (в байтах) всех полученных на данный момент пакетов. Примечание: Когда используется "both" вместе с "avgpkt", а данные (в основном) передаются только в одном направлении, например, при HTTP) средний размер пакета будет составлять около половины фактических размеров пакетов. Пример: iptables .. \-m connbytes \-\-connbytes 10000:100000 \-\-connbytes\-dir both \-\-connbytes\-mode bytes ... .TP Например: iptables .. \-m connbytes \-\-connbytes 10000:100000 \-\-connbytes\-dir both \-\-connbytes\-mode bytes ... .SS connlabel Модуль проверяет соответствие бирок соединения критерию или добавляет бирки соединения к соединению. Бирки соединения аналогичны меткам соединения, за исключением того, что бирки основаны на битах (т.е. все бирки могут быть прикреплены к потоку одновременно). В настоящее время поддерживается до 128 уникальных бирок. .TP [\fB!\fP] \fB\-\-label\fP \fBname\fP Критерий \- если для соединения была установлена бирка с именем \fBname\fP. Вместо имени (которое будет преобразовано в число, смотрите пример ниже) может использоваться число. Использование числа всегда переопределяет значение в конфигурационном файле connlabel.conf. .TP \fB\-\-set\fP Устанавливает бирку соединения (если бирка не установлена, то она будет установлена). Примечание: Установка бирки может завершиться ошибкой. Это происходит потому, что ядро выделяет область хранения бирок conntrack при создании соединения и резервирует только тот объем памяти, который требуется для набора правил, существующего на момент создания соединения. В этом случае проверка соответствия будет не успешной (или успешной, в случае, когда параметр \fB\-\-label\fP был отменен). .PP Этот критерий зависит от версии libnetfilter_conntrack 1.0.4 или более поздней. Преобразование бирок выполняется с помощью конфигурационного файла /etc/xtables/connlabel.conf. Например: .PP Например: .IP .nf 0 eth0\-in 1 eth0\-out 2 ppp\-in 3 ppp\-out 4 bulk\-traffic 5 interactive .fi .PP .SS connlimit Этот модуль позволяет ограничить количество параллельных соединений с сервером для каждого адреса клиента или для блока клиентских адресов. .TP \fB\-\-connlimit\-upto\fP \fIn\fP Критерий \- если количество существующих подключений меньше или равно \fIn\fP. .TP \fB\-\-connlimit\-above\fP \fIn\fP Критерий \- если количество существующих соединений более \fIn\fP. .TP \fB\-\-connlimit\-mask\fP \fIprefix_length\fP Объединение хостов в группы по критерию длины префикса. Для IPv4 это должно быть число от 0 до 32. Для IPv6 \- от 0 до 128. Если значение не указано, то используется максимальная длина префикса для применяемого протокола. .TP \fB\-\-connlimit\-saddr\fP Применение ограничения для группы источников. Это применяется по умолчанию, кода параметр \-\-connlimit\-daddr не определён. .TP \fB\-\-connlimit\-daddr\fP Apply the limit onto the destination group. .PP Примеры: .TP # Разрешить 2 соединения telnet для каждого клиентского хоста: iptables \-A INPUT \-p tcp \-\-syn \-\-dport 23 \-m connlimit \-\-connlimit\-above 2 \-j REJECT .TP # Однако можно также определить критерий и наоборот: iptables \-A INPUT \-p tcp \-\-syn \-\-dport 23 \-m connlimit \-\-connlimit\-upto 2 \-j ACCEPT .TP # Ограничить количество параллельных HTTP\-запросов до 16 из сети источника класса C (24\-разрядная маска сети): iptables \-p tcp \-\-syn \-\-dport 80 \-m connlimit \-\-connlimit\-above 16 \-\-connlimit\-mask 24 \-j REJECT .TP # Ограничить количество параллельных HTTP\-запросов не более 16 для соединений локальной сети (ipv6): (ipv6) ip6tables \-p tcp \-\-syn \-\-dport 80 \-s fe80::/64 \-m connlimit \-\-connlimit\-above 16 \-\-connlimit\-mask 64 \-j REJECT .TP # Ограничить количество подключений к данному хосту: ip6tables \-p tcp \-\-syn \-\-dport 49152:65535 \-d 2001:db8::1 \-m connlimit \-\-connlimit\-above 100 \-j REJECT .SS connmark Это модуль критерия поля метки сетевого фильтра, связанной с соединением; метка может быть установлена с помощью цели \fBCONNMARK\fP, которая определена ниже. .TP [\fB!\fP] \fB\-\-mark\fP \fIvalue\fP[\fB/\fP\fImask\fP] Критерий пакетов в соединениях с заданным значением метки (если указана маска, то маска и метка, перед сравнением, обрабатываются совместно с помощью операции логическое И). .SS conntrack Этот модуль, в сочетании с отслеживанием соединения, обеспечивает доступ к отслеживанию состояния соединения для данного пакета или соединения. .TP [\fB!\fP] \fB\-\-ctstate\fP \fIstatelist\fP Параметр statelist это \- разделенный запятыми список, который является списком критериев для данного соединения. Возможные состояния перечислены ниже. .TP [\fB!\fP] \fB\-\-ctproto\fP \fIl4proto\fP Критерий протокола уровня 4 (по номеру или названию). .TP [\fB!\fP] \fB\-\-ctorigsrc\fP \fIaddress\fP[\fB/\fP\fImask\fP] .TP [\fB!\fP] \fB\-\-ctorigdst\fP \fIaddress\fP[\fB/\fP\fImask\fP] .TP [\fB!\fP] \fB\-\-ctreplsrc\fP \fIaddress\fP[\fB/\fP\fImask\fP] .TP [\fB!\fP] \fB\-\-ctrepldst\fP \fIaddress\fP[\fB/\fP\fImask\fP] Критерий отношения запрос/ответ адрес источника/адреса назначения. .TP [\fB!\fP] \fB\-\-ctorigsrcport\fP \fIport\fP[\fB:\fP\fIport\fP] .TP [\fB!\fP] \fB\-\-ctorigdstport\fP \fIport\fP[\fB:\fP\fIport\fP] .TP [\fB!\fP] \fB\-\-ctreplsrcport\fP \fIport\fP[\fB:\fP\fIport\fP] .TP [\fB!\fP] \fB\-\-ctrepldstport\fP \fIport\fP[\fB:\fP\fIport\fP] Критерий отношения запрос/ответ порт источника/порт назначения (TCP/UDP/и т.д.) или ключ GRE. Критерий для диапазона портов поддерживается только в версиях ядра выше 2.6.38. .TP [\fB!\fP] \fB\-\-ctstatus\fP \fIstatelist\fP Параметр statuslist это \- разделенный запятыми, список критериев статусов подключения. Возможные статусы приведены ниже. .TP [\fB!\fP] \fB\-\-ctexpire\fP \fItime\fP[\fB:\fP\fItime\fP] Критерий времени жизни в секундах с заданным значением или диапазоном значений (включительно). .TP \fB\-\-ctdir\fP {\fBORIGINAL\fP|\fBREPLY\fP} Критерий пакетов, которые передаются в указанном направлении. Если этот флаг не определён, то это \- критерий для пакетов в обоих направлениях. .PP Состояние для \fB\-\-ctstate\fP: .TP \fBINVALID\fP Пакет не связан ни с каким известным соединением. .TP \fBNEW\fP Пакет создал новое соединение или иным образом связан с соединением, в котором не отслеживались пакеты в обоих направлениях. .TP \fBESTABLISHED\fP Пакет связан с соединением, в котором отслеживались пакеты в обоих направлениях. .TP \fBRELATED\fP Пакет создал соединение, но связан с существующим соединением, таким как передача данных по FTP или ошибка ICMP. .TP \fBUNTRACKED\fP Пакет вообще не отслеживается; это происходит, когда вы явно отменяете его отслеживание, используя \-j CT \-\-notrac в таблице raw. .TP \fBSNAT\fP Виртуальное состояние, когда исходящий адрес источника отличается от адреса назначения ответа. .TP \fBDNAT\fP Виртуальное состояние, когда адрес назначения отличается от источника ответа. .PP Статусы для \fB\-\-ctstatus\fP: .TP \fBNONE\fP Ничего из перечисленного ниже. .TP \fBEXPECTED\fP Ожидаемое соединение (т.е. conntrack helper настроил его). .TP \fBSEEN_REPLY\fP Программа Conntrack отслеживает пакеты в обоих направлениях. .TP \fBASSURED\fP Срок действия записи программы Conntrack никогда не должен истекать досрочно. .TP \fBCONFIRMED\fP Соединение подтверждено: исходящий пакет покинул узел. .SS cpu .TP [\fB!\fP] \fB\-\-cpu\fP \fInumber\fP Модуль критерия процессора (cpu), обрабатывающего этот пакет. Процессоры пронумерованы от 0 до NR_CPUS\-1. Критерий может использоваться в сочетании с RPS (удаленное управление пакетами) или с много очередными сетевыми картами для распределения сетевого трафика по разным очередям. Например: .PP Например: .PP iptables \-t nat \-A PREROUTING \-p tcp \-\-dport 80 \-m cpu \-\-cpu 0 \-j REDIRECT \-\-to\-ports 8080 .PP iptables \-t nat \-A PREROUTING \-p tcp \-\-dport 80 \-m cpu \-\-cpu 1 \-j REDIRECT \-\-to\-ports 8081 .PP Доступен начиная с версии Linux 2.6.36. .SS dccp .TP [\fB!\fP] \fB\-\-source\-port\fP,\fB\-\-sport\fP \fIport\fP[\fB:\fP\fIport\fP] .TP [\fB!\fP] \fB\-\-destination\-port\fP,\fB\-\-dport\fP \fIport\fP[\fB:\fP\fIport\fP] .TP [\fB!\fP] \fB\-\-dccp\-types\fP \fImask\fP Модуль критерия одного из типов пакетов DCCP списка "mask". Список "mask"\- это список типов пакетов, разделенных запятыми. Типы пакетов: \fBREQUEST RESPONSE DATA ACK DATAACK CLOSEREQ CLOSE RESET SYNC SYNCACK INVALID\fP. .TP [\fB!\fP] \fB\-\-dccp\-option\fP \fInumber\fP Критерий работает когда определён параметр DCCP. .SS devgroup Модуль критерия принадлежности пакета к группе устройств входящего или исходящего интерфейса. Параметры: .TP [\fB!\fP] \fB\-\-src\-group\fP \fIname\fP Критерий принадлежности устройства к группе входящего интерфейса. .TP [\fB!\fP] \fB\-\-dst\-group\fP \fIname\fP Критерий принадлежности устройства к группе исходящего интерфейса. .SS dscp Модуль критерия соответствия 6\-разрядному полю DSCP в поле TOS заголовка IP. DSCP заменил TOS в IETF (см. RFC 2638). .TP [\fB!\fP] \fB\-\-dscp\fP \fIvalue\fP Критерий сравнения числового (десятичного или шестнадцатеричного) значения (value) [0\-63]. .TP [\fB!\fP] \fB\-\-dscp\-class\fP \fIclass\fP Критерий класса DiffServ. Это значение может быть любым из классов BE, EF, AFxx или CSx. Затем оно будет преобразовано в соответствующее числовое значение. .SS "dst (Специфика IPv6)" Модуль критерия параметров в заголовке "Параметры назначения". .TP [\fB!\fP] \fB\-\-dst\-len\fP \fIlength\fP Общая длина данного заголовка в октетах. .TP \fB\-\-dst\-opts\fP \fItype\fP[\fB:\fP\fIlength\fP][\fB,\fP\fItype\fP[\fB:\fP\fIlength\fP]...] Числовой тип параметра и длина данных параметра в октетах. .SS ecn Модуль критерия битов заголовка ECN IPv4/IPv6 и TCP. ECN это \- явный механизм уведомления о перегрузке, определенный в RFC 3168. .TP [\fB!\fP] \fB\-\-ecn\-tcp\-cwr\fP Критерий работает тогда, когда установлен бит TCP ECN CWR (получено окно перегрузки). .TP [\fB!\fP] \fB\-\-ecn\-tcp\-ece\fP Критерий работает тогда, когда установлен бит TCP ECN ECE (эхо ECN). .TP [\fB!\fP] \fB\-\-ecn\-ip\-ect\fP \fInum\fP Критерий конкретного протокола ECT IPv4/IPv6 (транспорт с поддержкой ECN). Вы должны указать число от "0" до "3". .SS esp Модуль критерия SPI в заголовке ESP пакетов IPSec. .TP [\fB!\fP] \fB\-\-espspi\fP \fIspi\fP[\fB:\fP\fIspi\fP] .SS "eui64 (Специфика IPv6)" Этот модуль является частью EUI\-64 автоматически сконфигурированного IPv6\-адреса без состояния. Он сравнивает EUI\-64, полученный из исходящего MAC\-адреса в кадре Ethernet, с младшими 64 битами исходящего адреса IPv6. Однако бит "универсальный/локальный " не сравнивается. Этот модуль не имеет другого кадра канального уровня и работает только в цепочках \fBPREROUTING\fP, \fBINPUT\fP и \fBFORWARD\fP. .SS "frag (Специфика IPv6)" Модуль критериев параметров в заголовке фрагмента. .TP [\fB!\fP] \fB\-\-fragid\fP \fIid\fP[\fB:\fP\fIid\fP] Критерии заданного идентификатора или его диапазона. .TP [\fB!\fP] \fB\-\-fraglen\fP \fIlength\fP Этот параметр нельзя использовать в ядре версии 2.6.10 или более поздней версии. Длина заголовка фрагмента статична и этот параметр не имеет смысла. .TP \fB\-\-fragres\fP Критерий заполнения зарезервированных полей нулем. .TP \fB\-\-fragfirst\fP Критерий первого фрагмента. .TP \fB\-\-fragmore\fP Критерий, если фрагментов много. .TP \fB\-\-fraglast\fP Критерий последнего фрагмента. .SS hashlimit Критерий \fBhashlimit\fP использует хэш\-накопитель для быстрого ограничения скорости группы соединений, использующих правило iptables \fBsingle\fP (также как критерий \fBlimit\fP). Группировка может быть выполнена для каждой группы хостов (адрес источника и/или адрес назначения) и/или для каждого порта. Это дает возможность задавать количество пакетов "\fIN\fP в единицу времени для каждой группы или количество байт "\fIN\fP в секунду" (некоторые примеры приведены ниже). Примечание переводчика. Смотрите примечание к критерию limit ниже. .PP Параметры hash limit ((\fB\-\-hashlimit\-upto\fP, \fB\-\-hashlimit\-above\fP) и \fB\-\-hashlimit\-name\fP являются обязательными. .TP \fB\-\-hashlimit\-upto\fP \fIamount\fP[\fB/second\fP|\fB/minute\fP|\fB/hour\fP|\fB/day\fP] Критерий \- если скорость ниже или равна \fIamount\fP/quantum (количество/единица времени). Скорость указывается либо в виде числа с необязательным суффиксом единицы времени, либо в виде \fIamount\fPb/second (число байт за секунду). Значение по умолчанию: 3/hour (3/час). .TP \fB\-\-hashlimit\-above\fP \fIamount\fP[\fB/second\fP|\fB/minute\fP|\fB/hour\fP|\fB/day\fP] Критерий \- если скорость более \fIamount\fP/quantum. .TP \fB\-\-hashlimit\-burst\fP \fIamount\fP Этот параметр определяет предельно\-допустимое количество пакетов в хеш\-накопителе. Количество пакетов в хеш\-накопителе увеличивается на единицу с каждым вновь прибывшем пакетом и, до тех пор пока не будет достигнуто значение, которое определено этим параметром. Значение по умолчанию: 5. Когда запрашивается соответствие скорости на основе байтов, то этот параметр определяет количество байтов, которое может превышать заданную скорость. Этот параметр следует использовать с осторожностью \- если срок действия записи истекает, то значение также сбрасывается. .TP \fB\-\-hashlimit\-mode\fP {\fBsrcip\fP|\fBsrcport\fP|\fBdstip\fP|\fBdstport\fP}\fB,\fP... Список объектов, разделенных запятыми, которые необходимо учитывать. Если параметр \-\-hashlimit\-mode не задан, то критерий hashlimit работает также как критерий limit, но путём выполнения хеширования. .TP \fB\-\-hashlimit\-srcmask\fP \fIprefix\fP Когда используется выражение \-\-hashlimit\-mode srcip, все встречающиеся исходящие адреса будут сгруппированы в соответствии с заданной длиной префикса (prefix) и на созданную таким образом подсеть будет распространяться hashlimit. Значение префикса должно быть в диапазоне от 0 до 32, включительно. Обратите внимание, что \-\-hashlimit\-srcmask 0 в основном делает то же самое, когда не определено значение srcip для параметра \-\-hashlimit\-mode, но технически это дороже. .TP \fB\-\-hashlimit\-dstmask\fP \fIprefix\fP Тоже, что \-\-hashlimit\-srcmask, но только для адресов назначения. .TP \fB\-\-hashlimit\-name\fP \fIfoo\fP Имя для записи в /proc/net/ipt_hashlimit/foo. .TP \fB\-\-hashlimit\-htable\-size\fP \fIbuckets\fP Количество элементов хэш\-таблицы. .TP \fB\-\-hashlimit\-htable\-max\fP \fIentries\fP Максимальное количество записей в хэше. .TP \fB\-\-hashlimit\-htable\-expire\fP \fImsec\fP Сколько миллисекунд проходит до истечения срока действия записей в хеше. .TP \fB\-\-hashlimit\-htable\-gcinterval\fP \fImsec\fP Сколько миллисекунд проходит между интервалами уборки "мусора". .TP \fB\-\-hashlimit\-rate\-match\fP Сортировать поток вместо того, чтобы ограничивать его скорость. Это действует как соответствие истина/ложь в зависимости от значения уставки более/менее (above/below). .TP \fB\-\-hashlimit\-rate\-interval\fP \fIsec\fP Может использоваться с параметром \-\-hashlimit\-rate\-match для указания интервала, с которым должна производиться выборка. Примеры: .PP Примеры: .TP Критерий скорости для исходящего хоста: "1000 пакетов в секунду для каждого хоста сети 192.168.0.0/16"=> \-s 192.168.0.0/16 \-\-hashlimit\-mode srcip \-\-hashlimit\-upto 1000/sec .TP Критерий для исходящего порта: "100 пакетов в секунду для каждой службы хоста 192.168.1.1" => \-s 192.168.1.1 \-\-hashlimit\-mode srcport \-\-hashlimit\-upto 100/sec .TP Критерий для подсети: "10000 пакетов в минуту для каждой подсети /28 (группы по 8 адресов) сети 10.0.0.0/8" => \-s 10.0.0.0/8 \-\-hashlimit\-mask 28 \-\-hashlimit\-upto 10000/min .TP Критерий байт в секунду: "потоки, превышающие 512kbyte/s" => \-\-hashlimit\-mode srcip,dstip,srcport,dstport \-\-hashlimit\-above 512kb/s .TP Критерий байт в секунду: "хостам, скорость которых превышает 512 Кбайт/с разрешить скорость до 1 мегабайта/с без согласования" \-\-hashlimit\-mode dstip \-\-hashlimit\-above 512kb/s \-\-hashlimit\-burst 1mb .SS "hbh (Специфика IPv6)" Модуль критерия параметров заголовка Hop\-by\-Hop (переход за переходом). .TP [\fB!\fP] \fB\-\-hbh\-len\fP \fIlength\fP (Общая длина данного заголовка в октетах). Общая длина данного заголовка в октетах. .TP \fB\-\-hbh\-opts\fP \fItype\fP[\fB:\fP\fIlength\fP][\fB,\fP\fItype\fP[\fB:\fP\fIlength\fP]...] (Числовой тип параметра и длина данных параметра в октетах). Числовой тип параметра и длина данных параметра в октетах. .SS helper Модуль критерия пакетов, применительно к специфике conntrack\-helper. .TP [\fB!\fP] \fB\-\-helper\fP \fIstring\fP Критерии пакетов относящихся к специфике conntrack\-helper. .RS .PP Строкой (string) может быть "ftp" для пакетов, относящихся к ftp\-сессии на порту по умолчанию. Для других портов добавьте к строке "ftp" номер порта через дефис, т.е. "ftp\-2121". .PP Тоже самое применимо и к другим правилам conntrack\-helpers. .RE .SS "hl (Специфика Pv6)" Этот модуль определяет критерии поля переходов в заголовке IPv6. .TP [\fB!\fP] \fB\-\-hl\-eq\fP \fIvalue\fP Критерий \- если допустимое количество переходов равно значению (\fIvalue\fP). .TP \fB\-\-hl\-lt\fP \fIvalue\fP Критерий \- если допустимое количество переходов менее значения (value). .TP \fB\-\-hl\-gt\fP \fIvalue\fP Критерий \- если допустимое количество переходов более значения (value). .SS "icmp (Специфика IPv4)" Это дополнение можно использовать, если определён параметр "\-\-protocol icmp". Дополнение поддерживает следующий параметр: .TP [\fB!\fP] \fB\-\-icmp\-type\fP {\fItype\fP[\fB/\fP\fIcode\fP]|\fItypename\fP} Позволяет указать тип ICMP, который может быть числом типа ICMP, парой тип/код (type/code) или одним из наименований типа ICMP, отображаемых командой: .nf iptables \-p icmp \-h .fi .SS "icmp6 (Специфика IPv6)" Это дополнение можно использовать, если определен параметр "\-\-protocol ipv6\-icmp" или параметр "\-\-protocol icmpv6". Оно поддерживает следующий параметр: .TP [\fB!\fP] \fB\-\-icmpv6\-type\fP \fItype\fP[\fB/\fP\fIcode\fP]|\fItypename\fP Определяет тип ICMPv6, который может быть числом типа ICMPv6, типом (\fItype\fP) и кодом (\fIcode\fP) или одним из наименований типа ICMPv6, отображаемых командой: .nf ip6tables \-p ipv6\-icmp \-h .fi .SS iprange Это критерий для произвольно заданного диапазона IP\-адресов. .TP [\fB!\fP] \fB\-\-src\-range\fP \fIfrom\fP[\fB\-\fP\fIto\fP] Критерий \- если IP\-адрес источника находится в указанном диапазоне. .TP [\fB!\fP] \fB\-\-dst\-range\fP \fIfrom\fP[\fB\-\fP\fIto\fP] Критерий \- если IP\-адрес назначения находится в указанном диапазоне. .SS "ipv6header (Специфика IPv6)" Модуль критерия дополнительных заголовков IPv6 и/или заголовков верхнего уровня. .TP \fB\-\-soft\fP Критерий \- если пакет включает любой (\fBany\fP) из заголовков, определённых с помощью параметра \fB\-\-header\fP. .TP [\fB!\fP] \fB\-\-header\fP \fIheader\fP[\fB,\fP\fIheader\fP...] Критерий \- если пакет ТОЧНО содержит все указанные заголовки. Заголовки, инкапсулированные с помощью заголовка ESP, находятся вне области видимости. Возможные типы заголовков \fIheader\fP могут быть: .TP \fBhop\fP|\fBhop\-by\-hop\fP Заголовок параметров переходов. .TP \fBdst\fP Заголовок параметра пункта назначения. .TP \fBroute\fP Заголовок маршрутизации. .TP \fBfrag\fP Заголовок фрагмента. .TP \fBauth\fP Заголовок аутентификации. .TP \fBesp\fP Инкапсулирующий заголовок безопасной полезной нагрузки. .TP \fBnone\fP Нет следующего заголовка, который соответствует 59 в "Поле следующего заголовка" ('Next Header field') заголовка IPv6 или любых расширений заголовка IPv6. .TP \fBprot\fP Критерий \- если соответствует любому заголовку протокола верхнего уровня. Также допустимо использовать наименование протокола из файла /etc/protocols и числовое значение. Число 255 эквивалентно термину \fBprot\fP. .SS ipvs Критерий свойств соединения IPVS. .TP [\fB!\fP] \fB\-\-ipvs\fP Пакет принадлежит соединению IPVS. .TP Любой из нижеследующих параметров подразумевает \-\-ipvs (даже отрицаемый, т. е. когда перед ним стоит символ "!"). .TP [\fB!\fP] \fB\-\-vproto\fP \fIprotocol\fP Соответствует протоколу VIP; по номеру или названию, например "tcp". .TP [\fB!\fP] \fB\-\-vaddr\fP \fIaddress\fP[\fB/\fP\fImask\fP] Соответствует адресу VIP. .TP [\fB!\fP] \fB\-\-vport\fP \fIport\fP Соответствует порту VIP; по номеру или названию, например, "http". .TP \fB\-\-vdir\fP {\fBORIGINAL\fP|\fBREPLY\fP} Направление потока пакета. .TP [\fB!\fP] \fB\-\-vmethod\fP {\fBGATE\fP|\fBIPIP\fP|\fBMASQ\fP} Используемый метод перенаправления IPVS. .TP [\fB!\fP] \fB\-\-vportctl\fP \fIport\fP Порт VIP соединения соответствует управляющему порту, например, 21 для FTP. .SS length Модуль критерия длительности загрузки пакета 3\-го уровня (например, пакет 4\-го уровня) с указанным значением или диапазоном значений. .TP [\fB!\fP] \fB\-\-length\fP \fIlength\fP[\fB:\fP\fIlength\fP] .SS limit Это модуль критерия ограничения трафика на основе накопительного фильтра токенов (т.е. 1 пакет \- 1 токен, 2 пакета \- 2 токена и так далее). Правило, использующее этот критерий, проверяет, что заданное предельно\-допустимое количество токенов не превышено. Например, этот модуль можно использовать, совместно с целью \fBLOG\fP для ограничения размера журнала. .PP xt_limit не поддерживает отрицание \- вам придется использовать \-m hashlimit ! \-\-hashlimit \fIrate\fP и не использовать параметр \-\-hashlimit\-mode. .TP \fB\-\-limit\fP \fIrate\fP[\fB/second\fP|\fB/minute\fP|\fB/hour\fP|\fB/day\fP] Этот параметр определяет скорость принудительного удаления токенов из фильтра. Скорость может быть определена в токенах за "second" (секунду), "minute" (минуту), "hour" (час) или за "day" (сутки). Значение по умолчанию: 3/hour (3 токена/час). .TP \fB\-\-limit\-burst\fP \fInumber\fP Этот параметр определяет предельно\-допустимое количество токенов (пакетов) в накопительном фильтре. Количество токенов в накопительном фильтре увеличивается на единицу с каждым вновь прибывшем пакетом и, до тех пор пока не будет достигнуто значение, которое определено этим параметром. Значение по умолчанию: 5 токенов. Примечание переводчика. Подробные сведения по применению данного критерия содержаться в документах: Oskar Andreasson. "Iptables Tutorial 1.2.2", 2001\-2006, (https://www.frozentux.net/iptables\-tutorial/iptables\-tutorial.html) или Oskar Andreasson. "Iptables Tutorial 1.1.19", 2001\-2003. Перевод с английского А. Киселёва. .SS mac .TP [\fB!\fP] \fB\-\-mac\-source\fP \fIaddress\fP Критерий \- соответствует MAC\-адресу источника. Адрес должен иметь вид XX:XX:XX:XX:XX:XX:XX. Обратите внимание, что это имеет смысл только для пакетов, поступающих с устройств Ethernet и попадающих в цепочки \fBPREROUTING\fP, \fBFORWARD\fP или \fBINPUT\fP. .SS mark Модуль критерия поля метки netfilter, связанной с пакетом (поле может быть определено с помощью цели \fBMARK\fP, смотрите ниже). .TP [\fB!\fP] \fB\-\-mark\fP \fIvalue\fP[\fB/\fP\fImask\fP] Критерий \- соответствует заданному значению (value) метки без знака (если определено значение маски (mask), то перед сравнением, выполняется операция логическое И со значением маски). .SS "mh (Специфика IPv6)" Дополнение загружается, если определён параметр "\-\-protocol ipv6\-mh" или "\-\-protocol mh". Дополнение поддерживает следующий параметр: .TP [\fB!\fP] \fB\-\-mh\-type\fP \fItype\fP[\fB:\fP\fItype\fP] Это позволяет указать тип заголовка мобильности (MH), который может быть числом типа MH или быть одним из наименований типа MH, выводимых командой: .nf ip6tables \-p mh \-h .fi .SS multiport Модуль используется для задания портов источника или портов назначения. Можно определить до 15 портов. Диапазон портов (port:port) считается за два порта. Модуль можно использовать только совместно с одним из следующих протоколов:: t\fBtcp\fP, \fBudp\fP, \fBudplite\fP, \fBdccp\fP and \fBsctp\fP. .TP [\fB!\fP] \fB\-\-source\-ports\fP,\fB\-\-sports\fP \fIport\fP[\fB,\fP\fIport\fP|\fB,\fP\fIport\fP\fB:\fP\fIport\fP]... Критерий \- если исходящий порт является одним из заданных портов. Флаг \fB\-\-sports\fP является удобным псевдонимом для этого параметра. Несколько портов или диапазонов портов разделяются запятой, а диапазон портов указывается с помощью двоеточия. Например, \fB53,1024:65535\fP означает, что критерию будут соответствовать порт 53 и все порты от 1024 до 65535. .TP [\fB!\fP] \fB\-\-destination\-ports\fP,\fB\-\-dports\fP \fIport\fP[\fB,\fP\fIport\fP|\fB,\fP\fIport\fP\fB:\fP\fIport\fP]... Критерий \- если порт назначения является одним из заданных портов. Флаг \fB\-\-dports\fP является удобным псевдонимом для этого параметра. .TP [\fB!\fP] \fB\-\-ports\fP \fIport\fP[\fB,\fP\fIport\fP|\fB,\fP\fIport\fP\fB:\fP\fIport\fP]... Критерий \- если исходящий порт или порт назначения равны одному из заданных портов. .SS nfacct Критерий nfacct предоставляет расширенную инфраструктуру учета для iptables. Вы должны использовать этот критерий вместе с автономной утилитой пользовательского пространства nfacct(8). .PP Единственным параметром, доступным для этого критерия, является: .TP \fB\-\-nfacct\-name\fP \fIname\fP Это позволяет вам указать существующее имя объекта, которое будет использоваться для учета трафика, который соответствует этому набору правил. .PP Для того, чтобы использовать это дополнение, вам необходимо создать объект учета: .IP nfacct add http\-traffic .PP Затем вы должны прикрепить его к объекту учета с помощью iptables: .IP iptables \-I INPUT \-p tcp \-\-sport 80 \-m nfacct \-\-nfacct\-name http\-traffic .IP iptables \-I OUTPUT \-p tcp \-\-dport 80 \-m nfacct \-\-nfacct\-name http\-traffic .PP После этого вы можете проверить размер трафика, соответствующий этим правилам: .IP nfacct get http\-traffic .IP { pkts = 00000000000000000156, bytes = 00000000000000151786 } = http\-traffic; .PP Вы можете загрузить nfacct(8) с сайта http://www.netfilter.org или, альтернативно, из репозитория git.netfilter.org. .SS osf Модуль osf выполняет пассивную дактилоскопию операционной системы. Этот модуль сравнивает некоторые данные (размер окна, MSS, параметры и их порядок, TTL, DF и другие) из пакетов с установленным битом SYN. .TP [\fB!\fP] \fB\-\-genre\fP \fIstring\fP Критерий \- соответствует стилю операционной системы на основании пассивной дактилоскопии. .TP \fB\-\-ttl\fP \fIlevel\fP Дополнительные проверки TTL пакета, чтобы определить операционную систему. Уровень (\fIlevel\fP) может принимать одно из следующих значений: .IP \(bu 4 0 \- истина (IP\-адрес и TTL\-копия равны). В основном это работает для локальных сетей. .IP \(bu 4 1 \- Проверить, не меньше ли TTL\-заголовк IP, чем значение дактилоскопии. Работает для адресов с глобальной маршрутизацией. .IP \(bu 4 2 \- Вообще не сравнивать TTL. .TP \fB\-\-log\fP \fIlevel\fP Регистрировать стили в dmesg, даже если они не соответствуют желаемому. Уровень регистрации ( \fIlevel\fP) может принимать одно из следующих значений: .IP \(bu 4 0 \- Регистрировать все соответствующие или неизвестные подписи. .IP \(bu 4 1 \- Регистрировать только первую. .IP \(bu 4 2 \- Регистрировать все известные соответствующие подписи. .PP Вы можете найти что\-то похожее в системном журнале: .PP Windows [2000:SP3:Windows XP Pro SP1, 2000 SP3]: 11.22.33.55:4024 \-> 11.22.33.44:139 hops=3 Linux [2.5\-2.6:] : 1.2.3.4:42624 \-> 1.2.3.5:22 hops=4 .PP Дактилоскопические отпечатки операционных систем можно загрузить с помощью программы nfnl_osf. Для загрузки дактилоскопических отпечатков из файла используйте: .PP \fBnfnl_osf \-f /usr/share/xtables/pf.os\fP .PP Чтобы удалить их снова используйте: .PP \fBnfnl_osf \-f /usr/share/xtables/pf.os \-d\fP .PP База данных отпечатков может быть загружена с сайта http://www.openbsd.org/cgi\-bin/cvsweb/src/etc/pf.os. .SS owner Модуль критерия соответствия пакета его владельцу; модуль пытается сопоставить различные характеристики создателя пакета для локально созданных пакетов. Использование этого модуля допустимо только в цепочках OUTPUT и POSROUTING. Пересылаемые пакеты не имеют связанного с ними сокета. Пакеты из потоков ядра имеют сокет, но обычно без владельца. .TP [\fB!\fP] \fB\-\-uid\-owner\fP \fIusername\fP .TP [\fB!\fP] \fB\-\-uid\-owner\fP \fIuserid\fP[\fB\-\fP\fIuserid\fP] Критерий \- если файловая структура сокета пакета (если она у него есть) принадлежит данному пользователю. Вы также можете указать числовой UID или диапазон UID. .TP [\fB!\fP] \fB\-\-gid\-owner\fP \fIgroupname\fP .TP [\fB!\fP] \fB\-\-gid\-owner\fP \fIgroupid\fP[\fB\-\fP\fIgroupid\fP] Критерий \- если файловая структура сокета пакета принадлежит данной группе. Вы также можете указать числовой идентификатор группы GID или диапазон групповых числовых идентификаторов GID. .TP \fB\-\-suppl\-groups\fP Это приводит к тому, что группа (группы), указанные с помощью \fB\-\-gid\-owner\fP, также проверяются в дополнительных группах процесса. .TP [\fB!\fP] \fB\-\-socket\-exists\fP Критерий \- если пакет связан с сокетом. .SS physdev Модуль критерия моста с портами, состоящими из устройств ввода и вывода, которые подключены к мосту. Этот модуль является частью инфраструктуры, которая обеспечивает прозрачный мостовой IP\-сетевой фильтр и может использоваться только в версиях ядра выше версии 2.5.44. .TP [\fB!\fP] \fB\-\-physdev\-in\fP \fIname\fP Имя интерфейса моста, через который принимается пакет (только для пакетов, поступающих в цепочки \fBINPUT\fP, \fBFORWARD\fP и \fBPREROUTING\fP). Если имя интерфейса заканчивается на "+", то этому имени будет соответствовать любой интерфейс, начинающийся с этого имени. Если пакет прибыл не через мост и если не используется символ "!", то этот пакет не будет соответствовать этому параметру. .TP [\fB!\fP] \fB\-\-physdev\-out\fP \fIname\fP Имя интерфейса моста, через который будет отправлен пакет (для пакетов, проходящих через мост в цепочки \fBFORWARD\fP и \fBPOSTROUTING\fP). Если имя интерфейса заканчивается на "+", то это означает, что соответствует любой интерфейс, начинающийся с этого имени. .TP [\fB!\fP] \fB\-\-physdev\-is\-in\fP Критерий \- если пакет пришел через интерфейс моста. .TP [\fB!\fP] \fB\-\-physdev\-is\-out\fP Критерий \- если пакет уходит через интерфейс моста. .TP [\fB!\fP] \fB\-\-physdev\-is\-bridged\fP Критерий \- если пакет передается через мосту и, следовательно, не маршрутизируется. Может использоваться только в цепочках FORWARD и POSTROUTING. .SS pkttype Модуль критерия типа пакета канального уровня. .TP [\fB!\fP] \fB\-\-pkt\-type\fP {\fBunicast\fP|\fBbroadcast\fP|\fBmulticast\fP} .SS policy Модуль критерия политики, используемой IPSec для обработки пакета. .TP \fB\-\-dir\fP {\fBin\fP|\fBout\fP} Параметр применяется для выбора критерия политики, используемой для декапсуляции или политики, которая будет использоваться для инкапсуляции. Для приходящих (\fBin\fP) пакетов может использоваться в цепочках PREROUTING, INPUT и FORWARD, а для уходящих (\fBin\fP) пакетов может использоваться в цепочках POSTROUTING, OUTPUT и FORWARD. .TP \fB\-\-pol\fP {\fBnone\fP|\fBipsec\fP} Параметр "\-\-pol ipsec" определяет критерий \- если пакет подлежит обработке по протоколу IPSec. Параметр \fB\-\-pol none\fP не может использоваться совместно с параметром \fB\-\-strict\fP. .TP \fB\-\-strict\fP Параметр выбора \- только точно соответствовать политике или соответствовать и тогда, когда хотя бы какое\-либо правило политики соответствует данной политике. .PP Для каждого элемента политики можно использовать один вариант или несколько нижеследующих вариантов. Когда используется параметр \fB\-\-strict\fP, для каждого элемента политики необходимо использовать не менее одного варианта. .TP [\fB!\fP] \fB\-\-reqid\fP \fIid\fP Критерий идентификатора запроса правила политики. Идентификатор запроса может быть указан с помощью setkey(8) с использованием, как уровня,\fBunique:id\fP. .TP [\fB!\fP] \fB\-\-spi\fP \fIspi\fP Критерий \- если SPI из SA. .TP [\fB!\fP] \fB\-\-proto\fP {\fBah\fP|\fBesp\fP|\fBipcomp\fP} Критерий \- если протокол инкапсуляции. .TP [\fB!\fP] \fB\-\-mode\fP {\fBtunnel\fP|\fBtransport\fP} Критерий \- если режим инкапсуляции. .TP [\fB!\fP] \fB\-\-tunnel\-src\fP \fIaddr\fP[\fB/\fP\fImask\fP] Критерий \- если исходящий адрес, является адресом конечной точки SA, которая работает в туннельном режиме. Действует только тогда, когда используется значение "tunnel", т.е. \fB\-\-mode tunnel\fP. .TP [\fB!\fP] \fB\-\-tunnel\-dst\fP \fIaddr\fP[\fB/\fP\fImask\fP] Критерий \- если адрес назначения, является адресом конечной точки SA, которая работает в туннельном режиме. Действует только тогда, когда используется значение "tunnel", т.е. \fB\-\-mode tunnel\fP. .TP \fB\-\-next\fP Запускает следующий элемент из спецификации политики. Может использоваться только с параметром \fB\-\-strict\fP. .SS quota Реализует сетевые квоты путем уменьшения счетчика байтов с каждым пакетом. Квота не превышена до тех пор, пока счетчик байтов не достигнет нулевого значения. Поведение меняется на противоположное при отрицании (т.е. квота превышена до тех пор, пока счетчик байтов не достигнет нуля). .TP [\fB!\fP] \fB\-\-quota\fP \fIbytes\fP Квота (quota) в байтах. .SS rateest Оценщик скорости может сопоставлять оцененные скорости, собранные целью RATEEST. Поддерживаются проверки соответствия по: абсолютным значениям bps/pps, по сравнению двух оценок скорости и по разности между двумя оценками скорости. .PP .\" * Absolute: Для лучшего понимания доступных параметров ниже приведены все возможные комбинации: .IP \(bu 4 \fBrateest\fP \fIoperator\fP \fBrateest\-bps\fP .IP \(bu 4 .\" * Absolute + Delta: \fBrateest\fP \fIoperator\fP \fBrateest\-pps\fP .IP \(bu 4 (\fBrateest\fP minus \fBrateest\-bps1\fP) \fIoperator\fP \fBrateest\-bps2\fP .IP \(bu 4 .\" * Relative: (\fBrateest\fP minus \fBrateest\-pps1\fP) \fIoperator\fP \fBrateest\-pps2\fP .IP \(bu 4 \fBrateest1\fP \fIoperator\fP \fBrateest2\fP \fBrateest\-bps\fP(without rate!) .IP \(bu 4 .\" * Relative + Delta: \fBrateest1\fP \fIoperator\fP \fBrateest2\fP \fBrateest\-pps\fP(without rate!) .IP \(bu 4 (\fBrateest1\fP minus \fBrateest\-bps1\fP) \fIoperator\fP (\fBrateest2\fP minus \fBrateest\-bps2\fP) .IP \(bu 4 (\fBrateest1\fP minus \fBrateest\-pps1\fP) \fIoperator\fP (\fBrateest2\fP minus \fBrateest\-pps2\fP) .TP \fB\-\-rateest\-delta\fP Для каждого оценщика (в абсолютном или относительном режиме) вычислить разность между скоростью, определенной оценщиком и статическим значением, выбранным с помощью параметров BPS/PPS. Если скорость потока превышает указанное значение BPS/PPS, то вместо отрицательного значения будет использоваться 0. Другими словами, будет использоваться "max(0, rateest#_rate \- rateest#_bps)". .TP [\fB!\fP] \fB\-\-rateest\-lt\fP Критерий \- если значение меньше заданного значения уставка/оценка. .TP [\fB!\fP] \fB\-\-rateest\-gt\fP Критерий \- если значение больше заданного значения уставка/оценка. .TP [\fB!\fP] \fB\-\-rateest\-eq\fP Match if rate is equal to given rate/estimator. .PP В так называемом "абсолютном режиме" используется только один оценщик скорости и выполняется сравнение с заданным значением (уставкой); в "относительном режиме" выполняется сравнение данных двух оценщиков скорости. .TP \fB\-\-rateest\fP \fIname\fP Наименование единственного оценщика для абсолютного режима. .TP \fB\-\-rateest1\fP \fIname\fP .TP \fB\-\-rateest2\fP \fIname\fP Наименования двух оценщиков для относительного режима. .TP \fB\-\-rateest\-bps\fP [\fIvalue\fP] .TP \fB\-\-rateest\-pps\fP [\fIvalue\fP] .TP \fB\-\-rateest\-bps1\fP [\fIvalue\fP] .TP \fB\-\-rateest\-bps2\fP [\fIvalue\fP] .TP \fB\-\-rateest\-pps1\fP [\fIvalue\fP] .TP \fB\-\-rateest\-pps2\fP [\fIvalue\fP] Сравнить оценочные значения по байтам или пакетам в секунду и сравнить с выбранным значением. Смотрите в приведенном выше списке, какой параметр следует использовать в том или ином случае. Могут использоваться следующие единицы измерения: бит, [kmgt]бит, [KMGT]ibit, Бит/с, [KMGT]Бит/с, [KMGT]iBps. .PP Пример: Как это можно использовать для маршрутизации исходящих соединений для передачи данных с FTP\-сервера по двум линиям в зависимости от доступной полосы пропускания на момент создание соединения для передачи данных: .PP # Оценка исходящего трафика: .PP iptables \-t mangle \-A POSTROUTING \-o eth0 \-j RATEEST \-\-rateest\-name eth0 \-\-rateest\-interval 250ms \-\-rateest\-ewma 0.5s .PP iptables \-t mangle \-A POSTROUTING \-o ppp0 \-j RATEEST \-\-rateest\-name ppp0 \-\-rateest\-interval 250ms \-\-rateest\-ewma 0.5s .PP # Метка на основе доступной полосы пропускания: .PP iptables \-t mangle \-A balance \-m conntrack \-\-ctstate NEW \-m helper \-\-helper ftp \-m rateest \-\-rateest\-delta \-\-rateest1 eth0 \-\-rateest\-bps1 2.5mbit \-\-rateest\-gt \-\-rateest2 ppp0 \-\-rateest\-bps2 2mbit \-j CONNMARK \-\-set\-mark 1 .PP iptables \-t mangle \-A balance \-m conntrack \-\-ctstate NEW \-m helper \-\-helper ftp \-m rateest \-\-rateest\-delta \-\-rateest1 ppp0 \-\-rateest\-bps1 2mbit \-\-rateest\-gt \-\-rateest2 eth0 \-\-rateest\-bps2 2.5mbit \-j CONNMARK \-\-set\-mark 2 .PP iptables \-t mangle \-A balance \-j CONNMARK \-\-restore\-mark .SS "realm (Специфика IPv4)" Критерий области маршрутизации. Области маршрутизации применяются в комплексных настройках маршрутизации, использующих протоколы динамической маршрутизации, например, BGP. .TP [\fB!\fP] \fB\-\-realm\fP \fIvalue\fP[\fB/\fP\fImask\fP] Критерий для заданного номера области (и, необязательно, маски). Если это не число, значением может быть именованная область из /etc/iproute2/rt_realms (маска в этом случае использоваться не может). Обе величины, значение и маска, являются четырехбайтовыми целыми числами без знака и могут быть определены в десятичной, шестнадцатеричной (с префиксом "0x") или восьмеричной (если задан начальный ноль) системах. .SS recent Позволяет вам динамически создавать список IP\-адресов, а затем сопоставлять их с этим списком различными способами. Например, вы можете создать список злоумышленников, пытающихся подключиться к порту 139 вашего брандмауэра, а затем отклонять все эти пакеты, не просматривая их. .PP Например, вы можете создать список злоумышленников, пытающихся подключиться к порту 139 вашего брандмауэра, а затем отклонять все эти пакеты, не просматривая их. .PP Параметры \fB\-\-set\fP, \fB\-\-rcheck\fP, \fB\-\-update\fP и \fB\-\-remove\fP являются взаимоисключающими. .TP \fB\-\-name\fP \fIname\fP Параметр определяет наименование списка IP\-адресов. Если наименование не определено, то будет использоваться наименование \fBDEFAULT\fP. .TP [\fB!\fP] \fB\-\-set\fP Параметр добавляет адрес источника пакета в список. Если адрес источника уже есть в списке, то будет обновлена существующая запись. Этот параметр всегда будет возвращать "success" (успешно) или, когда используется символ \fB!\fP, "failure" (ошибка). .TP \fB\-\-rsource\fP Параметр критерия адреса источника \- сопоставить/сохранить адрес источника каждого пакета в таблице списка последних сообщений. Это значение по умолчанию. .TP \fB\-\-rdest\fP Параметр критерия адреса назначения \- сопоставить/сохранить адрес назначения каждого пакета в таблице списка последних сообщений. .TP \fB\-\-mask\fP \fInetmask\fP Параметр определяет маску сети, которая будет применена к данному списку. .TP [\fB!\fP] \fB\-\-rcheck\fP Проверить, находится ли адрес источника пакета в списке. .TP [\fB!\fP] \fB\-\-update\fP Тоже, что и \fB\-\-rcheck\fP, за исключением того, что будет обновлена временная метка "последнего просмотра", если адрес источника пакета есть в списке. .TP [\fB!\fP] \fB\-\-remove\fP Проверить, есть ли в данный момент в списке адрес источника пакета и, если есть, то этот адрес будет удален из списка, а правило вернет значение "true" (истинно). Если адрес не найден, то будет возвращено значение "false" (ложно). .TP \fB\-\-seconds\fP \fIseconds\fP Этот параметр должен использоваться совместно с одним из параметров \fB\-\-rcheck\fP или \fB\-\-update\fP. Этот параметр сузит область поиска совпадения, чтобы оно происходило только в том случае, когда адрес есть в списке и был обнаружен в течение последнего заданного количества секунд. .TP \fB\-\-reap\fP Этот параметр можно использовать только совместно с параметром \fB\-\-seconds\fP. При использовании этого параметра будут удалены записи, которые старше последнего заданного количества секунд. .TP \fB\-\-hitcount\fP \fIhits\fP Этот параметр должен использоваться совместно с одним из параметров \fB\-\-rcheck\fP или \fB\-\-update\fP. Применение этого параметра сузит область проверки совпадения, чтобы оно происходило только в том случае, если адрес есть в списке и были получены пакеты, превышающие или равные заданному значению. Этот параметр можно использовать вместе с параметром \fB\-\-seconds\fP для создания еще более узкой области проверки соответствия, требующей определенного количества совпадений в течение определенного периода времени. Максимальное значение параметра \-\-hitcount задается параметром "ip_pkt_list_tot" модуля ядра xt_recent. Превышение этого значения в командной строке приведет к отклонению правила. .TP \fB\-\-rttl\fP Этот параметр может использоваться только совместно с одним из параметров \fB\-\-rcheck\fP или \fB\-\-update\fP. Этот параметр сузит область поиска проверки соответствия, чтобы она происходила только тогда, когда адрес есть в списке, а TTL текущего пакета совпадает с TTL пакета, который попал в правило \fB\-\-set\fP. Этот параметр может использоваться, если у вас возникают проблемы с тем, что злоумышленники подделывают свой исходящий адрес, чтобы связаться с вами через этот модуль, блокируя тем самым доступ к вашему сайту другим пользователям, путем посылки на него поддельных пакетов. .PP Примеры: .IP iptables \-A FORWARD \-m recent \-\-name badguy \-\-rcheck \-\-seconds 60 \-j DROP .IP iptables \-A FORWARD \-p tcp \-i eth0 \-\-dport 139 \-m recent \-\-name badguy \-\-set \-j DROP .PP \fB/proc/net/xt_recent/*\fP \- текущие списки адресов и информация о каждой записи в каждом списке. .PP Каждый файл в /proc/net/xt_recent/ можно прочитать, чтобы просмотреть текущий список или записать, выполнив две нижеследующие команды для изменения списка: .TP \fBecho +\fP\fIaddr\fP\fB >/proc/net/xt_recent/DEFAULT\fP \fIaddr\fP \- добавить addr в список DEFAULT .TP \fBecho \-\fP\fIaddr\fP\fB >/proc/net/xt_recent/DEFAULT\fP удалить \fIaddr\fP из списка DEFAULT .TP \fBecho / >/proc/net/xt_recent/DEFAULT\fP очистить список DEFAULT (удалить все записи). .PP Этот модуль принимает параметры, указанные по умолчанию: .TP \fBip_list_tot\fP=\fI100\fP Количество запоминаемых адресов в каждой таблице. .TP \fBip_pkt_list_tot\fP=\fI20\fP Количество пакетов на запоминаемый адрес. .TP \fBip_list_hash_size\fP=\fI0\fP Размер хэш\-таблицы. 0 означает вычисление на основе ip_list_tot, по умолчанию: 512. .TP \fBip_list_perms\fP=\fI0644\fP Права доступа для файлов /proc/net/xt_recent/*. .TP \fBip_list_uid\fP=\fI0\fP Числовой идентификатор владельца файлов /proc/net/xt_recent/*. .TP \fBip_list_gid\fP=\fI0\fP Числовой идентификатор группы владельца файлов /proc/net/xt_recent/*. .SS rpfilter Модуль выполняет проверку обратного пути для пакета \- если ответ на пакет будет отправлен через тот же интерфейс, по которому он поступил, то пакет соответствует данному критерию. Обратите внимание, что, в отличие от встроенного в ядро rp_filter, пакеты, защищенные IPSec, не обрабатываются специальным образом. Если хотите, то можете объединить этот критерий с критерием политики. Кроме того, пакеты, поступающие через интерфейс внутренней петли, всегда разрешены. Этот критерий может использоваться только в цепочке PREROUTING таблицы raw или mangle. .TP \fB\-\-loose\fP Используется для указания того, что проверка обратного пути должна соответствовать критерию, даже если выбранное устройство вывода не является ожидаемым. .TP \fB\-\-validmark\fP Использовать также значение nfmark пакетов при выполнении поиска маршрута обратного пути. .TP \fB\-\-accept\-local\fP Пакетам, поступающим из рабочей сети, разрешено иметь адрес источника, который является адресом локального компьютера. .TP \fB\-\-invert\fP Параметр изменяет смысл критерия соответствия \- соответствуют критерию пакеты, которые не прошли проверки обратного пути. .PP Пример регистрации и удаления пакетов, не прошедших проверку обратного пути: iptables \-t raw \-N RPFILTER iptables \-t raw \-A RPFILTER \-m rpfilter \-j RETURN iptables \-t raw \-A RPFILTER \-m limit \-\-limit 10/minute \-j NFLOG \-\-nflog\-prefix "rpfilter drop" iptables \-t raw \-A RPFILTER \-j DROP iptables \-t raw \-A PREROUTING \-j RPFILTER Пример удаления поврежденных пакетов без ведения журнала: iptables \-t raw \-A RPFILTER \-m rpfilter \-\-invert \-j DROP .SS "rt (Специфика IPv6)" Критерий маршрутизации IPv6 по заголовку. .TP [\fB!\fP] \fB\-\-rt\-type\fP \fItype\fP Критерий типа (числовой). .TP [\fB!\fP] \fB\-\-rt\-segsleft\fP \fInum\fP[\fB:\fP\fInum\fP] Критерий поля "сегменты слева" (диапазон). .TP [\fB!\fP] \fB\-\-rt\-len\fP \fIlength\fP Критерий длины данного заголовка. .TP \fB\-\-rt\-0\-res\fP Критерий излишнего зарезервированного поля (type=0). .TP \fB\-\-rt\-0\-addrs\fP \fIaddr\fP[\fB,\fP\fIaddr\fP...] Критерий \- тип=0 список адресов. .TP \fB\-\-rt\-0\-not\-strict\fP Список адресов типа=0 не является точным списком. .SS sctp Модуль критерия заголовков протокола управления передачей потока. .TP [\fB!\fP] \fB\-\-source\-port\fP,\fB\-\-sport\fP \fIport\fP[\fB:\fP\fIport\fP] .TP [\fB!\fP] \fB\-\-destination\-port\fP,\fB\-\-dport\fP \fIport\fP[\fB:\fP\fIport\fP] .TP [\fB!\fP] \fB\-\-chunk\-types\fP {\fBall\fP|\fBany\fP|\fBonly\fP} \fIchunktype\fP[\fB:\fP\fIflags\fP] [...] Символ флага в верхнем регистре указывает на соответствие, если он установлен; символ флага в нижнем регистре указывает на соответствие, если он не установлен. Типы критериев: .TP all Критерий \- если присутствуют все заданные типы блоков и флаги критериев соответствия. .TP any Критерий \- если какой\-либо из заданных типов блоков присутствует с заданными флагами. .TP only Критерий \- если присутствуют только заданные типы блоков с заданными флагами и ни один из них не отсутствует. Типы блоков: DATA INIT INIT_ACK SACK HEARTBEAT HEARTBEAT_ACK ABORT SHUTDOWN SHUTDOWN_ACK ERROR COOKIE_ECHO COOKIE_ACK ECN_ECNE ECN_CWR SHUTDOWN_COMPLETE I_DATA RE_CONFIG PAD ASCONF ASCONF_ACK FORWARD_TSN I_FORWARD_TSN типы блоков доступные флаги .br DATA I U B E i u b e .br I_DATA I U B E i u b e .br ABORT T t .br SHUTDOWN_COMPLETE T t (нижний регистр означает, что флаг должен быть в состоянии "off", верхний регистр означает состояние "on".) .P Примеры: iptables \-A INPUT \-p sctp \-\-dport 80 \-j DROP iptables \-A INPUT \-p sctp \-\-chunk\-types any DATA,INIT \-j DROP iptables \-A INPUT \-p sctp \-\-chunk\-types any DATA:Be \-j ACCEPT .SS set Модуль критерия наборов IP\-адресов, которые могут быть определены с помощью утилиты ipset(8). .TP [\fB!\fP] \fB\-\-match\-set\fP \fIsetname\fP \fIflag\fP[\fB,\fP\fIflag\fP]... где флаги \- это разделенный запятыми список спецификаций src и/или dst; их может быть не более шести. Тогда команда .IP iptables \-A FORWARD \-m set \-\-match\-set test src,dst .IP будет проверять пакеты, для которых (если задан тип набора \- ipportmap) пара адрес источника и порт назначения может быть найдена в указанном наборе. Если задан одномерный тип набора, например, ipmap, то команда будет проверять пакеты, у которых адрес источника может быть найден в указанном наборе. .TP \fB\-\-return\-nomatch\fP Если указан параметр \fB\-\-return\-nomatch\fP и тип набора поддерживает флаг \fBnomatch\fP, то проверка выполняется реверсивно: совпадение с элементом, помеченным \fBnomatch\fP, возвращает \fBtrue\fP, в то время как совпадение с простым элементом возвращает \fBfalse\fP. .TP \fB!\fP \fB\-\-update\-counters\fP Если флаг \fB\-\-update\-counters\fP инвертирован, то счетчики пакетов и байтов соответствующего элемента в наборе обновляться не будут. По умолчанию счетчики пакетов и байтов обновляются. .TP \fB!\fP \fB\-\-update\-subcounters\fP Если флаг \fB\-\-update\-subcounters\fP инвертирован, то счетчики пакетов и байтов соответствующего элемента в списке набора элементов обновляться не будут. По умолчанию счетчики пакетов и байтов обновляются. .TP [\fB!\fP] \fB\-\-packets\-eq\fP \fIvalue\fP Если пакет соответствует элементу из набора, то выполняется проверка соответствия только в том случае, когда значение счетчика пакетов элемента также соответствует заданному значению. .TP \fB\-\-packets\-lt\fP \fIvalue\fP Если пакет соответствует элементу из набора, то выполняется проверка соответствия только в том случае, когда значение счетчика пакетов элемента также менее заданного значения. .TP \fB\-\-packets\-gt\fP \fIvalue\fP Если пакет соответствует элементу из набора, то выполняется проверка только в том случае, когда значение счетчика пакетов элемента также более заданного значения. .TP [\fB!\fP] \fB\-\-bytes\-eq\fP \fIvalue\fP Если пакет соответствует элементу из наборе, то выполняется проверка соответствия только в том случае, когда значение счетчика байтов элемента также соответствует заданному значению. .TP \fB\-\-bytes\-lt\fP \fIvalue\fP Если пакет соответствует элементу из наборе, то выполняется проверка соответствия только в том случае, когда значение счетчика байтов элемента также менее заданного значения. .TP \fB\-\-bytes\-gt\fP \fIvalue\fP Если пакет соответствует элементу из наборе, то выполняется проверка соответствия только в том случае, когда значение счетчика байтов элемента также более заданного значения. .PP Параметры и флаги, связанные со счетчиками пакетов и байтов, игнорируются, если набор был определен без поддержки счетчика. .PP Параметр \fB\-\-match\-set\fP может быть заменен на \fB\-\-set\fP если это не противоречит возможностям других дополнений. .PP Использование \-m set требует, чтобы была обеспечена поддержка ядром ipset. Для стандартных ядер такая поддержка имеет место в ядрах начиная с версии Linux 2.6.39. .SS socket Модуль критерия поиска открытого сокета TCP/UDP пакета. Критерий \- если существует созданный или ненулевой прослушиваемый сокет (возможно, с нелокальным адресом). Поиск сокета выполняется с использованием кортежа \fBpacket\fP TCP/UDP или исходящего заголовка \fBembedded\fP TCP/UDP, встроенного в пакет ошибок ICMP/ICPMv6. .TP \fB\-\-transparent\fP Игнорировать нетранспарентные сокеты. .TP \fB\-\-nowildcard\fP Не игнорировать сокеты, привязанные к "любому" адресу. Критерий, по умолчанию, не будет обрабатывать прослушиваемые сокеты с нулевой привязкой, поскольку тогда локальные службы могли бы перехватывать трафик, который в противном случае был бы перенаправлен. Следовательно, этот параметр имеет последствия для безопасности, когда критерий применяется к пересылаемому трафику с целью перенаправления таких пакетов на локальный компьютер с использованием политики маршрутизации. При использовании критерия открытых сокетов для реализации полностью транспарентных прокси\-серверов, привязанных к нелокальным адресам, рекомендуется вместо этого параметра использовать параметр \-\-transparent. .PP Пример (при условии, что пакеты с меткой 1 доставляются локально): .IP \-t mangle \-A PREROUTING \-m socket \-\-transparent \-j MARK \-\-set\-mark 1 .TP \fB\-\-restore\-skmark\fP Установить метку пакета как метку критерия сокета. Можно комбинировать с параметрами \-\-transparent и \-\-nowildcard, чтобы ограничить критерий сокетов при восстановлении метки пакета. .PP Пример: Приложение открывает 2 транспарентных сокета (IP_TRANSPARENT) и устанавливает на них метку с помощью параметра сокета SO_MARK. Мы можем фильтровать совпадающие пакеты: .IP \-t mangle \-I PREROUTING \-m socket \-\-transparent \-\-restore\-skmark \-j action .IP \-t mangle \-A action \-m mark \-\-mark 10 \-j action2 .IP \-t mangle \-A action \-m mark \-\-mark 11 \-j action3 .SS state Дополнение "state" является частью настроек модуля "conntrack". Дополнение "state" предоставляет доступ к состоянию отслеживаемого соединения данного пакета. .TP [\fB!\fP] \fB\-\-state\fP \fIstate\fP Здесь state \- разделенный запятыми список набора состояний соединения, которым должно соответствовать соединение. Распознается только набор состояний соединения, который поддерживается модулем "conntrack": \fBINVALID\fP, \fBESTABLISHED\fP, \fBNEW\fP, \fBRELATED\fP или \fBUNTRACKED\fP. Описание этих состояний смотрите выше в описании модуля "conntrack". .SS statistic Модуль критерия пакетов на основе некоторого статистического условия. Модуль поддерживает два различных режима, устанавливаемых с помощью параметра \fB\-\-mode\fP. .PP Поддерживаемые параметры: .TP \fB\-\-mode\fP \fImode\fP Установить режим критерия на основе правила соответствия. Поддерживаются два режима: \fBrandom\fP и \fBnth\fP. .TP [\fB!\fP] \fB\-\-probability\fP \fIp\fP Установить вероятность случайного соответствия пакета критерию. Применимо только в режиме \fBrandom\fP. Значение вероятности \fIp\fP должно быть в пределах от 0,0 до 1,0. Поддерживаемая дискретность \- 1/2147483648. .TP [\fB!\fP] \fB\-\-every\fP \fIn\fP Сопоставить один пакет с каждым n\-м пакетом. Это работает только в режиме \fBnth\fP (смотрите также параметр \fB\-\-packet\fP). .TP \fB\-\-packet\fP \fIp\fP Установить начальное значение счетчика (0 <= p <= n\-1, по умолчанию 0) для режима \fBnth\fP. .SS string Модуль критерия на основе заданной строки, использующий некоторую стратегию соответствия шаблону. Поддерживается только ядром Linux версии >2.6.14. .TP \fB\-\-algo\fP {\fBbm\fP|\fBkmp\fP} Выбор шаблона стратегии соответствия: bm = Boyer\-Moore, kmp = Knuth\-Pratt\-Morris. .TP \fB\-\-from\fP \fIoffset\fP Задать смещение, с которого модуль начнет поиск любого соответствия. Если значение не задано, то значение по умолчанию равно 0. .TP \fB\-\-to\fP \fIoffset\fP Задать смещение, до которого модуль должен будет осуществлять поиск любого соответствия. То есть байт \fIoffset\fP\-1 (считая от 0) будет последним, в котором будет осуществляться поиск. Если смещение не задано, то, по умолчанию, используется размер пакета. .TP [\fB!\fP] \fB\-\-string\fP \fIpattern\fP Задать шаблон соответствия. .TP [\fB!\fP] \fB\-\-hex\-string\fP \fIpattern\fP Задать шаблон соответствия в шестнадцатеричной системе счисления. .TP \fB\-\-icase\fP При поиске игнорировать регистр. .TP Примеры: .IP # Этот шаблон можно использовать для простых текстовых символов: .br iptables \-A INPUT \-p tcp \-\-dport 80 \-m string \-\-algo bm \-\-string 'GET /index.html' \-j LOG .IP # Этот шаблон шестнадцатеричной строки можно использовать для непечатаемых символов, например, |0D 0A| или |0D0A|: .br iptables \-p udp \-\-dport 53 \-m string \-\-algo bm \-\-from 40 \-\-to 57 \-\-hex\-string '|03|www|09|netfilter|03|org|00|' .P Примечание: Поскольку алгоритм Boyer\-Moore (BM) выполняет поиск совпадений справа налево, а ядро может хранить пакет в нескольких несмежных блоках, то возможно, когда элементы совпадения могут быть распределены по нескольким блокам, что данный алгоритм совпадения не обнаружит. .P Если вы хотите быть уверенным, чтобы такого никогда не могло произойти, то используйте вместо данного алгоритма алгоритм Кнута\-Пратта\-Морриса (KMP). Совет: при выборе алгоритма поиска строк исходите из того, чего вы хотите. .P Например, если вы используете модуль для фильтрации, NIDS или иной подобной цели и для вас, в первую очередь, важна безопасность, то выбирайте KMP. С другой стороны, если вам, в первую очередь, важна производительность, например, вы отбираете пакеты с целью обеспечения качества обслуживания (QoS) и вас не беспокоит пропуск возможных соответствий из\-за хранения пакета в нескольких несмежных блоках,то выберите BM. .SS tcp Это дополнение можно использовать, если указан параметр "\-\-protocol tcp". Оно поддерживает следующие параметры: .TP [\fB!\fP] \fB\-\-source\-port\fP,\fB\-\-sport\fP \fIport\fP[\fB:\fP\fIport\fP] [!] \-\-source\-port,\-\-sport port[:port] \- Определяет исходящий порт или диапазон исходящих портов. Может использоваться либо наименование службы, либо номер порта. Также может быть определён диапазон портов с помощью формата \fIfirst\fP\fB:\fP\fIlast\fP. Если начальный порт не определён, то предполагается "0"; если последний порт не определён, то предполагается "65535". Флаг \fB\-\-sport\fP является удобным псевдонимом для этого параметра. .TP [\fB!\fP] \fB\-\-destination\-port\fP,\fB\-\-dport\fP \fIport\fP[\fB:\fP\fIport\fP] [!] \-\-destination\-port,\-\-dport port[:port] \- Определяет порт назначения или диапазона портов назначения. Флаг \fB\-\-dport\fP это удобный псевдоним для этого параметра. .TP [\fB!\fP] \fB\-\-tcp\-flags\fP \fImask\fP \fIcomp\fP Критерий \- соответствуют, когда флаги TCP пакета совпадают с заданными флагами. Первый аргумент, mask \- это, разделенный запятыми список флагов, которые должны быть проверены, а второй аргумент, comp \- это разделенный запятыми список флагов, которые должны быть заданы. Флаги могут иметь значения: SYN ACK FIN RST URG PSH ALL NONE. Тогда команда .nf iptables \-A FORWARD \-p tcp \-\-tcp\-flags SYN,ACK,FIN,RST SYN .fi будет проверять соответствие только пакетов с установленным флагом SYN так как флаги ACK, FIN и RST не заданы. .TP [\fB!\fP] \fB\-\-syn\fP Критерий \- соответствуют пакеты только с установленным флагом SYN и сброшенными флагами ACK, RST и FIN. Такие пакеты используются для запроса инициализации соединения TCP; например, блокировка таких пакетов, поступающих в интерфейс, предотвратит входящие TCP\-соединения, но исходящие TCP\-соединения не будут затронуты. Это эквивалентно \-\-tcp\-flags SYN,RST,ACK,FIN SYN. Если флагу "\-\-syn", предшествует символ "!", то смысл параметра инвертируется. .TP [\fB!\fP] \fB\-\-tcp\-option\fP \fInumber\fP Критерий \- соответствует, если задан параметр TCP. .SS tcpmss Критерий соответствия полю MSS (максимальный размер сегмента) заголовка TCP. Вы можете использовать это только для пакетов SYN TCP или SYN/ACK, поскольку MSS согласовывается только при создании соединения TCP. .TP [\fB!\fP] \fB\-\-mss\fP \fIvalue\fP[\fB:\fP\fIvalue\fP] Критерий \- соответствует заданному значению или диапазону значений MSS TCP. Если задан диапазон, то второе \fIvalue\fP (значение) должно быть больше или равно первому значению. .SS time Критерий \- соответствует, если время/дата (time/date) прибытия пакета находится в пределах заданного диапазона. Все параметры необязательны, но при их указании используются логическое И. По умолчанию все значения времени интерпретируются как UTC. .TP \fB\-\-datestart\fP \fIYYYY\fP[\fB\-\fP\fIMM\fP[\fB\-\fP\fIDD\fP[\fBT\fP\fIhh\fP[\fB:\fP\fImm\fP[\fB:\fP\fIss\fP]]]]] .TP \fB\-\-datestop\fP \fIYYYY\fP[\fB\-\fP\fIMM\fP[\fB\-\fP\fIDD\fP[\fBT\fP\fIhh\fP[\fB:\fP\fImm\fP[\fB:\fP\fIss\fP]]]]] Соответствует только в течение заданного времени, которое должно быть представлено в формате ISO 8601 "T". Возможный диапазон времени: с 1970\-01\-01T00:00:00 по 2038\-01\-19T04:17:07. .IP Если не указаны параметры \-\-datestart или \-\-datestop, то, по умолчанию, будут определены значения 1970\-01\-01 и 2038\-01\-19, соответственно. .TP \fB\-\-timestart\fP \fIhh\fP\fB:\fP\fImm\fP[\fB:\fP\fIss\fP] .TP \fB\-\-timestop\fP \fIhh\fP\fB:\fP\fImm\fP[\fB:\fP\fIss\fP] Критерий \- соответствует только в течение заданного суточного времени. Допустимый диапазон времени \- с 00:00:00 по 23:59:59. Допускаются указывает в начале нули (например, "06:03"), которые правильно интерпретируются в десятичной системе счисления. .TP [\fB!\fP] \fB\-\-monthdays\fP \fIday\fP[\fB,\fP\fIday\fP...] Критерий \- соответствует только в указанные числа месяца. Допустимые значения от 1 до 31. Обратите внимание, что указание числа 31, конечно не будет соответствовать месяцам, в которых нет 31\-го дня; то же самое относится к 28\-му или 29\-му числам февраля. .TP [\fB!\fP] \fB\-\-weekdays\fP \fIday\fP[\fB,\fP\fIday\fP...] Критерий \- соответствует только в указанные дни недели. Допустимые значения: \fBMon\fP, \fBTue\fP, \fBWed\fP, \fBThu\fP, \fBFri\fP, \fBSat\fP, \fBSun\fP или числа от 1 до 7, соответственно. Вы также можете использовать двухсимвольные сокращения (\fBMo\fP, \fBTu\fP и т.д.). .TP \fB\-\-contiguous\fP Если значение \fB\-\-timestop\fP меньше значения \fB\-\-timestart\fP, интерпретировать его как один временной промежуток, а не как отдельные интервалы. Смотрите ПРИМЕРЫ ниже. .TP \fB\-\-kerneltz\fP При проверке соответствия пакет требованиям по времени использовать вместо UTC часовой пояс ядра. .PP О часовых поясах ядра: Linux всегда сохраняет системное время в UTC. При загрузке системное время инициализируется из указанного источника времени. Там, где этот источник времени не содержит информации о часовом поясе (x86 CMOS RTC) будет использоваться UTC. Однако, если источник времени не находится в UTC, то пользовательское пространство должно предоставить ядру правильное системное время и часовой пояс, как только это пространство получит данную информацию. .PP Местное время \- это функция поверх системного времени (не зависящего от часового пояса). Каждый процесс имеет свое собственное представление о местном времени, которое задано с помощью переменной окружения TZ. Ядро также имеет свою собственную переменную смещения часового пояса. Переменная среды пользовательского пространства TZ определяет, как отображается системное время на основе UTC, например, когда вы запускаете date(1), или что вы видите на своих настольных часах. Строка TZ может быть преобразована в разные смещения в разные даты, что позволяет автоматически переключаться во времени в пользовательском пространстве при изменении летнего времени. Переменная смещения часового пояса ядра используется, когда требуется преобразовать данные из источников, отличных от UTC, таких как файловые системы FAT, в UTC (поскольку последнее используется остальной частью системы). .PP Предостережение, связанное с часовым поясом ядра, заключается в том, что дистрибутивы Linux могут игнорировать установку часового пояса ядра и вместо этого устанавливать только системное время. Даже если конкретный дистрибутив устанавливает часовой пояс при загрузке, он, как правило, не поддерживает в актуальном состоянии смещение часового пояса ядра \- которое меняется при переходе на летнее время. Демон ntpd не затрагивает часовой пояс ядра, поэтому его запуск не решит проблему. Таким образом, можно столкнуться с часовым поясом, который всегда равен +0000, или с часовым поясом, который не соответствует половине времени года. Таким образом, использование параметра \fBusing \-\-kerneltz настоятельно не рекомендуется\fP. .PP ПРИМЕРЫ. Для критериев выходных дней, используйте: .IP \-m time \-\-weekdays Sa,Su .PP Или, чтобы соответствовать (один раз) национальному празднику, используйте: .IP \-m time \-\-datestart 2007\-12\-24 \-\-datestop 2007\-12\-27 .PP Поскольку время останова на самом деле включено, вам потребуется следующее время останова, которое не должно совпадать с первой секундой новых суток: .IP \-m time \-\-datestart 2007\-01\-01T17:00 \-\-datestop 2007\-01\-01T23:59:59 .PP На время обеденного перерыва: .IP \-m time \-\-timestart 12:30 \-\-timestop 13:30 .PP Четвертая пятница месяца: .IP \-m time \-\-weekdays Fr \-\-monthdays 22,23,24,25,26,27,28 .PP Обратите внимание, что при этом используется определенное свойство чисел месяцев. Невозможно указать "четвертый четверг или четвертая пятница" месяца в одном правиле. Однако это возможно если использовать несколько правил. .PP Соответствие по дням может привести не к тому, что вы, возможно, хотите. Например, .IP \-m time \-\-weekdays Mo \-\-timestart 23:00 \-\-timestop 01:00 будет соответствовать понедельнику с 00:00 часов до 01:00 часа ночи, а затем снова в течение еще одного часа, начиная с 23:00 часов. Если это нежелательно, например, если вы хотите проверять "соответстветствие в течение двух часов, начиная с 23:00 часов по понедельникам", то вам необходимо использовать ещё и параметр \-\-contiguous. .SS tos Модуль критерия 8\-битного поля типа службы в заголовке IPv4 (т. е. включает биты "приоритета") или (также 8\-битного) поля приоритета в заголовке IPv6. .TP [\fB!\fP] \fB\-\-tos\fP \fIvalue\fP[\fB/\fP\fImask\fP] Критерий \- соответствие пакетов заданному значению метки TOS. Если задана маска, то перед сравнением, вычисляется логическое И маски с TOS. .TP [\fB!\fP] \fB\-\-tos\fP \fIsymbol\fP Вы можете указать символическое имя при использовании критерия tos для IPv4. Список поддерживаемых символических имен можно получить, вызвав iptables с помощью команды \-m tos \-h. Примечание: Это подразумевает маску 0x3F, то есть все биты, кроме ECN. .SS "ttl (Специфика IPv4)" Модуль критерия поля времени жизни (time to live) в заголовке IP. .TP [\fB!\fP] \fB\-\-ttl\-eq\fP \fIttl\fP Критерий \- соответствует заданному значению TTL. .TP \fB\-\-ttl\-gt\fP \fIttl\fP Критерий \- соответствует, если TTL больше заданного значения TTL. .TP \fB\-\-ttl\-lt\fP \fIttl\fP Критерий \- соответствует, если TTL меньше заданного значения TTL. .SS u32 Критерий соответствия данных, которые нужно извлечь из пакета \- если они есть и, которые удовлетворяют заданным значениям (размер данных \- до 4 байт). Спецификация того, что нужно извлечь достаточно общая \- осуществляется поиск данных с заданными смещениями в заголовках tcp или в других полезных загрузках. .TP [\fB!\fP] \fB\-\-u32\fP \fItests\fP Аргумент "tests" является программой на небольшом языке, котрый описан ниже. .IP tests := location "=" value | tests "&&" location "=" value .IP value := range | value "," range .IP range := number | number ":" number .PP Одно число (number), \fIn\fP, интерпретируется так же, как \fIn:n\fP, а \fIn:m\fP интерпретируется как диапазон чисел, где \fB>=n\fP и \fB<=m\fP. .IP "" 4 location := number | location operator number .IP "" 4 operator := "&" | "<<" | ">>" | "@" .PP Операторы \fB&\fP, \fB<<\fP, \fB>>\fP и \fB&&\fP обозначают то же самое, что и в языке C. Оператор \fB=\fP на самом деле является оператором членства в наборе, а синтаксис "value описывает набор. Оператор "@" \- это то, что позволяет перейти к следующему заголовку и описано ниже. .PP В настоящее время существуют некоторые ограничения при реализации размер тестов: .IP " *" не более 10 в "\fB=\fP" (и "\fB&&\fP"s) в аргументе (argument) u32; .IP " *" не более 10 диапазонов (и 9 запятых) в value (значении); .IP " *" не более 10 чисел (и 9 операторов) на каждое местоположение (location). .PP Чтобы понять смысл местоположения, представьте себе следующую машину, которая интерпретирует его. Имеется три регистра: .IP A \- относится к типу\fBchar *\fP изначально \- адрес IP заголовка. .IP B и C \- беззнаковые 32\-битные целые числа, изначально \- нулевые. .PP Команды: .TP \fBnumber\fP B = number; .IP C = (*(A+B)<<24) + (*(A+B+1)<<16) + (*(A+B+2)<<8) + *(A+B+3) .TP \fB&number\fP C = C & number .TP \fB<< number\fP C = C << number .TP \fB>> number\fP C = C >> number .TP \fB@number\fP A = A + C; затем выполните номер команды: .PP Любой доступ к памяти вне [skb\->data,skb\->end] приводит к ошибке соответствия. В противном случае результатом вычисления будет C. .PP Пробелы в тестах разрешены, но не обязательны. Однако символы, которые там встречаются, скорее всего из\-за оболочки, потребуется заключить в кавычки, поэтому рекомендуется заключать аргументы в кавычки. Пример, ниже: .PP Например: .IP Критерий \- если пакеты IP имеют общую длину >= 256. .IP Заголовок IP содержит поле общей длиной 2\-3 байта. .IP \-\-u32 "\fB0 & 0xFFFF = 0x100:0xFFFF\fP" .IP read bytes 0\-3 .IP AND that with 0xFFFF (giving bytes 2\-3), and test whether that is in the range [0x100:0xFFFF] .PP Пример (более реалистичный, следовательно, более сложный): .IP Критерий \- если пакеты ICMP имеют тип 0. .IP Сначала проверяем, что этот пакет \- пакет ICMP; true (истина), если байт 9 (протокол) = 1 .IP \-\-u32 "\fB6 & 0xFF = 1 &&\fP ... .IP Читаем байты 6\-9 и используем \fB&\fP (логическое И), чтобы отбросить байты 6\-8 и сравнить результат с 1. Затем проверяем, что это не фрагмент (если это фрагмент, то он может быть частью пакета, но мы не всегда можем знать этого наверняка). Примечание: Эта проверка обычно необходима, если вы хотите сопоставить что\-либо за пределами IP\-заголовка. Если это полный пакет, то последние 6 бит байта 6 и весь байт 7 равны 0. Альтернативно, вы можете разрешить первые фрагменты, проверив только последние 5 бит байта 6. .IP \&... \fB4 & 0x3FFF = 0 &&\fP ... .IP Последняя проверка: Первый байт после заголовка IP (это \- тип) равен 0. Именно здесь мы должны использовать оператор "@". Длина IP\-заголовка (IHL) в 32\-битных словах хранится в правой половине байта 0 IP\-заголовка. .IP \&... \fB0 >> 22 & 0x3C @ 0 >> 24 = 0\fP" .IP Первый 0 означает чтение байтов 0\-3, \fB>>22\fP означает сдвиг этих 22 бит вправо. Сдвиг на 24 бита даст первый байт, так что только 22 бита это \- в четыре раза больше плюс еще несколько бит. \fB&3C\fP затем устраняет два лишних бита справа и первые четыре бита первого байта. Например, если IHL=5, то IP\-заголовок имеет длину 20 байт (4 x 5). В этом случае байты 0\-1 являются (в двоичном формате) xxxx0101yyzzzzzz, \fB>>22\fP дает 10\-битное значение xxxx0101yy, а &3C даст 010100. Оператор @ означает использовать это число в качестве нового смещения в пакете и считывать оттуда четыре байта. Это первые 4 байта полезной нагрузки ICMP, из которых байт 0 является типом ICMP. Поэтому мы просто сдвигаем значение 24 вправо, чтобы выбросить все, кроме первого байта и сравниваем результат с 0. .PP Например: .IP Пример: Загрузка байтов полезной загрузки TCP 8\-12 (любые байты из 1, 2, 5 или 8). .IP Сначала проверяем, что пакет является пакетом TCP (аналогично ICMP): .IP \-\-u32 "\fB6 & 0xFF = 6 &&\fP ... .IP Затем проверяем, что это не фрагмент (как в примере выше): .IP \&... \fB0 >> 22 & 0x3C @ 12 >> 26 & 0x3C @ 8 = 1,2,5,8\fP" .IP Здесь оператор \fB0>>22&3C\fP, как указано выше, вычисляет количество байт в заголовке IP. Оператор \fB@\fPделает это новым смещением в пакете, которое является началом заголовка TCP. Длина заголовка TCP (опять же в 32\-битных словах) равна левой половине байта 12 заголовка TCP. Оператор \fB12>>26&3C\fP вычисляет длину в байтах (аналогично предыдущему заголовку IP). Оператор "@"делает это новым смещением, которое является началом полезной загрузки TCP. Наконец, 8 считывает байты 8\-12 полезной загрузки, а оператор \fB=\fP проверяет, что результат является одним из 1, 2, 5 или 8. .SS udp Это дополнение можно использовать, если указан параметр "\-\-protocol udp". Оно поддерживает следующие параметры: .TP [\fB!\fP] \fB\-\-source\-port\fP,\fB\-\-sport\fP \fIport\fP[\fB:\fP\fIport\fP] Определяет исходящий порт или диапазона исходящих портов. Дополнительные сведения смотрите в описании параметра \fB\-\-source\-port\fP дополнения TCP. .TP [\fB!\fP] \fB\-\-destination\-port\fP,\fB\-\-dport\fP \fIport\fP[\fB:\fP\fIport\fP] Определяет порт назначения или диапазона портов назначения. Дополнительные сведения смотрите в описании параметра \fB\-\-destination\-port\fP дополнения TCP. .SH "ЦЕЛИ ДОПОЛНИТЕЛЬНЫЕ" .\" @TARGET@ В стандартном дистрибутиве iptables поддерживаются нижеследующие дополнительные цели. .SS AUDIT Настоящая цель создает записи аудита для пакетов, попадающих под действие цели. Цель может использоваться для записи принятых, сброшенных или отклоненных пакетов. Дополнительные сведения смотрите в auditd(8). .TP \fB\-\-type\fP {\fBaccept\fP|\fBdrop\fP|\fBreject\fP} Определяет тип аудиторской записи. Начиная с версии linux\-4.12, этот параметр больше не влияет на создаваемые сообщения аудита. Он по\-прежнему принимается iptables, по соображениям совместимости, но игнорируется. .PP Например: .IP iptables \-N AUDIT_DROP .IP iptables \-A AUDIT_DROP \-j AUDIT .IP iptables \-A AUDIT_DROP \-j DROP .SS CHECKSUM Настоящая цель селективно обрабатывает сломанные или устаревшие приложения. Её можно использовать только в таблице mangle. .TP \fB\-\-checksum\-fill\fP Вычислить и записать контрольную сумму в пакет, в котором отсутствует контрольная сумма. Это особенно полезно, если вам нужно применить устаревшие приложения, такие как dhcp\-клиенты, которые плохо работают с выгрузкой контрольной суммы, но не отключают выгрузку контрольной суммы на вашем устройстве. .SS CLASSIFY Настоящий модуль позволяет установить skb\-> значение приоритета и таким образом определить пакет в соответствующий класс CBQ. .TP \fB\-\-set\-class\fP \fImajor\fP\fB:\fP\fIminor\fP Устанавливает значения класса major и minor. Значения всегда интерпретируются как шестнадцатеричные числа, даже если префикс 0x не задан. .SS "CLUSTERIP (Специфика IPv4)" Этот модуль позволяет настроить простой кластер узлов, которые совместно используют определенный адрес IP и MAC\-адрес, без явного балансировщика нагрузки перед ними. Соединения статически распределяются между узлами этого кластера. .PP Пожалуйста, обратите внимание, что модуль CLUSTERIP считается устаревшим и был заменен на модуль cluster, который является более гибким и не ограничивается IPv4. .TP \fB\-\-new\fP Определяет IP\-адрес кластера. Вы всегда должны определить этот адрес в первом правиле для данного кластера. .TP \fB\-\-hashmode\fP \fImode\fP Определяет режима хеширования. Значение должно быть одним из: \fBsourceip\fP, \fBsourceip\-sourceport\fP, \fBsourceip\-sourceport\-destport\fP. .TP \fB\-\-clustermac\fP \fImac\fP Определяет MAC\-адрес кластера.Это должен быть групповой адрес канального уровня. .TP \fB\-\-total\-nodes\fP \fInum\fP Определяет общее количество узлов в этом кластере. .TP \fB\-\-local\-node\fP \fInum\fP Определяет номер локального узла в этом кластере. .TP \fB\-\-hash\-init\fP \fIrnd\fP Определяет случайное начальное число, используемое для инициализации хэша. .SS CONNMARK Эта цель устанавливает значение метки netfilter, которая является идентификатором данного соединения. Размер метки составляет 32 бита. Поддерживаются следующие параметры: .TP \fB\-\-set\-xmark\fP \fIvalue\fP[\fB/\fP\fImask\fP] Обнуляет заданные значения битов \fImask\fP и исключающего ИЛИ \fIvalue\fP в ctmark. .TP \fB\-\-save\-mark\fP [\fB\-\-nfmask\fP \fInfmask\fP] [\fB\-\-ctmask\fP \fIctmask\fP] Копирует метку пакета (nfmark) в метку соединения (ctmark), используя заданные маски. Новое значение ctmark определяется из выражения: .IP ctmark = (ctmark & ~ctmask) ^ (nfmark & nfmask) .IP т.е.\fIctmask\fPопределяет, какие биты очистить, а \fInfmask\fP какие биты nfmark преобразовать в ctmark. Значения \fIctmask\fP и \fInfmask\fP по умолчанию равны 0xFFFFFFFF. .TP \fB\-\-restore\-mark\fP [\fB\-\-nfmask\fP \fInfmask\fP] [\fB\-\-ctmask\fP \fIctmask\fP] Копирует метку соединения (ctmark) в метку пакета (nfmark), используя заданные маски. Новое значение nfmark определяется из выражения: .IP nfmark = (nfmark & ~\fInfmask\fP) ^ (ctmark & \fIctmask\fP); .IP т.е. \fInfmask\fP определяет, какие биты очистить, а \fIctmask\fP какие биты ctmark преобразовать в nfmark. Значения \fIctmask\fP и \fInfmask\fP по умолчанию равны 0xFFFFFFFF. Примечание переводчика. Символы в выражениях выше обозначают: "&" \- побитовая операция логическое И; "~" \- побитовая операция логическое НЕ; "^" \- побитовая операция логическое ИСКЛЮЧАЮЩЕЕ ИЛИ. .IP Параметр \fB\-\-restore\-mark\fP допустим только в таблице \fBmangle\fP. .PP Для параметра \fB\-\-set\-xmark\fP доступны следующие мнемоники: .TP \fB\-\-and\-mark\fP \fIbits\fP Побитовое логическое И операндов "ctmark", \fIbits\fP (мнемоническое обозначение для \fB\-\-set\-xmark 0/\fP\fIinvbits\fP, где \fIinvbits\fP \- побитовое логическое НЕ значения \fIbits\fP). .TP \fB\-\-or\-mark\fP \fIbits\fP Побитовое логическое ИЛИ операндов "ctmark", \fIbits\fP (мнемоническое обозначение для \fB\-\-set\-xmark\fP \fIbits\fP\fB/\fP\fIbits\fP). .TP \fB\-\-xor\-mark\fP \fIbits\fP Побитовое логическое ИСКЛЮЧАЮЩЕЕ ИЛИ операндов "ctmark", \fIbits\fP (мнемоническое обозначение для \fB\-\-set\-xmark\fP \fIbits\fP\fB/0\fP). .TP \fB\-\-set\-mark\fP \fIvalue\fP[\fB/\fP\fImask\fP] Устанавливает метку (mark) соединения. Если определена маска (mask), то изменяются только те биты, которые определены в маске. .TP \fB\-\-save\-mark\fP [\fB\-\-mask\fP \fImask\fP] Копирует nfmark в ctmark. Если определена маска, то копируются только эти биты. .TP \fB\-\-restore\-mark\fP [\fB\-\-mask\fP \fImask\fP] Копирует ctmark в nfmark. Если определена маска (mask), то копируются только эти биты. Применимо только в таблице \fBmangle\fP. .SS CONNSECMARK Эта цель копирует маркировку безопасности из пакетов в соединении (если они не помечены) и из соединений обратно в пакеты (также только если они не помечены). Обычно, эта цель используется в сочетании с целью SECMARK, она применяется в таблице \fBsecurity\fP (для обратной совместимости со старыми ядрами, а также в таблице \fBmangle\fP). Поддерживаются следующие параметры: .TP \fB\-\-save\fP Если пакет имеет маркировку безопасности, а соединение не помечено, то скопировать пакет в соединение. .TP \fB\-\-restore\fP Если пакет не имеет маркировки безопасности, а соединение имеет маркировку безопасности, то скопировать маркировку безопасности из соединения в пакет. .SS CT Цель CT устанавливает параметры для пакета или связанного с ним соединения. Цель CT присоединяет к пакету "шаблонную" запись отслеживаемого соединения; при инициализации новой записи ct эта запись используется ядром conntrack. Эта цель может использоваться только в таблице "raw". .TP \fB\-\-notrack\fP Отключить отслеживание соединения для данного пакета. .TP \fB\-\-helper\fP \fIname\fP Использовать помощник (helper), с указанным именем \fIname\fP для этого соединения. Это более гибко, чем загрузка модулей conntrack helper с предустановленными портами. .TP \fB\-\-ctevents\fP \fIevent\fP[\fB,\fP...] Генерировать для данного соединения только указанные события. Возможными типами событий могут быть: \fBnew\fP, \fBrelated\fP, \fBdestroy\fP, \fBreply\fP, \fBassured\fP, \fBprotoinfo\fP, \fBhelper\fP, \fBmark\fP (это относится к ctmark, но не к nfmark), \fBnatseqinfo\fP, \fBsecmark\fP (ctsecmark). .TP \fB\-\-expevents\fP \fIevent\fP[\fB,\fP...] Генерировать для данного соединения только указанные ожидаемые события. Возможными типами событий могут быть: \fBnew\fP. .TP \fB\-\-zone\-orig\fP {\fIid\fP|\fBmark\fP} Для трафика, поступающего из направления ORIGINAL, присвоить этому пакету идентификатор \fIid\fP зоны и выполнять поиск только в этой зоне. Если вместо идентификатора зоны используется метка \fBmark\fP, то зона является производной от пакета nfmark. .TP \fB\-\-zone\-reply\fP {\fIid\fP|\fBmark\fP} Для трафика, поступающего из направления REPLY, присвоить этому пакету пакету идентификатор \fIid\fP зоны и выполнять поиск только в этой зоне. Если вместо идентификатора зоны используется метка \fBmark\fP, то зона является производной от пакета nfmark. .TP \fB\-\-zone\fP {\fIid\fP|\fBmark\fP} Присвоить этому пакету идентификатор \fIid\fP зоны и выполнять поиск только в этой зоне. Если вместо идентификатора зоны \fIid\fP используется метка \fBmark\fP, то зона является производной от пакета nfmark. По умолчанию пакеты имеют зону 0. Этот параметр применяется в обоих направлениях. .TP \fB\-\-timeout\fP \fIname\fP Использовать для соединения политику тайм\-аута с указанным именем \fIname\fP. Это обеспечивает более гибкое определение политики тайм\-аута, чем глобальные значения тайм\-аута, доступные в /proc/sys/net/netfilter/nf_conntrack_*_timeout_*. .SS DNAT Эта цель поддерживается только в таблице \fBnat\fP, в цепочках \fBPREROUTING\fP и \fBOUTPUT\fP, а также в пользовательских цепочках, которые вызываются из этих цепочек. Она изменяет адрес назначения всех пакетов в данном соединении; при этом проверка правил прекращается. В этой цели используются следующие параметры: .TP \fB\-\-to\-destination\fP [\fIipaddr\fP[\fB\-\fP\fIipaddr\fP]][\fB:\fP\fIport\fP[\fB\-\fP\fIport\fP[\fB/\fP\fIbaseport\fP\fB]]]\fP Этот параметр определяет один новый IP\-адрес назначения из диапазона IP\-адресов. Когда в правиле определён один из протоколов \fBtcp\fP, \fBudp\fP, \fBdccp\fP или \fBsctp\fP, то дополнительно может быть определён диапазон портов. Если диапазон портов не определён, то порт назначения изменён не будет. Если IP\-адрес не определён, то будет изменен только порт назначения. Если задано значение \fBbaseport\fP, то разность между существующим портом назначения и значением значением baseport используется в качестве смещения в диапазон отображаемых портов. Это позволяет создавать смещенные диапазоны карт портов и доступно с версии ядра 4.18. Для одного порта или одного значения \fIbaseport\fP может использоваться наименование службы, указанное в файле /etc/services. .TP \fB\-\-random\fP Рандомизировать отображение исходящего порта (ядро >= 2.6.22). .TP \fB\-\-persistent\fP Предоставить клиенту один и тот же адрес источника/адрес назначения для каждого соединения. Этот параметр заменяет цель SAME. Поддержка постоянных отображений доступна с версии 2.6.29\-rc2. .TP Поддержка IPv6 доступна начиная с версии ядер Linux >= 3.7. .SS "DNPT (Специфика IPv6)" Эта цель обеспечивает преобразование сетевого префикса назначения IPv6, без сохранения состояния, в сетевой префикс IPv6 (как это описано в RFC 6296). .PP Эту цель можно применять только в таблице \fBmangle\fP. Применять эту цель в таблице \fBnat\fP недопустимо. В этой цели используются следующие параметры: .TP \fB\-\-src\-pfx\fP [\fIprefix/\fP\fIlength]\fP Определяет преобразуемый префикс источника и его длину. .TP \fB\-\-dst\-pfx\fP [\fIprefix/\fP\fIlength]\fP Определяет преобразуемый префикс назначения и его длину. .PP Для того, чтобы отменить преобразование следует использовать цель SNPT. Пример: .IP ip6tables \-t mangle \-I POSTROUTING \-s fd00::/64 \! \-o vboxnet0 \-j SNPT \-\-src\-pfx fd00::/64 \-\-dst\-pfx 2001:e20:2000:40f::/64 .IP ip6tables \-t mangle \-I PREROUTING \-i wlan0 \-d 2001:e20:2000:40f::/64 \-j DNPT \-\-src\-pfx 2001:e20:2000:40f::/64 \-\-dst\-pfx fd00::/64 .PP Возможно, вам потребуется включить соседний прокси\-сервер IPv6: .IP sysctl \-w net.ipv6.conf.all.proxy_ndp=1 .PP Вы также должны использовать цель \fBNOTRACK\fP, чтобы отключить отслеживание соединений для преобразованных потоков. .SS DSCP Эта цель изменяет значение битов DSCP в заголовке TOS пакета IPv4. Поскольку она манипулирует пакетом, то её можно использовать только в таблице mangle. .TP \fB\-\-set\-dscp\fP \fIvalue\fP Определяет числовое значение в поле DSCP (значение может быть десятичным или шестнадцатеричным). .TP \fB\-\-set\-dscp\-class\fP \fIclass\fP Определяет для поля DSCP значение класса DiffServ. .SS "ECN (Специфика IPv4)" Эта цель избирательно обрабатывает известные черные дыры ECN. Её можно использовать только в таблице mangle. .TP \fB\-\-ecn\-tcp\-remove\fP Удаляет все биты ECN из заголовка TCP. Конечно, её можно использовать только совместно с \fB\-p tcp\fP. .SS "(Специфика IPv6)" Эта цель используется для изменения поля Hop Limit в заголовке IPv6. Поле Hop Limit аналогично полю значение TTL в IPv4. Установка или увеличение поля Hop Limit потенциально может быть очень опасной, поэтому её следует избегать любой ценой. Эта цель может использоваться только в таблице \fBmangle\fP. .PP Никогда не устанавливайте и не увеличивайте значение Hop Limit для пакетов, покидающих вашу локальную сеть! .TP \fB\-\-hl\-set\fP \fIvalue\fP Определяет Hop Limit равным значению "value". .TP \fB\-\-hl\-dec\fP \fIvalue\fP Уменьшает время Hop Limit на значение "value". .TP \fB\-\-hl\-inc\fP \fIvalue\fP Увеличивает время Hop Limit на значение "value". .SS HMARK Эта цель действует также как цель MARK, т.е. устанавливает метку fwmark, но метка вычисляется исходя из выбранного селектора хеширования пакетов. Вам также необходимо указать диапазон меток и (необязательно) смещение, с которого следует начинать. Сообщения об ошибках ICMP проверяются и используются для вычисления хэширования. .PP Поддерживаемые параметры: .TP \fB\-\-hmark\-tuple\fP tuple Членами кортежа (tuple) могут быть: \fBsrc\fP \- адрес источника (адреса IPv4, IPv6), \fBdst\fP \- адрес назначения (адреса IPv4, IPv6), \fBsport\fP \- порт источника (TCP, UDP, UDPlite, SCTP, DCCP), \fBdport\fP \- порт назначения (TCP, UDP, UDPlite, SCTP, DCCP), \fBspi\fP \- индекс параметра безопасности (AH, ESP) и \fBct\fP \- вместо селекторов пакетов использовать кортеж conntrack. .TP \fB\-\-hmark\-mod\fP \fIvalue (должно быть > 0)\fP Модуль для вычисления хэша (для ограничения диапазона возможных меток). .TP \fB\-\-hmark\-offset\fP \fIvalue\fP Смещение, с которого начинаются метки. .TP Для расширенного использования вместо использования \-\-hmark\-tuple вы можете определить пользовательские префиксы (prefixes) и маски (masks): .TP \fB\-\-hmark\-src\-prefix\fP \fIcidr\fP Маска адреса источника в нотации CIDR. .TP \fB\-\-hmark\-dst\-prefix\fP \fIcidr\fP Маска адреса назначения в нотации CIDR. .TP \fB\-\-hmark\-sport\-mask\fP \fIvalue\fP 16\-битная маска порта источника в шестнадцатеричном формате. .TP \fB\-\-hmark\-dport\-mask\fP \fIvalue\fP 16\-битная маска порта назначения в шестнадцатеричном формате. .TP \fB\-\-hmark\-spi\-mask\fP \fIvalue\fP 32\-битное поле с маской spi. .TP \fB\-\-hmark\-proto\-mask\fP \fIvalue\fP 8\-битное поле с номером протокола уровня 4. .TP \fB\-\-hmark\-rnd\fP \fIvalue\fP 32\-битное случайное пользовательское значение для вычисления хэша. .PP \fIПримеры:\fP .PP iptables \-t mangle \-A PREROUTING \-m conntrack \-\-ctstate NEW \-j HMARK \-\-hmark\-tuple ct,src,dst,proto \-\-hmark\-offset 10000 \-\-hmark\-mod 10 \-\-hmark\-rnd 0xfeedcafe .PP iptables \-t mangle \-A PREROUTING \-j HMARK \-\-hmark\-offset 10000 \-\-hmark\-tuple src,dst,proto \-\-hmark\-mod 10 \-\-hmark\-rnd 0xdeafbeef .SS IDLETIMER Эта цель может использоваться для определения времени простоя интерфейсов. Таймеры идентифицируются по меткам и создаются, когда устанавливается правило с новой меткой. Правила также принимают значение тайм\-аута (в секундах) в качестве параметра. Если более чем в одном правиле используется одна и та же метка таймера, то таймер будет перезапускаться всякий раз, когда будет выполнено какое\-либо из правил. В sysfs создается одна запись для каждого таймера. Эта запись содержит время, оставшееся до срабатывания таймера. Записи расположены в классе xt_idletimer: .PP /sys/class/xt_idletimer/timers/