Provided by: manpages-ru_4.27.0-1_all bug

НАИМЕНОВАНИЕ

       iptables-extensions - набор дополнений к стандартной программе iptables

ОБЗОР

       ip6tables [-m name [module-options...]] [-j target-name [target-options...]

       iptables [-m name [module-options...]] [-j target-name [target-options...]

КРИТЕРИИ ДОПОЛНИТЕЛЬНЫЕ

       ptables может использовать дополнительные модули критериев пакетов с параметрами -m или --match, за этими
       параметрами  должно  следовать  наименование  соответствующего  модуля;  после  этого,  в  зависимости от
       конкретного модуля, становятся доступны различные дополнительные параметры командной  строки.  Вы  можете
       определить  несколько  модулей  критериев в одной строке. Для получения справки по конкретному модулю, вы
       можете, после наименования модуля, указать параметры -h или --help. Модули критериев  применяются  в  том
       порядке, в котором они указаны в правиле.

       Если  был  указан  параметр -p или  --protocol и если (и только если) встретится неизвестный параметр, то
       iptables попытается  загрузить соответствующий модуль с тем  же  наименованием,  что  и  протокол,  чтобы
       попытаться сделать параметр доступным.

   addrtype
       Модуль  критерия  соответствия  пакета  типу  адреса.  Типы  адресов  используются в сетевом стеке ядра и
       классифицируют адреса по различным  группам.  Точное  определение  этой  группы  зависит  от  конкретного
       протокола третьего (межсетевого) уровня.  Примечание переводчика. XRESOLVE - Этот тип адреса используется
       для  отправки запросов на поиск маршрута в пользовательские приложения, которые будут выполнять поиск для
       ядра. Это может быть необходимо для отправки некорректных запросов за пределы ядра или  для  того,  чтобы
       приложение  выполняло  поиск  самостоятельно.  Не  реализовано  в Linux. THROW - Специальный адрес в ядре
       Linux. Если пакет с таким адресом попадает в таблицу маршрутизации, то он будет вести себя так, как будто
       в таблице не найден маршрут. При обычной маршрутизации это означает, что пакет будет вести себя так,  как
       если  бы  у  него  не  было  маршрута. Однако, при маршрутизации по политике маршрутизации, этот,  другой
       маршрут может,  быть найден в другой таблице маршрутизации.

       Поддерживаются следующие типы адресов, критериев и параметров:

       UNSPEC - реально не существующий, адрес (т.е. 0.0.0.0).

       UNICAST
              - реальный и единственный адрес

       LOCAL  - локальный адрес

       BROADCAST
              - адрес широковещательной рассылки

       ANYCAST
              - адрес группы хостов, но запрос будет обработан только одним из хостов данной группы

       MULTICAST
              - адрес многоадресной рассылки

       BLACKHOLE
              - адрес "чёрной дыры" (пакет с таким адресом будет просто удалён;  никаких  сообщений  отправителю
              пакета послано не будет)

       UNREACHABLE
              - недоступный адрес

       PROHIBIT
              - запрещенный адрес

       THROW  FIXME

       NAT    FIXME

       XRESOLVE

       [!] --src-type type
              Критерий - если исходящий адрес относится к заданному типу.

       [!] --dst-type type
              Критерий - если адрес назначения относится к заданному типу.

       --limit-iface-in
              Проверка   типа   адреса  ограничена  интерфейсом,  через  который  пришёл  пакет.  Этот  параметр
              действителен  только  в  цепочках PREROUTING,  INPUT  и  FORWARD.  Этот  параметр  не  может  быть
              определен с помощью параметра --limit-iface-out.

       --limit-iface-out
              Проверка   типа  адреса  ограничена  интерфейсом,  через который отправляется пакет. Этот параметр
              действителен только в цепочках  POSTROUTING,  OUTPUT  и  FORWARD.  Этот  параметр  не  может  быть
              определен с помощью параметра --limit-iface-in.

   ah (Специфика IPv6)
       Модуль критерия соответствия параметров в заголовке аутентификации пакетов протокола IPSec.

       [!] --ahspi spi[:spi]
              Критерий поля SPI.

       [!] --ahlen length
              Общая длина данного заголовка в октетах.

       --ahres
              Критерий - если зарезервированное поле заполнено нулями.

   ah (Специфика IPv4)
       Модуль критериев соответствия поля SPI в заголовке аутентификации пакетов протокола IPSec.

       [!] --ahspi spi[:spi]

   bpf
       Модуль критерия, использующий фильтр сокетов Linux. Модуль использует путь к объекту eBPF или к программе
       cBPF в десятичном формате.

       --object-pinned path
              Передаёт путь к закрепленному объекту eBPF.

       Приложения  загружают  программы  eBPF в ядро с помощью системного вызова bpf() и команды BPF_PROG_LOAD и
       могут  закрепить   их   в   виртуальной  файловой  системе  с  помощью  BPF_OBJ_PIN.  Чтобы  использовать
       закрепленный объект в iptables, смонтируйте файловую систему bpf с помощью

              mount -t bpf bpf ${BPF_MOUNT}

       затем вставьте фильтр пути в iptables:

              iptables -A OUTPUT -m bpf --object-pinned ${BPF_MOUNT}/{PINNED_PATH} -j ACCEPT

       --bytecode code
              Передать формат байт-кода BPF, созданный утилитой nfbpf_compile.

       Формат   кода   аналогичен   выводу   команды   tcpdump  -ddd: одна строка, в которой хранится количество
       инструкций, за которой следует по одной строке для каждой инструкции. Строки команд следуют шаблону  "u16
       u8  u8   u32"   в десятичной  системе  счисления.  Поля  кодируют  операцию смещение перехода,  если  оно
       истинно,  смещение  перехода,  если  оно  ложно и общее, многоразового применения, поле "K".  Комментарии
       не поддерживаются.

       Например,  чтобы читать только пакеты, соответствующие "ip proto 6", вставьте следующее, без комментариев
       или завершающих пробелов:

              4 # номер команды
              48 0 0 9 # загрузка байта ip->proto
              21 0 1 6 # переход равный IPPROTO_TCP
              6 0 0 1 # обратный проход (ненулевой)
              6 0 0 0 # возвращение ошибки (ноль)

       Вы можете передать этот критерий в фильтр bpf с помощью следующей команды:

              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

       Или, вместо этого, вы можете вызвать утилиту nfbpf_compile:

              iptables -A OUTPUT -m bpf --bytecode "`nfbpf_compile RAW 'ip proto 6'`" -j ACCEPT

       Или используйте tcpdump -ddd. В этом случае создайте BPF, предназначенный для устройства с тем  же  типом
       канала   передачи   данных,   который  соответствует  xtables. Iptables передает пакеты с сетевого уровня
       вверх, без mac-уровня. Выберите устройство с типом канала передачи данных RAW, например устройство tun:

              ip tuntap add tun0 mode tun
              ip link set tun0 up
              tcpdump -ddd -i tun0 ip proto 6

       Список известных типов каналов передачи данных для данного устройства может  быть  просмотрен  с  помощью
       команды tcpdump -L -i $dev.

       Возможно, вы захотите узнать больше о BPF на странице руководства  bpf(4) FreeBSD.

   cgroup
       [!] --path path
              Модуль критерия членства в группе 2.

              Каждый  сокет связан с группой создания процесса v2c. Этот модуль проверяет соответствие  пакетов,
              поступающих  из  всех  сокетов  в подиерархии  указанного  пути   или   направляющиеся   ко   всем
              сокетам указанного пути. Путь должен быть определён относительно корня    иерархии группы 2.

       [!] --cgroup classid
              Критерий  класса группы net_cls.

              classid  -  это  маркер,  установленный  с  помощью контроллера cgroup net_cls.  Этот  параметр  и
              параметр  --path  нельзя  использовать вместе.

       Например:

              iptables -A OUTPUT -p tcp --sport 80 -m cgroup ! --path service/http-server -j DROP

              iptables -A OUTPUT -p tcp --sport 80 -m cgroup ! --cgroup 1 -j DROP

       ВАЖНО: при использовании во входной цепочке средство  сопоставления  групп  в  настоящее  время  обладает
       ограниченной  функциональностью;  это  означает,  что  оно  будет  сопоставлять  только  пакеты,  которые
       обрабатываются  локальными  сокетами   посредством   раннего   демультиплексирования   сокетов.   Поэтому
       повсеместное  использование  этого средства в цепочке INPUT не рекомендуется до тех пор, пока последствия
       не будут хорошо изучены.

       Доступен начиная с Linux версии 3.14.

   cluster
       Этот модуль позволяет развертывать шлюзовые и серверные кластеры с  общим  распределением  нагрузки   без
       использования  средств  балансировки нагрузки.

       Модуль   этого   критерия  требует, чтобы все узлы видели одни и те же пакеты. Этот модуль решает, должен
       ли этот узел обрабатывать пакет, на основе следующих параметров:

       --cluster-total-nodes num
              Задаёт общее количество узлов в кластере.

       [!] --cluster-local-node num
              Задаёт номер идентификатора локального узла.

       [!] --cluster-local-nodemask mask
              Устанавливает маску идентификатора номера локального узла. Вы можете  использовать  этот  параметр
              вместо параметра --cluster-local-node.

       --cluster-hash-seed value
              Задаёт начальное значение хэша Дженкинса.

       Например:

              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

              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

              iptables -A PREROUTING -t mangle -i eth1 -m mark ! --mark 0xffff -j DROP

              iptables -A PREROUTING -t mangle -i eth2 -m mark ! --mark 0xffff -j DROP

       Также должны быть выполнены следующие команды, чтобы заставить все узлы видеть одни и те же пакеты:

              ip maddr add 01:00:5e:00:01:01 dev eth1

              ip maddr add 01:00:5e:00:01:02 dev eth2

              arptables -A OUTPUT -o eth1 --h-length 6 -j mangle --mangle-mac-s 01:00:5e:00:01:01

              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

              arptables -A OUTPUT -o eth2 --h-length 6 -j mangle --mangle-mac-s 01:00:5e:00:01:02

              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

       ПРИМЕЧАНИЕ:  Приведенные  выше  команды  iptables  используют  основной  синтаксис.  Если  вы используете
       программу  arptables-jf,  содержащуюся  в некоторых  версиях  RedHat,  CentOS и Fedora, то вы столкнетесь
       с синтаксическими ошибками. Следовательно, чтобы заставить их работать, вам придется  адаптировать  их  к
       синтаксису arptables-jf.

       В  случае  TCP-соединений  средство pickup facility  должно  быть  отключено, чтобы  избежать  маркировки
       пакетов  TCP  ACK,  поступающих  в направлении ответа, как действительных.

              echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose

   comment
       Этот модуль позволяет добавлять комментарии (длиной до 256 символов) к любому правилу.

       --comment comment

       Например:
              iptables -A INPUT -i eth1 -m comment --comment "my local LAN"

   connbytes
       Модуль  критерия  количества байт или  пакетов,  переданных  соединением  (или  одним  из  двух  потоков,
       составляющих соединение) на данный момент или среднего количества байт в пакете.

       Счетчики являются 64-разрядными и, таким образом, их переполнение вряд ли возможно.

       Основное   применение   -  обнаружение  длительных  загрузок  и  маркировка  их  как  запланированных   с
       использованием  диапазона  с  более  низким приоритетом в системе управления трафиком.

       Переданные байты для каждого соединения также  можно  просмотреть  с  помощью  команды  conntrack  -L,  а
       получить доступ можно с помощью ctnetlink.

       ПРИМЕЧАНИЕ:  Для   соединений,  у  которых  нет  учетной  информации, критерий  всегда  будет  возвращать
       значение  false.  Флаг  sysctl  "net.netfilter.nf_conntrack_acct"  определяет,  будут  ли  подсчитываться
       байты  или  пакеты в соединениях new. Существующие потоки соединений не будут получать или терять учётную
       информацию при изменении состояния флага sysctl.

       [!] --connbytes from[:to]
              Сопоставлять пакеты из соединения, размер packets/bytes/average  пакета  которого  больше,  чем  у
              FROM,  и  меньше, чем у TO, bytes/packet. если значение TO опущено, то выполняется только проверка
              FROM. Символ "!" используется для сопоставления пакетов, не входящих в диапазон.

       --connbytes-dir {original|reply|both}
              Определяет какие пакеты следует учитывать.

       --connbytes-mode {packets|bytes|avgpkt}
              Следует ли проверять количество пакетов, количество переданных байт или средний размер (в  байтах)
              всех полученных на данный момент пакетов. Обратите внимание, что когда "оба" используется вместе с
              "avgpkt",  и  данные  передаются (в основном) только в одном направлении (например, HTTP), средний
              размер пакета будет составлять около половины фактических данных в пакетах.

       Например:
              iptables .. -m connbytes --connbytes 10000:100000 --connbytes-dir both --connbytes-mode bytes ...

   connlabel
       Модуль сопоставляет или добавляет метки подключения к соединению.  Метки  подключения  аналогичны  меткам
       подключения, за исключением того, что метки основаны на битах; то есть все метки могут быть прикреплены к
       потоку одновременно. В настоящее время поддерживается до 128 уникальных меток.

       [!] --label name
              Совпадает,  если  для  соединения  задана метка name.  Вместо имени (которое будет преобразовано в
              число, см. пример ниже) может использоваться число.   Использование  числа  всегда  переопределяет
              файл connlabel.conf.

       --set  Если  метка  не была установлена для подключения, установить ее.  Обратите внимание, что установка
              метки может привести к сбою.  Это происходит потому, что  ядро  выделяет  область  хранения  меток
              conntrack  при  создании  соединения  и  резервирует  только тот объем памяти, который требуется в
              соответствии с набором  правил,  существующим  на  момент  создания  соединения.   В  этом  случае
              сопоставление  завершится  неудачей  (или  завершится успешно, в случае, если параметр --label был
              отменен).

       Это соответствие зависит от версии libnetfilter_conntrack 1.0.4 или более поздней.  Преобразование  меток
       выполняется с помощью файла конфигурации /etc/xtables/connlabel.conf.

       Например:

              0    eth0-in
              1    eth0-out
              2    ppp-in
              3    ppp-out
              4    bulk-traffic
              5    interactive

   connlimit
       Этот модуль позволяет ограничить количество параллельных соединений с сервером для каждого адреса клиента
       или для блока клиентских адресов.

       --connlimit-upto n
              Критерий - если количество существующих подключений меньше или равно n.

       --connlimit-above n
              Критерий - если количество существующих соединений более n.

       --connlimit-mask prefix_length
              Объединение хостов в группы по критерию длины префикса. Для IPv4 это должно быть число от 0 до 32.
              Для  IPv6 - от 0 до 128. Если значение не указано, то используется максимальная длина префикса для
              применяемого протокола.

       --connlimit-saddr
              Применение ограничения  для  группы  источников.  Это  применяется  по  умолчанию,  кода  параметр
              --connlimit-daddr не определён.

       --connlimit-daddr
              Применить ограничение к группе назначения.

       Примеры:

       •   Разрешить 2 соединения telnet для каждого клиентского хоста:
           iptables -A INPUT -p tcp --syn --dport 23 -m connlimit --connlimit-above 2 -j REJECT

       •   Однако можно также определить критерий и наоборот:
           iptables -A INPUT -p tcp --syn --dport 23 -m connlimit --connlimit-upto 2 -j ACCEPT

       •   Ограничить количество параллельных HTTP-запросов до 16 из сети источника класса C (24-разрядная маска
           сети):
           iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 16 --connlimit-mask 24 -j REJECT

       •   Ограничить количество параллельных HTTP-запросов не более 16 для соединений локальной сети (ipv6):
           ip6tables  -p tcp --syn --dport 80 -s fe80::/64 -m connlimit --connlimit-above 16 --connlimit-mask 64
           -j REJECT

       •   Ограничить количество подключений к данному хосту:
           ip6tables -p tcp --syn --dport 49152:65535 -d  2001:db8::1  -m  connlimit  --connlimit-above  100  -j
           REJECT

   connmark
       Это  модуль критерия поля метки сетевого фильтра, связанной с соединением; метка может быть установлена с
       помощью цели CONNMARK, которая определена ниже.

       [!] --mark value[/mask]
              Сопоставлять пакеты в соединениях с заданным  значением  метки  (если  указана  маска,  то,  перед
              сравнением, будет выполнена операция логическое И с меткой).

   conntrack
       Этот  модуль,  в  сочетании  с  отслеживанием  соединения,  обеспечивает  доступ к отслеживанию состояния
       соединения данного пакета или данного соединения.

       [!] --ctstate statelist
              statelist - это разделенный запятыми список состояний соединения, которые необходимо  сопоставить.
              Ниже перечислены возможные состояния.

       [!] --ctproto l4proto
              Критерий протокола уровня 4 (по номеру или названию).

       [!] --ctorigsrc address[/mask]

       [!] --ctorigdst address[/mask]

       [!] --ctreplsrc address[/mask]

       [!] --ctrepldst address[/mask]
              Критерии отношения запрос/ответ адреса источника или адреса назначения.

       [!] --ctorigsrcport port[:port]

       [!] --ctorigdstport port[:port]

       [!] --ctreplsrcport port[:port]

       [!] --ctrepldstport port[:port]
              Критерии  отношения запрос/ответ порта источника или порта назначения (TCP/UDP/и т.д.),  или  ключ
              GRE. Критерии  для  диапазона  портов поддерживается только в версиях ядра выше 2.6.38.

       [!] --ctstatus statelist
              Параметр statuslist это - разделенный запятыми, список критериев состояния подключения.  Возможные
              состояния приведены ниже.

       [!] --ctexpire time[:time]
              Критерий времени жизни в секундах с заданным значением или диапазоном значений (включительно).

       --ctdir {ORIGINAL|REPLY}
              Критерий   пакетов,   которые  передаются  в  указанном  направлении. Если этот флаг не определён,
              то это - критерий для пакетов в обоих направлениях.

       Состояния для --ctstate:

       INVALID
              Пакет не связан ни с каким известным соединением.

       NEW    Пакет создал новое соединение или иным образом связан с соединением, в  котором  не  отслеживались
              пакеты в обоих направлениях.

       ESTABLISHED
              Пакет связан с соединением, в котором отслеживались пакеты в обоих направлениях.

       RELATED
              Пакет  создал  соединение,  но связан с существующим соединением, таким как передача данных по FTP
              или ошибки ICMP.

       UNTRACKED
              Пакет не отслеживается; это происходит, когда вы явно отменяете отслеживание пакета, используя  -j
              CT --notrac в таблице raw.

       SNAT   Виртуальное состояние, когда оригинальный адрес источника отличается от адреса назначения ответа.

       DNAT   Виртуальное состояние, когда адрес оригинальный назначения отличается от источника ответа.

       Состояния для --ctstatus:

       NONE   Ничего из перечисленного ниже.

       EXPECTED
              Ожидаемое соединение (т.е. conntrack helper настроил его).

       SEEN_REPLY
              Conntrack отслеживает пакеты в обоих направлениях.

       ASSURED
              Срок действия записи Conntrack никогда не должен истекать досрочно.

       CONFIRMED
              Соединение подтверждено: созданный пакет покинул бокс.

   cpu
       [!] --cpu number
              Сопоставить  процессоры  (cpu), обрабатывающие этот пакет. Процессоры с номерами от 0 до NR_CPUS-1
              Могут использоваться в сочетании с RPS (удаленным управлением пакетами)  или  сетевыми  картами  с
              несколькими очередями для распределения сетевого трафика по разным очередям.

       Например:

       iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 0 -j REDIRECT --to-ports 8080

       iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 1 -j REDIRECT --to-ports 8081

       Доступен начиная с версии Linux 2.6.36.

   dccp
       [!] --source-port,--sport port[:port]

       [!] --destination-port,--dport port[:port]

       [!] --dccp-types mask
              Модуль  критерия  одного  из  типов  пакетов   DCCP списка "mask". Список "mask"- это список типов
              пакетов, разделенных запятыми. Типы  пакетов: REQUEST RESPONSE DATA  ACK  DATAACK  CLOSEREQ  CLOSE
              RESET SYNC SYNCACK INVALID.

       [!] --dccp-option number
              Критерий работает когда определён параметр DCCP.

   devgroup
       Модуль критерия принадлежности пакета к группе устройств входящего или исходящего интерфейса. Параметры:

       [!] --src-group name
              Критерий принадлежности устройства к группе входящего интерфейса.

       [!] --dst-group name
              Критерий принадлежности устройства к группе исходящего интерфейса.

   dscp
       Модуль критерия соответствия 6-разрядному полю DSCP в поле TOS заголовка IP. DSCP заменил TOS в IETF (см.
       RFC 2638).

       [!] --dscp value
              Критерий  сравнения  числового  (десятичного  или шестнадцатеричного) значения (value) в диапазоне
              [0-63].

       [!] --dscp-class class
              Критерий  класса  DiffServ.  Это  значение  может  быть  любым  из  классов  BE,   EF,   AFxx  или
              CSx. Затем оно будет преобразовано в соответствующее числовое значение.

   dst (Специфика IPv6)
       Модуль критерия параметров в заголовке "Параметры назначения".

       [!] --dst-len length
              Общая длина данного заголовка в октетах.

       --dst-opts type[:length][,type[:length]...]
              Числовой тип параметра и длина данных параметра в октетах.

   ecn
       Модуль  критерия  битов заголовка ECN IPv4/IPv6 и TCP. ECN это - явный механизм уведомления о перегрузке,
       определенный в RFC 3168.

       [!] --ecn-tcp-cwr
              Критерий работает тогда, когда установлен бит TCP ECN CWR (получено окно перегрузки).

       [!] --ecn-tcp-ece
              Критерий работает тогда, когда установлен бит TCP ECN ECE (эхо ECN).

       [!] --ecn-ip-ect num
              Критерий конкретного протокола ECT IPv4/IPv6 (транспорт с поддержкой ECN). Вы должны указать число
              от "0" до "3".

   esp
       Модуль критерия SPI в заголовке ESP пакетов IPSec.

       [!] --espspi spi[:spi]

   eui64 (Специфика IPv6)
       Этот  модуль  является  частью  EUI-64  автоматически  сконфигурированного IPv6-адреса  без состояния. Он
       сравнивает EUI-64, полученный из исходящего MAC-адреса в кадре Ethernet, с младшими 64 битами  исходящего
       адреса IPv6. Однако бит "Universal/Local" не  сравнивается. Этот модуль не имеет другого кадра канального
       уровня и работает только в цепочках  PREROUTING, INPUT и FORWARD.

   frag (Специфика IPv6)
       Модуль критериев параметров в заголовке фрагмента.

       [!] --fragid id[:id]
              Критерии заданного идентификатора или его диапазона.

       [!] --fraglen length
              Этот   параметр   нельзя   использовать   в  ядре  версии  2.6.10  или более поздней версии. Длина
              заголовка фрагмента статична и этот параметр не имеет смысла.

       --fragres
              Критерий заполнения зарезервированных полей нулем.

       --fragfirst
              Критерий первого фрагмента.

       --fragmore
              Критерий, если фрагментов много.

       --fraglast
              Критерий последнего фрагмента.

   hashlimit
       Критерий hashlimit использует  хэш-накопитель  для  быстрого  ограничения  скорости  группы   соединений,
       использующих  правило  iptables  single (также как критерий  limit). Группировка может быть выполнена для
       каждой группы хостов (адрес  источника  и/или  адрес  назначения)  и/или  для  каждого  порта.  Это  дает
       возможность  задавать количество пакетов "N в единицу времени для каждой  группы или количество байт "N в
       секунду" (некоторые примеры приведены ниже). Примечание переводчика. Смотрите примечание к критерию limit
       ниже.

       Параметры hash limit ((--hashlimit-upto, --hashlimit-above) и --hashlimit-name являются обязательными.

       --hashlimit-upto amount[/second|/minute|/hour|/day]
              Критерий - если  скорость  ниже  или  равна  amount/quantum (количество/единица времени). Скорость
              указывается  либо  в  виде  числа  с  необязательным  суффиксом  единицы  времени,  либо  в   виде
              amountb/second (число байт за секунду). Значение по умолчанию: 3/hour (3/час).

       --hashlimit-above amount[/second|/minute|/hour|/day]
              Критерий - если скорость более amount/quantum.

       --hashlimit-burst amount
              Максимальное  начальное  количество  пакетов для критерия соответствия: это число увеличивается на
              единицу каждый раз, когда не достигается  указанное  выше  ограничение,  вплоть  до  этого  числа;
              значение  по  умолчанию  равно  5.   Когда  запрашивается критерий соответствия скорости на основе
              байтов, этот параметр определяет количество байтов, которое  может  превышать  заданную  скорость.
              Этот  параметр  следует  использовать  с  осторожностью.  Если  срок  действия записи истекает, то
              значение пакета также сбрасывается.

       --hashlimit-mode {srcip|srcport|dstip|dstport},...
              Список   объектов,   разделенных   запятыми,   которые   необходимо   учитывать.   Если   параметр
              --hashlimit-mode  не  задан,  то  критерий  hashlimit  работает также как критерий limit, но путём
              выполнения хеширования.

       --hashlimit-srcmask prefix
              Когда используется выражение --hashlimit-mode srcip,  все  встречающиеся  исходящие  адреса  будут
              сгруппированы  в  соответствии  с  заданной  длиной префикса (prefix) и на созданную таким образом
              подсеть будет распространяться hashlimit.  Значение  префикса  должно  быть  в  диапазоне от 0  до
              32,  включительно.  Обратите  внимание,  что  --hashlimit-srcmask 0 в основном делает то же самое,
              когда не определено значение srcip для параметра --hashlimit-mode, но технически это дороже.

       --hashlimit-dstmask prefix
              Тоже, что --hashlimit-srcmask, но только для адресов назначения.

       --hashlimit-name foo
              Имя для записи в /proc/net/ipt_hashlimit/foo.

       --hashlimit-htable-size buckets
              Количество элементов хэш-таблицы.

       --hashlimit-htable-max entries
              Максимальное количество записей в хэше.

       --hashlimit-htable-expire msec
              Сколько миллисекунд проходит до истечения срока действия записей в хеше.

       --hashlimit-htable-gcinterval msec
              Сколько миллисекунд проходит между интервалами уборки "мусора".

       --hashlimit-rate-match
              Сортировать поток вместо того,  чтобы  ограничивать  его  скорость.  Это  действует  как  критерий
              истина/ложь (true/false) в зависимости от значения уставки более/менее (above/below).

       --hashlimit-rate-interval sec
              Может использоваться с  параметром --hashlimit-rate-match для указания интервала, с которым должна
              производиться выборка. Примеры:

       Примеры:

       Критерий скорости для исходящего хоста:
              "1000   пакетов   в   секунду   для   каждого   хоста  сети  192.168.0.0/16"=>  -s  192.168.0.0/16
              --hashlimit-mode srcip --hashlimit-upto 1000/sec

       Критерий для исходящего порта:
              "100 пакетов в секунду для каждой службы хоста 192.168.1.1"  =>  -s  192.168.1.1  --hashlimit-mode
              srcport --hashlimit-upto 100/sec

       Критерий для подсети:
              "10000  пакетов  в  минуту  для  каждой  подсети  /28  (группы  по 8 адресов)  сети 10.0.0.0/8" =>
              -s 10.0.0.0/8 --hashlimit-mask 28
                            --hashlimit-upto 10000/min

       Критерий байт в секунду:
              "потоки,    превышающие    512    kbyte/s"    =>    --hashlimit-mode   srcip,dstip,srcport,dstport
              --hashlimit-above 512kb/s

       Критерий байт в секунду:
              "хостам, скорость которых превышает  512  Кбайт/с  разрешить  скорость   до   1  мегабайта/с   без
              согласования" --hashlimit-mode  dstip --hashlimit-above 512kb/s --hashlimit-burst 1mb

   hbh (Специфика IPv6)
       Модуль критерия параметров заголовка Hop-by-Hop (переход за переходом).

       [!] --hbh-len length
              Общая длина данного заголовка в октетах.

       --hbh-opts type[:length][,type[:length]...]
              Числовой тип параметра и длина данных параметра в октетах.

   helper
       Модуль критерия пакетов, который относится к специфике conntrack-helper.

       [!] --helper string
              Критерии соответствия пакетов, которые относятся к специфике conntrack-helper.

              строкой (string) может быть "ftp" для пакетов, относящихся к сессии FTP на порту по умолчанию. Для
              других портов добавьте к значению  номер порта через дефис, т.е. "ftp-2121".

              Те же правила применяются и к другим conntrack helpers.

   hl (Специфика Pv6)
       Этот модуль определяет критерии поля переходов в заголовке IPv6.

       [!] --hl-eq value
              Критерий - если допустимое количество переходов равно значению (value).

       --hl-lt value
              Критерий - если допустимое количество переходов менее значения (value).

       --hl-gt value
              Критерий - если допустимое количество переходов более значения (value).

   icmp (Специфика IPv4)
       Это  дополнение  можно  использовать,  если определён параметр "--protocol icmp". Дополнение поддерживает
       следующий параметр:

       [!] --icmp-type {type[/code]|typename}
              Это позволяет указать тип ICMP, который может быть числовым типом ICMP, парой тип/код или одним из
              названий типов ICMP, выводимых командой
               iptables -p icmp -h

   icmp6 (Специфика IPv6)
       Это  дополнение  можно  использовать,   если  определен  параметр  "--protocol  ipv6-icmp"  или  параметр
       "--protocol icmpv6". Оно поддерживает следующий параметр:

       [!] --icmpv6-type type[/code]|typename
              Это  позволяет  указать  тип ICMPv6, который может быть числовым type (типом) ICMPv6 , type и code
              (типом и кодом) или одним из названий типа ICMPv6, отображаемых командой
               ip6tables -p ipv6-icmp -h

   iprange
       Это критерий для произвольно заданного диапазона IP-адресов.

       [!] --src-range from[-to]
              Критерий - если IP-адрес источника находится в указанном диапазоне.

       [!] --dst-range from[-to]
              Критерий - если IP-адрес назначения находится в указанном диапазоне.

   ipv6header (Специфика IPv6)
       Модуль критерия дополнительных заголовков IPv6 и/или заголовков верхнего уровня.

       --soft Критерий - если пакет включает  любой  (any)  из  заголовков,  определённых  с  помощью  параметра
              --header.

       [!] --header header[,header...]
              Критерий  -  если  пакет  ТОЧНО  содержит  все указанные заголовки. Заголовки, инкапсулированные с
              помощью  заголовка  ESP,  находятся  вне области видимости. Возможные типы заголовков header могут
              быть:

       hop|hop-by-hop
              Заголовок параметров переходов.

       dst    Заголовок параметра пункта назначения.

       route  Заголовок маршрутизации.

       frag   Заголовок фрагмента.

       auth   Заголовок аутентификации.

       esp    Инкапсулирующий заголовок безопасной полезной нагрузки.

       none   Нет следующего заголовка, который соответствует 59 в "Поле  следующего  заголовка"  ('Next  Header
              field') заголовка IPv6 или любых расширений заголовка IPv6.

       prot   который  соответствует любому заголовку протокола верхнего уровня. Также допускается использование
              наименования протокола из файла /etc/protocols и числового значения.Число 255 эквивалентно prot.

   ipvs
       Критерий свойств соединения IPVS.

       [!] --ipvs
              Пакет принадлежит соединению IPVS.

       Любой из нижеследующих параметров подразумевает --ipvs (даже инверсный, т. е. когда перед ним стоит
       символ "!").

       [!] --vproto protocol
              Соответствует протоколу VIP; по номеру или названию, например "tcp".

       [!] --vaddr address[/mask]
              Соответствует адресу VIP.

       [!] --vport port
              Соответствует порту VIP; по номеру или названию, например, "http".

       --vdir {ORIGINAL|REPLY}
              Направление потока пакета.

       [!] --vmethod {GATE|IPIP|MASQ}
              Используемый метод перенаправления IPVS.

       [!] --vportctl port
              Порт VIP соединения соответствует управляющему порту, например, 21 для FTP.

   length
       Модуль критерия длительности загрузки пакета 3-го уровня  (например, пакет  4-го  уровня)   с   указанным
       значением  или диапазоном значений.

       [!] --length length[:length]

   limit
       Это модуль критерия ограничения трафика на основе накопительного фильтра токенов (т.е. 1 пакет - 1 токен,
       2  пакета  -  2  токена  и  так  далее).  Правило,  использующее  этот  критерий, проверяет, что заданное
       предельно-допустимое  количество  токенов  не  превышено.   Например,  этот  модуль  можно  использовать,
       совместно с целью LOG для ограничения размера журнала.

       xt_limit  не поддерживает инверсию, поэтому вам придется использовать -m hashlimit ! --hashlimit rate, не
       определяя, в этом случае, --hashlimit-mode.

       --limit rate[/second|/minute|/hour|/day]
              Этот параметр определяет скорость принудительного удаления токенов из фильтра. Скорость может быть
              определена в токенах за  "second" (секунду), "minute" (минуту), "hour" (час) или за "day" (сутки).
              Значение по умолчанию: 3/hour (3 токена/час).

       --limit-burst number
              Этот  параметр определяет  предельно-допустимое  количество  токенов  (пакетов)  в   накопительном
              фильтре.   Количество   токенов   в  накопительном фильтре увеличивается на единицу с каждым вновь
              прибывшем пакетом и, до тех пор, пока  не  будет  достигнуто  значение,  которое  определено  этим
              параметром.  Значение  по  умолчанию:  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. Перевод с английского А. Киселёва.

   mac
       [!] --mac-source address
              Критерий  -  соответствует  MAC-адресу  источника.  Адрес  должен  иметь вид XX:XX:XX:XX:XX:XX:XX.
              Обратите  внимание, что это имеет  смысл только для пакетов, поступающих с  устройств  Ethernet  и
              попадающих в цепочки PREROUTING, FORWARD  или INPUT.

   mark
       Модуль  критерия  поля  метки  netfilter,  связанной с пакетом (поле может быть определено с помощью цели
       MARK, смотрите ниже).

       [!] --mark value[/mask]
              Критерий - соответствует заданному значению (value) метки  без  знака  (если  определено  значение
              маски (mask), то перед сравнением, выполняется операция логическое И значения метки с маской).

   mh (Специфика IPv6)
       Дополнение  загружается,  если  определён  параметр  "--protocol ipv6-mh" или "--protocol mh". Дополнение
       поддерживает следующий параметр:

       [!] --mh-type type[:type]
              Это позволяет указать тип заголовка мобильности (MH), который может быть числом типа MH  или  быть
              одним из наименований типа MH,     выводимых командой
               ip6tables -p mh -h

   multiport
       Этот  модуль  соответствия  набору  портов  источника или портов назначения.  Можно указать до 15 портов.
       Диапазон портов (port:порт) считается равным двум портам.  Его  можно  использовать  только  совместно  с
       одним из следующих протоколов:tcp, udp, udplite, dccp и sctp.

       [!] --source-ports,--sports port[,port|,port:port]...
              Соответствует,  если  исходящим  портом является один из указанных портов.  Флаг --sports является
              удобным псевдонимом для этого  параметра.  Несколько  портов  или  диапазонов  портов  разделяются
              запятой,  а  диапазон  портов указывается с помощью двоеточия.  Таким образом, 53,1024:65535 будет
              соответствовать портам 53 и всем портам с 1024 по 65535.

       [!] --destination-ports,--dports port[,port|,port:port]...
              Критерий - если порт назначения является одним из заданных портов. Флаг --dports является  удобным
              псевдонимом для этого параметра.

       [!] --ports port[,port|,port:port]...
              Критерий - если исходящий порт или порт назначения равны одному из заданных портов.

   nfacct
       Критерий  nfacct  обеспечивает  расширенную  инфраструктуру учета для iptables.  Этот критерий необходимо
       использовать совместно с отдельной утилитой для пользовательского пространства nfacct(8)

       Единственным параметром, доступным для этого критерия, является:

       --nfacct-name name
              Этот параметр позволяет указать наименование  существующего  объекта;  данное  наименование  будет
              использоваться для учета трафика, который соответствует этому набору правил.

       Для того, чтобы использовать это дополнение, вам необходимо создать объект учета:

              nfacct add http-traffic

       Затем вы должны прикрепить его к объекту учета с помощью iptables:

              iptables -I INPUT -p tcp --sport 80 -m nfacct --nfacct-name http-traffic

              iptables -I OUTPUT -p tcp --dport 80 -m nfacct --nfacct-name http-traffic

       После этого вы можете проверить размер трафика, соответствующий этим правилам:

              nfacct get http-traffic

              { pkts = 00000000000000000156, bytes = 00000000000000151786 } = http-traffic;

       Вы можете загрузить утилиту nfacct(8) с сайта http://www.netfilter.org или, альтернативно, из репозитория
       git.netfilter.org.

   osf
       Модуль osf выполняет пассивное сканирование операционной системы. Этот модуль сравнивает некоторые данные
       (параметры Window Size, MSS и их порядок, TTL, DF и другие) из пакетов с установленным битом SYN.

       [!] --genre string
              Критерий - соответствует стилю операционной системы на основании пассивной дактилоскопии.

       --ttl level
              Дополнительные  проверки  TTL пакета, чтобы определить операционную систему. Уровень (level) может
              принимать одно из следующих значений:

              0      0 - Сравнение реального IP-адреса и  TTL  дактилоскопии.  Как  правило,  это  работает  для
                     локальных сетей.

              1      Проверить,  не  меньше ли заголовок IP дактилоскопии TTL. Работает для адресов с глобальной
                     маршрутизацией.

              2      Никогда не сравнивать TTL.

       --log level
              Регистрировать стили в dmesg, даже если они не  соответствуют  желаемому.  Уровень  регистрации  (
              level)  может принимать одно из следующих значений:

              0      Регистрировать все совпадающие или неизвестные подписи

              1      Регистрировать только первую

              2      Регистрировать все известные совпадающие подписи

       Вы можете найти что-то похожее в системном журнале:

       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

       Дактилоскопические отпечатки операционных систем  можно  загрузить  с  помощью  программы  nfnl_osf.  Для
       загрузки  дактилоскопических  отпечатков из файла используйте:

       nfnl_osf -f /usr/share/xtables/pf.os

       Чтобы удалить их снова используйте:

       nfnl_osf -f /usr/share/xtables/pf.os -d

       База данных отпечатков может быть загружена с сайта http://www.openbsd.org/cgi-bin/cvsweb/src/etc/pf.os.

   owner
       Этот  модуль  пытается  сопоставить  различные  характеристики  владельца  пакета  для локально созданных
       пакетов. Это сопоставление  допустимо только в цепочках OUTPUT  и  POSTROUTING.  Пересылаемые  пакеты  не
       имеют связанного с ними сокета. Пакеты из потоков ядра имеют сокет, но обычно не имеют владельца.

       [!] --uid-owner username

       [!] --uid-owner userid[-userid]
              Критерий - если файловая структура сокета пакета (если она есть) принадлежит данному пользователю.
              Вы также можете указать числовой UID или диапазон UID.

       [!] --gid-owner groupname

       [!] --gid-owner groupid[-groupid]
              Критерий  -  если  файловая  структура  сокета  пакета  принадлежит данной группе. Вы также можете
              указать числовой идентификатор группы GID или диапазон групповых числовых идентификаторов GID.

       --suppl-groups
              Приводит к тому, что группы, указанные с помощью --gid-owner, также проверяются  в  дополнительных
              группах процесса.

       [!] --socket-exists
              Критерий - если пакет связан с сокетом.

   physdev
       Модуль  критерия  моста  с  портами, состоящими из  устройств ввода и вывода, которые подключены к мосту.
       Этот  модуль  является  частью инфраструктуры, которая обеспечивает прозрачный мостовой сетевой фильтр IP
       (брандмауэр) и может использоваться только в версиях ядра выше версии 2.5.44.

       [!] --physdev-in name
              Название интерфейса (порта) моста, через который принимается пакет (только для пакетов, приходящих
              в цепочки INPUT, FORWARD и PREROUTING). Если название интерфейса заканчивается на  "+",  то  этому
              названию  будет  соответствовать  любой  интерфейс,  начинающийся  с данного названия . Если пакет
              пришел не через интерфейс моста, то этот пакет не  будет  соответствовать  этому  параметру,  если
              только не используется символ инверсии "!".

       [!] --physdev-out name
              Название  интерфейса  (порта)  моста, через который будет отправлен пакет (для пакетов, проходящих
              через мост в цепочки FORWARD и  POSTROUTING). Если название интерфейса заканчивается  на  "+",  то
              этому названию будет соответствовать любой интерфейс, начинающийся с данного названия .

       [!] --physdev-is-in
              Критерий - если пакет пришел через интерфейс моста.

       [!] --physdev-is-out
              Критерий - если пакет уходит через интерфейс моста.

       [!] --physdev-is-bridged
              Критерий  -  если   пакет   передается   через  мост  и, следовательно, не маршрутизируется. Может
              использоваться только в цепочках FORWARD и POSTROUTING.

   pkttype
       Модуль критерия типа пакета канального уровня.

       [!] --pkt-type {unicast|broadcast|multicast}

   policy
       Модуль критерия политики, используемой IPSec для обработки пакета.

       --dir {in|out}
              Используется  для  выбора:   соответствовать   политике,   используемой   для   декапсуляции   или
              соответствовать   политике,   которая   будет   использоваться  для  инкапсуляции.  Для  in  может
              использоваться в цепочках PREROUTING, INPUT и FORWARD chains, а для  out  может  использоваться  в
              цепочках POSTROUTING, OUTPUT и FORWARD.

       --pol {none|ipsec}
              Критерий  -  если  пакет  подлежит  обработке  по  протоколу  IPSec.  Параметр --pol none не может
              использоваться совместно с параметром --strict.

       --strict
              Выбор: следует ли соответствовать точной политике или  соответствовать,  если  какое-либо  правило
              политики соответствует данной политике.

       Для  каждого  элемента  политики,  который  должен  быть  описан,  можно  использовать один или несколько
       следующих параметров. Если действует параметр --strict, то для каждого элемента должен использоваться  по
       крайней мере один параметр.

       [!] --reqid id
              Соответствует  идентификатору запроса в правиле политики. Идентификатор запроса может быть задан с
              помощью библиотеки setkey(8), используя unique:id в качестве уровня.

       [!] --spi spi
              Критерий - если SPI из SA.

       [!] --proto {ah|esp|ipcomp}
              Критерий - если протокол инкапсуляции.

       [!] --mode {tunnel|transport}
              Критерий - если режим инкапсуляции.

       [!] --tunnel-src addr[/mask]
              Критерий - если исходящий адрес, является адресом конечной точки SA, которая работает в туннельном
              режиме. Действует только тогда, когда используется значение "tunnel", т.е. --mode tunnel.

       [!] --tunnel-dst addr[/mask]
              Критерий - если  адрес  назначения,  является  адресом  конечной  точки  SA,  которая  работает  в
              туннельном  режиме.  Действует  только  тогда,  когда  используется значение "tunnel", т.е. --mode
              tunnel.

       --next Запускает следующий элемент из спецификации политики. Может  использоваться  только  с  параметром
              --strict.

   quota
       Реализует   сетевые  квоты  путем  уменьшения счетчика байтов с каждым пакетом. Квота не превышена до тех
       пор, пока счетчик байтов не достигнет  нулевого  значения.  Поведение  меняется  на  противоположное  при
       инверсии (т.е. квота превышена до тех пор, пока счетчик байтов не достигнет нуля).

       [!] --quota bytes
              Квота (quota) в байтах.

   rateest
       Оценщик  скорости  может  сопоставлять  оцениваемые  скорости,  собранные  целью RATEEST (смотрите ниже в
       разделе ЦЕЛИ ДОПОЛНИТЕЛЬНЫЕ). Поддерживаются следующие критерии: критерий абсолютных   значений  bps/pps;
       критерий сравнения двух оценок скорости и критерий разности между двумя оценками скорости.

       Для лучшего понимания доступных параметров ниже приведены все возможные комбинации:

       Абсолютное значение:

       •   rateest operator rateest-bpsrateest operator rateest-pps

       Абсолютное значение + разность:

       •   (rateest minus rateest-bps1) operator rateest-bps2

       •   (rateest minus rateest-pps1) operator rateest-pps2

       Относительное значение:

       •   rateest1 operator rateest2 rateest-bps(without rate!)

       •   rateest1 operator rateest2 rateest-pps(without rate!)

       Относительное значение + разность:

       •   (rateest1 minus rateest-bps1) operator (rateest2 minus rateest-bps2)

       •   (rateest1 minus rateest-pps1) operator (rateest2 minus rateest-pps2)

       --rateest-delta
           Для  каждого  оценщика  (в абсолютном или относительном режимах) рассчитать разность между значением,
           определенным оценщиком и  значением статистическим, выбранным  с  помощью  параметров  BPS/PPS.  Если
           скорость  потока  превышает  значение  BPS/PPS,  то вместо отрицательного значения будет использовано
           значение 0. Другими словами, используется значение "max(0, rateest#_rate - rateest#_bps)".

       [!] --rateest-lt
           Критерий - если скорость меньше заданных ставка/оценка.

       [!] --rateest-gt
           Критерий - если скорость больше заданных ставка/оценка.

       [!] --rateest-eq
           Критерий - если скорость равна заданным ставка/оценка.

       В так называемом "абсолютном режиме" используется только один оценщик и выполняется сравнение с  заданным
       значением; в "относительном режиме" выполняется сравнение данных от двух оценщиков.

       --rateest name
              Наименование единственного оценщика для абсолютного режима.

       --rateest1 name

       --rateest2 name
              Наименования двух оценщиков для относительного режима.

       --rateest-bps [value]

       --rateest-pps [value]

       --rateest-bps1 [value]

       --rateest-bps2 [value]

       --rateest-pps1 [value]

       --rateest-pps2 [value]
              Сравнить  с  выбранным  значением  оценочные значения по байтам или пакетам в секунду. Смотрите, в
              приведенном списке выше, какой параметр следует  использовать  в  том  или  другом  случае.  Могут
              использоваться   следующие   единицы   измерения:  bit,  [kmgt]bit,  [KMGT]ibit,  Bps,  [KMGT]Bps,
              [KMGT]iBps.

       Пример: Этот пример можно использовать для маршрутизации  исходящих  соединений  для  передачи  данных  с
       сервера FTP по двум линиям в зависимости от доступной полосы пропускания на момент запуска соединения для
       передачи данных:

       # Оценка исходящего трафика:

       iptables  -t  mangle  -A  POSTROUTING  -o  eth0  -j  RATEEST --rateest-name eth0 --rateest-interval 250ms
       --rateest-ewma 0.5s

       iptables -t mangle -A POSTROUTING  -o  ppp0  -j  RATEEST  --rateest-name  ppp0  --rateest-interval  250ms
       --rateest-ewma 0.5s

       # Метка на основе доступной полосы пропускания

       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

       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

       iptables -t mangle -A balance -j CONNMARK --restore-mark

   realm (Специфика IPv4)
       Критерий   области   маршрутизации.   Области  маршрутизации  используются  в  комплексах  маршрутизации,
       использующих протоколы динамической маршрутизации, например, BGP.

       [!] --realm value[/mask]
              Критерий заданному номеру области (и, возможно, маске). Если это не число, то значением может быть
              именованная область из /etc/iproute2/rt_realms (маска в  этом  случае  использоваться  не  может).
              Значение  и маска представляют собой четырех байтовые целые числа без знака и могут быть указаны в
              десятичном, шестнадцатеричном (с префиксом "0x") или восьмеричном формате (если  указан  начальный
              ноль).

   recent
       Позволяет  вам  динамически  создавать  список  IP-адресов,  а  затем  применять к этому списку различные
       критерии.

       Например,  вы  можете  создать  список  злоумышленников,  пытающихся  подключиться  к  порту  139  вашего
       брандмауэра, а затем отклонять все эти пакеты, не просматривая их.

       Параметры --set, --rcheck, --update и --remove являются взаимоисключающими.

       --name name
              Параметр  определяет  наименование  списка  IP-адресов.  Если  наименование  не определено, то, по
              умолчанию, будет использоваться наименование DEFAULT.

       [!] --set
              Параметр добавляет адрес источника пакета в список. Если адрес источника уже  есть  в  списке,  то
              будет  обновлена  существующая  запись.  Этот параметр всегда будет возвращать "success" (успешно)
              или, когда используется символ инверсии !, "failure" (ошибка).

       --rsource
              Критерий  адреса источника - сопоставить/сохранить адрес источника каждого пакета в таблице списка
              новых сообщений. Это значение по умолчанию.

       --rdest
              Критерий адреса назначения - сопоставить/сохранить  адрес  назначения  каждого  пакета  в  таблице
              списка новых сообщений.

       --mask netmask
              Параметр определяет маску сети, которая будет применена к данному списку.

       [!] --rcheck
              Проверить, находится ли адрес источника пакета в списке.

       [!] --update
              Тоже,  что  и   --rcheck,   за  исключением  того, что будет обновлена временная метка "последнего
              просмотра", если адрес источника пакета есть в списке.

       [!] --remove
              Проверить,  есть  ли  в  данный момент в списке адрес источника пакета и, если есть, то этот адрес
              будет удален из списка, а правило вернет значение "true" (истинно). Если адрес не найден, то будет
              возвращено значение "false" (ложно).

       --seconds seconds
              Этот параметр должен использоваться совместно с одним из параметров --rcheck  или  --update.  Этот
              параметр  сузит  область  поиска  совпадения  таким образом, чтобы поиск  происходил только тогда,
              когда адрес есть в списке и был обнаружен в течение последнего заданного количества секунд.

       --reap Этот параметр можно использовать только совместно с параметром --seconds. При использовании  этого
              параметра будут удалены из списка записи, которые старше последнего заданного количества секунд.

       --hitcount hits
              Этот  параметр  необходимо  использовать в сочетании с одним из вариантов: --r check или --update.
              При использовании этого параметра совпадение будет ограничено, и оно будет  происходить  только  в
              том  случае,  если  адрес  есть в списке, а полученные пакеты больше или равны заданному значению.
              Этот параметр можно использовать вместе с параметром  --seconds  для  создания  еще  более  узкого
              соответствия, требующего определенного количества совпадений за определенный промежуток времени.

       --rttl Этот  параметр  может использоваться только совместно с одним из параметров --rcheck или --update.
              Этот параметр сузит область  поиска проверки соответствия таким образом, чтобы   она   происходила
              только  тогда,  когда  адрес  есть в списке, а TTL текущего пакета совпадает с TTL пакета, который
              попал в правило --set. Этот параметр может использоваться, если у вас возникают  проблемы  с  тем,
              что  злоумышленники  подделывают   свой   исходящий  адрес,   чтобы  связаться  с  вами через этот
              модуль, блокируя тем самым доступ к вашему сайту  другим  пользователям,  путем  посылки  на  него
              поддельных пакетов.

       Примеры:

              iptables -A FORWARD -m recent --name badguy --rcheck --seconds 60 -j DROP

              iptables -A FORWARD -p tcp -i eth0 --dport 139 -m recent --name badguy --set -j DROP

       /proc/net/xt_recent/* - текущие списки адресов и информация о каждой записи в каждом списке.

       Каждый  файл  в  /proc/net/xt_recent/  можно  прочитать,  чтобы просмотреть текущий список или  записать,
       выполнив две нижеследующие  команды  для изменения списка:

       echo +addr >/proc/net/xt_recent/DEFAULT
              addr - добавить addr в список DEFAULT

       echo -addr >/proc/net/xt_recent/DEFAULT
              удалить addr из списка DEFAULT

       echo / >/proc/net/xt_recent/DEFAULT
              очистить список DEFAULT (удалить все записи).

       Этот модуль принимает параметры, указанные по умолчанию:

       ip_list_tot=100
              Количество запоминаемых адресов в каждой таблице.

       ip_pkt_list_tot=0
              Количество пакетов на запомненный адрес. Этот параметр устарел  с  версии  ядра  3.19,  в  которой
              начали вычислять размер таблицы на основе заданного параметра --hitcount.

       ip_list_hash_size=0
              Размер  хэш-таблицы;  0  означает  вычисление  на основе ip_list_tot путем округления до следующей
              степени двойки (если значение ip_list_tot по умолчанию равно 100, то значение ip_list_hash_size по
              умолчанию будет равно 128).

       ip_list_perms=0644
              Права доступа для файлов /proc/net/xt_recent/*.

       ip_list_uid=0
              Числовой идентификатор владельца файлов /proc/net/xt_recent/*.

       ip_list_gid=0
              Числовой идентификатор группы владельца файлов /proc/net/xt_recent/*.

   rpfilter
       Модуль критерия проверки обратного  пути  пакета - если ответ на  пакет  будет  отправлен  через  тот  же
       интерфейс,  по  которому  он поступил, то пакет соответствует данному критерию. Обратите внимание, что, в
       отличие от встроенного в ядро rp_filter,  пакеты,   защищенные   IPSec,  не   обрабатываются  специальным
       образом.   Если  хотите,  то  можете  объединить  этот критерий с критерием политики. Кроме того, пакеты,
       поступающие через интерфейс внутренней петли, всегда разрешены. Этот критерий может использоваться только
       в цепочке PREROUTING таблицы raw или mangle.

       --loose
              Используется для указания того, что проверка обратного пути должна соответствовать критерию,  даже
              если  выбранное  устройство  вывода  не является ожидаемым.

       --validmark
              Использовать также значение nfmark пакетов при выполнении поиска маршрута обратного пути.

       --accept-local
              Пакетам, поступающим из рабочей сети, разрешено иметь адрес источника,  который  является  адресом
              локального компьютера.

       --invert
              Параметр  изменяет смысл критерия  соответствия - соответствуют критерию пакеты, которые не прошли
              проверки обратного пути.

       Пример регистрации и удаления пакетов, не прошедших проверку обратного пути:

       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

   rt (Специфика IPv6)
       Критерий маршрутизации IPv6 по заголовку.

       [!] --rt-type type
              Критерий типа (числовой).

       [!] --rt-segsleft num[:num]
              Критерий поля "сегменты слева" (диапазон).

       [!] --rt-len length
              Критерий длины данного заголовка.

       --rt-0-res
              Критерий излишнего зарезервированного поля (type=0).

       --rt-0-addrs addr[,addr...]
              Критерий - type=0 список адресов.

       --rt-0-not-strict
              Список адресов type=0 не является точным списком.

   sctp
       Модуль критерия заголовков протокола управления потоковой передачей.

       [!] --source-port,--sport port[:port]

       [!] --destination-port,--dport port[:port]

       [!] --chunk-types {all|any|only} chunktype[:flags] [...]
              Буква флага в верхнем регистре означает "соответствует" если флаг  установлен,  а  буква  флага  в
              нижнем регистре означает "соответствует" если флаг сброшен.

              Типы критериев:

       all    Критерий - если присутствуют все заданные типы блоков и флаги критериев соответствия.

       any    Критерий - если присутствует какой-либо из данных типов блоков с данными флагами.

       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

              доступные флаги для блоков
              DATA I U B E i u b e
              I_DATA I U B E i u b e
              ABORT T t
              SHUTDOWN_COMPLETE T t

              (нижний регистр означает, что флаг должен  быть  в  состоянии  "off"  (сброшен),  верхний  регистр
              означает, что флаг должен быть в состоянии "on" (установлен)).

       Примеры:

       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

   set
       Модуль критериев наборов IP-адресов; наборы могут быть определены с помощью утилиты ipset(8).

       [!] --match-set setname flag[,flag]...
              Здесь флаги - это разделенный запятыми список спецификаций src и/или dst, и их не может быть более
              шести. Следовательно команда

               iptables -A FORWARD -m set --match-set test src,dst

              определяет,  что  критерию  соответствуют  пакеты,  если (когда задан тип - ipportmap) в указанном
              наборе можно найти пару адресов источника и порта назначения. Если заданный тип указанного  набора
              -  одномерный  (например,  ipmap),  то  критерию будут соответствовать пакеты, у которых исходящий
              адрес может быть найден в указанном наборе.

       --return-nomatch
              Если задан параметр --return-nomatch и тип набора  поддерживает  флаг  nomatch,  то  сопоставление
              выполняется  в  обратном  порядке:  совпадение  с  элементом,  помеченным  как nomatch, возвращает
              значение true, в то время как совпадение с простым элементом возвращает значение false.

       ! --update-counters
              Если флажок --update-counters  не  установлен,  то  счетчики  пакетов  и  байтов  соответствующего
              элемента в наборе обновляться не будут. По умолчанию счетчики пакетов и байтов обновляются.

       ! --update-subcounters
              Если  флажок  --update-subcounters  инвертирован,  то  счетчики  пакетов и байтов соответствующего
              элемента в наборе элементов типа списка обновляться не будут.  По  умолчанию  счетчики  пакетов  и
              байтов обновляются.

       [!] --packets-eq value
              Если пакет соответствует элементу в наборе, то выполняется сопоставление только в том случае, если
              счетчик пакетов этого элемента также соответствует заданному значению.

       --packets-lt value
              Если пакету соответствует элемент в наборе, то выполняется сопоставление только в том случае, если
              счетчик пакетов этого элемента также меньше заданного значения.

       --packets-gt value
              Если пакету соответствует элемент в наборе, то выполняется сопоставление только в том случае, если
              счетчик пакетов этого элемента также превышает заданное значение.

       [!] --bytes-eq value
              Если пакету соответствует элемент в наборе, то выполняется сопоставление только в том случае, если
              счетчик байтов элемента также соответствует заданному значению.

       --bytes-lt value
              Если пакет соответствует элементу в наборе, то выполняется сопоставление только в том случае, если
              счетчик байтов этого элемента также меньше заданного значения.

       --bytes-gt value
              Если пакету соответствует элемент в наборе, то выполняется сопоставление только в том случае, если
              счетчик байт этого элемента также превышает заданное значение.

       Параметры  и  флаги, связанные со счетчиками пакетов и байтов, игнорируются, если набор был определен без
       поддержки счетчика.

       Параметр --match-set может быть заменен на --set если это не противоречит возможностям других дополнений.

       Использование -m set требует, чтобы была обеспечена поддержка ядром ipset.  Для  стандартных  ядер  такая
       поддержка имеет место в ядрах начиная с версии Linux 2.6.39.

   socket
       Критерий  открытого  сокета  TCP/UDP;  сокет  можно  найти, выполнив поиск сокета в пакете. Соответствует
       критерию, если существует установленный или  ненулевой  прослушивающий  сокет  (возможно,  с  нелокальным
       адресом).  Поиск  выполняется  с  использованием  кортежа  TCP/UDP пакетов packet или исходного заголовка
       TCP/UDP embedded в пакете ошибок ICMP/ICPMv6.

       --transparent
              Игнорировать нетранспарентные сокеты.

       --nowildcard
              Не игнорировать сокеты, привязанные к "любому" адресу. Критерий соответствия сокетов по  умолчанию
              не  будет  принимать приёмники с нулевой привязкой, поскольку в этом случае локальные службы могли
              бы перехватывать трафик, который в противном случае был  бы  перенаправлен.  Таким  образом,  этот
              параметр  влияет  на  безопасность  при  использовании  для критерия соответствия трафика, который
              направляется  для  перенаправления  таких  пакетов  на  локальный  компьютер  с  помощью  политики
              маршрутизации.   При   использовании   критерия   сокетов   для  реализации  полностью  прозрачных
              прокси-серверов,  привязанных  к  нелокальным   адресам,   рекомендуется   использовать   параметр
              --transparent.

       Пример (при условии, что пакеты с меткой 1 доставляются локально):

              -t mangle -A PREROUTING -m socket --transparent -j MARK --set-mark 1

       --restore-skmark
              Установить   метку   пакета   как   метку  критерия  сокета.  Можно  комбинировать  с  параметрами
              --transparent  и  --nowildcard,   чтобы  ограничить  критерий  сокетов  при  восстановлении  метки
              пакета.

       Пример:  Приложение  открывает  2  транспарентных  сокета (IP_TRANSPARENT) и устанавливает на них метку с
       помощью параметра сокета SO_MARK. Мы можем фильтровать совпадающие пакеты:

              -t mangle -I PREROUTING -m socket --transparent --restore-skmark -j action

              -t mangle -A action -m mark --mark 10 -j action2

              -t mangle -A action -m mark --mark 11 -j action3

   state
       Дополнение "state" является частью модуля "conntrack". Это дополнение предоставляет  доступ  к  состоянию
       отслеживания соединения данного пакета.

       [!] --state state
              Здесь  state  - это разделенный запятыми список состояний соединения, которые использует критерий.
              Распознаются только  подмножества  состояний,  понятых  "conntrack":  INVALID,  ESTABLISHED,  NEW,
              RELATED или UNTRACKED. Их описание приведено в пункте "conntrack" этой страницы руководства.

   statistic
       Модуль  критерия  пакетов на основе некоторого статистического условия. Модуль поддерживает два различных
       режима, устанавливаемых с помощью параметра --mode.

       Поддерживаемые параметры:

       --mode mode
              Устанавливает режим критерия на основе правила соответствия. Поддерживаются два режима:  random  и
              nth.

       [!] --probability p
              Устанавливает  вероятность  случайного  совпадения  пакетов;  действует  только  в  режиме random.
              Значение вероятности p должно быть в пределах  0,0  и  1,0.  Поддерживаемый  инкремент  составляет
              1/2147483648.

       [!] --every n
              Сопоставить  один  пакет  с  каждым  n-м пакетом. Это работает только в режиме nth (смотрите также
              параметр --packet).

       --packet p
              Установить начальное значение счетчика (0 <= p <= n-1, значение по умолчанию 0) для режима nth.

   string
       Этот модуль сопоставляет заданную строку с помощью некоторой  стратегии  сопоставления  с  образцом.  Для
       этого требуется ядро Linux >= 2.6.14.

       --algo {bm|kmp}
              Выбор шаблона стратегии соответствия: bm = Boyer-Moore, kmp = Knuth-Pratt-Morris.

       --from offset
              Задает  смещение,  с которого модуль начнет поиск любого соответствия. Если значение не задано, то
              значение по умолчанию равно 0.

       --to offset
              Установка смещения, до которого должно выполняться сканирование. То есть байт offset (отсчет от 0)
              является последним сканированным байтом и максимальной позицией последнего символа pattern.   Если
              значение не задано, то по умолчанию используется размер пакета.

       [!] --string pattern
              Задаёт шаблон соответствия.

       [!] --hex-string pattern
              Задаёт шаблон соответствия в шестнадцатеричной системе счисления.

       --icase
              При поиске игнорировать регистр.

       Примеры:

              # Этот шаблон можно использовать для простых текстовых символов:
              iptables -A INPUT -p tcp --dport 80 -m string --algo bm --string 'GET /index.html' -j LOG

              # Этот шаблон шестнадцатеричной строки можно использовать для непечатаемых символов, например, |0D
              0A| или |0D0A|:
              iptables   -p   udp   --dport   53   -m   string   --algo   bm  --from  40  --to  57  --hex-string
              '|03|www|09|netfilter|03|org|00|'

       Примечание: Поскольку алгоритм Boyer-Moore (BM) выполняет поиск совпадений справа налево,  а  ядро  может
       хранить  пакет  в  нескольких  несмежных   блоках,  то  возможно,  когда  элементы  совпадения могут быть
       распределены по нескольким блокам, что данный алгоритм совпадения не обнаружит.

       Если  вы  хотите  быть  уверенным,  чтобы такого  никогда  не  могло  произойти,  то  используйте  вместо
       данного  алгоритма  алгоритм  Кнута-Пратта-Морриса  (KMP).   Совет:  при  выборе   алгоритма поиска строк
       исходите из того, чего вы хотите.

       Например, если вы используете модуль для фильтрации, NIDS или что-то похожее и для вас, в первую очередь,
       важна  безопасность,  то  выбирайте  KMP.  С  другой  стороны,  если  вам,  в   первую   очередь,   важна
       производительность,  например,  вы отбираете пакеты с целью обеспечения качества обслуживания (QoS) и вас
       не беспокоит пропуск возможных соответствий  из-за  хранения  пакета  в  нескольких  несмежных  блоках,то
       выберите BM.

   tcp
       Это  дополнение  можно  использовать,  если  указан параметр "--protocol tcp". Оно поддерживает следующие
       параметры:

       [!] --source-port,--sport port[:port]
              [!] --source-port,--sport port[:port] - Определяет исходящий порт или диапазон  исходящих  портов.
              Может  использоваться либо наименование службы, либо  номер  порта.  Также  может  быть  определён
              диапазон портов с помощью формата first:last.  Если начальный порт не определён, то предполагается
              "0"; если последний порт не определён, то предполагается "65535". Флаг  --sport  является  удобным
              псевдонимом для этого параметра.

       [!] --destination-port,--dport port[:port]
              [!]  --destination-port,--dport  port[:port]  -  Определяет  порт  назначения или диапазона портов
              назначения.  Флаг --dport это удобный псевдоним для этого параметра.

       [!] --tcp-flags mask comp
              Критерий - соответствуют, когда флаги TCP пакета совпадают с заданными флагами.  Первый  аргумент,
              mask - это, разделенный запятыми список флагов, которые должны  быть проверены, а второй аргумент,
              comp  -  это  разделенный  запятыми  список  флагов, которые должны быть заданы. Флаги могут иметь
              значения: SYN ACK FIN RST URG PSH ALL NONE. Тогда команда
               iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN
              будет проверять соответствие только пакетов с установленным флагом SYN так как флаги  ACK,  FIN  и
              RST не заданы.

       [!] --syn
              Критерий - соответствуют пакеты только с установленным флагом SYN и сброшенными флагами ACK, RST и
              FIN.   Такие  пакеты  используются  для запроса инициализации соединения TCP; например, блокировка
              таких пакетов,  поступающих  в  интерфейс,  предотвратит  входящие  TCP-соединения,  но  исходящие
              TCP-соединения  не будут затронуты.  Это эквивалентно --tcp-flags SYN,RST,ACK,FIN SYN.  Если флагу
              "--syn", предшествует символ "!", то смысл параметра инвертируется.

       [!] --tcp-option number
              Критерий - соответствует, если задан параметр TCP.

   tcpmss
       Критерий соответствия полю MSS (максимальный размер сегмента) заголовка TCP. Вы можете  использовать  это
       только  для  пакетов  SYN  TCP или SYN/ACK, поскольку MSS согласовывается только  при создании соединения
       TCP.

       [!] --mss value[:value]
              Критерий соответствия заданному значению или диапазону TCP MSS. Если указан  диапазон,  то  второе
              значение value должно быть больше или равно первому значению value.

   time
       Критерий  -  соответствует,  если  время/дата (time/date) прибытия  пакета находится в пределах заданного
       диапазона. Все параметры необязательны, но при их указании используются логическое И.  По  умолчанию  все
       значения времени интерпретируются как UTC.

       --datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]

       --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
              Соответствует  только  в течение заданного времени, которое должно быть представлено в формате ISO
              8601 "T". Возможный диапазон времени: с 1970-01-01T00:00:00 по 2038-01-19T04:17:07.

              Если не указаны параметры --datestart или --datestop, то, по умолчанию, будут определены  значения
              1970-01-01 и 2038-01-19, соответственно.

       --timestart hh:mm[:ss]

       --timestop hh:mm[:ss]
              Критерий - соответствует только в течение заданного суточного времени. Допустимый диапазон времени
              -  с  00:00:00  по  23:59:59.  Допускаются  указывает  в  начале нули (например, "06:03"), которые
              правильно интерпретируются в десятичной системе счисления.

       [!] --monthdays day[,day...]
              Критерий - соответствует только в указанные числа месяца. Допустимые значения от 1 до 31. Обратите
              внимание,  что  указание числа 31,  конечно не  будет соответствовать месяцам, в которых нет  31-х
              суток; то же самое относится к 28-му или 29-му числам февраля.

       [!] --weekdays day[,day...]
              Критерий - соответствует только  в  указанные дни недели. Допустимые значения: Mon, Tue, Wed, Thu,
              Fri,  Sat,  Sun  или  числа от 1 до 7, соответственно. Вы также можете использовать двухсимвольные
              сокращения (Mo, Tu и т.д.).

       --contiguous
              Если значение --timestop меньше значения --timestart,  интерпретировать  его  как  один  временной
              промежуток,  а  не  как отдельные интервалы. Смотрите ПРИМЕРЫ ниже.

       --kerneltz
              При проверке соответствия пакет требованиям по времени использовать вместо UTC часовой пояс ядра.

       О  часовых  поясах  ядра:  Linux  всегда сохраняет  системное  время  в UTC. При загрузке системное время
       инициализируется из указанного источника времени. Там, где этот источник времени не содержит информации о
       часовом  поясе  (x86  CMOS RTC) будет использоваться  UTC.  Однако,  если источник времени не находится в
       UTC, то пользовательское пространство должно предоставить ядру правильное системное время и часовой пояс,
       как только это пространство получит данную информацию.

       Местное время - это функция поверх системного времени (не зависящего от часового пояса).  Каждый  процесс
       имеет свое собственное представление о местном времени, которое задано с помощью переменной окружения TZ.
       Ядро  также  имеет  свою  собственную  переменную   смещения  часового пояса. Переменная окружающей среды
       пользовательского пространства TZ определяет, как отображается системное время на основе  UTC,  например,
       когда  вы  запускаете  date(1)  или  что  вы  видите  на  своих  настольных  часах.  Строка TZ может быть
       преобразована в разные смещения в разные даты, что  позволяет автоматически переключаться  во  времени  в
       пользовательском  пространстве  при  изменении летнего  времени.  Переменная смещения часового пояса ядра
       используется, когда требуется преобразовать данные из источников, отличных от  UTC,  таких  как  файловые
       системы FAT, в UTC (поскольку последнее используется остальной частью системы).

       Проблема  с  часовым  поясом  ядра заключается в том, что дистрибутивы Linux могут игнорировать установку
       часового пояса ядра и вместо этого устанавливать только системное время. Даже если конкретный дистрибутив
       устанавливает часовой пояс при загрузке, он обычно не поддерживает  смещение  часового  пояса  ядра,  что
       является  актуальными  изменениями  в  летнее  время.   Демон  ntpd не будет влиять на часовой пояс ядра,
       поэтому его запуск не решит проблему. Таким образом, вы можете  столкнуться  с  часовым  поясом,  который
       всегда  равен +0000, или с часовым поясом, который не соответствует половине времени года. Таким образом,
       использование using --kerneltz настоятельно не рекомендуется.

       ПРИМЕРЫ. Для критериев выходных дней, используйте:

              -m time --weekdays Sa,Su

       Или, чтобы соответствовать (один раз) национальному празднику, используйте:

              -m time --datestart 2007-12-24 --datestop 2007-12-27

       Поскольку  время  останова  на самом деле включено, вам потребуется следующее время останова, которое  не
       должно совпадать с первой секундой новых суток:

              -m time --datestart 2007-01-01T17:00 --datestop 2007-01-01T23:59:59

       На время обеденного перерыва:

              -m time --timestart 12:30 --timestop 13:30

       Четвертая пятница месяца:

              -m time --weekdays Fr --monthdays 22,23,24,25,26,27,28

       Обратите   внимание,   что  при этом используется определенное свойство чисел месяцев. Невозможно указать
       "четвертый четверг или четвертая пятница" месяца в одном правиле. Однако это возможно  если  использовать
       несколько правил.

       Соответствие по дням может привести не к тому, что вы, возможно, хотите. Например,

              -m   time  --weekdays  Mo  --timestart 23:00 --timestop 01:00 будет соответствовать понедельнику с
              00:00 часов до 01:00 часа ночи, а затем снова в течение еще одного часа, начиная  с  23:00  часов.
              Если  это  нежелательно,  например,  если  вы  хотите проверять "соответстветствие  в течение двух
              часов, начиная с 23:00 часов по понедельникам", то вам  необходимо  использовать  ещё  и  параметр
              --contiguous.

   tos
       Модуль   критерия  8-битного  поля  типа  службы в заголовке IPv4 (т. е. включает биты "приоритета") или,
       также, 8-битного поля приоритета в заголовке IPv6.

       [!] --tos value[/mask]
              Критерий - соответствие пакетов  заданному  значению  метки  TOS.  Если  задана  маска,  то  перед
              сравнением, вычисляется логическое И маски  с меткой TOS.

       [!] --tos symbol
              Вы можете указать символическое имя при использовании критерия tos для IPv4. Список поддерживаемых
              символических  имен  можно  получить, вызвав iptables с помощью команды -m tos -h. Примечание: Это
              подразумевает маску 0x3F, то есть все биты, кроме ECN.

   ttl (Специфика IPv4)
       Модуль критерия поля времени жизни (TTL - time to live) в заголовке IP.

       [!] --ttl-eq ttl
              Критерий - соответствует, если TTL равно заданному значению TTL.

       --ttl-gt ttl
              Критерий - соответствует, если TTL больше заданного значения TTL.

       --ttl-lt ttl
              Критерий - соответствует, если TTL меньше заданного значения TTL.

   u32
       Критерий соответствия данных, которые нужно извлечь из пакета - если они есть и  если  они  удовлетворяют
       заданным  значениям  (размер данных - до 4 байт). Спецификация того, что нужно извлечь достаточно общая -
       осуществляется поиск данных с заданными смещениями в заголовках tcp или в других загрузках.

       [!] --u32 tests
              Аргумент "tests" является программой на небольшом языке, который описан ниже.

              tests := location "=" value | tests "&&" location "=" value

              value := range | value "," range

              range := number | number ":" number

       Одно число (number), n, интерпретируется так же, как n:n, а n:m интерпретируется как диапазон чисел,  где
       >=n и <=m.

           location := number | location operator number

           operator := "&" | "<<" | ">>" | "@"

       Операторы  &,  <<,  >>  и &&  обозначают то же самое, что и в языке C. Оператор  = на самом деле является
       оператором членства в наборе, а синтаксис "value" описывает набор. Оператор "@" - это то,  что  позволяет
       перейти к следующему заголовку и описано ниже.

       В настоящее время существуют некоторые ограничения при реализации размер тестов:

           *  не более 10  в "=" (и "&&"s) в аргументе (argument) u32;

           *  не более 10 диапазонов (и 9 запятых) в value (значении);

           *  не более 10 чисел (и 9 операторов) на каждое местоположение (location).

       Чтобы понять смысл местоположения, представьте себе следующую машину, которая интерпретирует его. Имеется
       три регистра:

              A - относится к типу char * изначально - адрес IP заголовка.

              B и C - беззнаковые 32-битные целые числа, изначально - нулевые.

       Команды:

       number B = number;

              C = (*(A+B)<<24) + (*(A+B+1)<<16) + (*(A+B+2)<<8) + *(A+B+3)

       &number
              C = C & number

       << number
              C = C << number

       >> number
              C = C >> number

       @number
              A = A + C; затем выполните команду "number":

       Любой  доступ  к  памяти  вне  [skb->data,skb->end]  приводит  к  ошибке соответствия. В противном случае
       результатом вычисления будет C.

       Пробелы в тестах разрешены, но не обязательны. Однако символы, которые  там  встречаются,  скорее  всего,
       из-за оболочки, потребуется заключить в кавычки, поэтому рекомендуется заключать аргументы в кавычки.

       Например:

              Критерий - если пакеты IP имеют общую длину >= 256.

              Заголовок IP содержит поле общей длиной 2–3 байта.

              --u32 "0 & 0xFFFF = 0x100:0xFFFF"

              прочитать байты 0–3

              логическое  И  с  значением 0xFFFF (это дает байты 2– 3) и проверяет, находится ли это в диапазоне
              [0x100:0xFFFF]

       Пример (более реалистичный и, поэтому, более сложный):

              Критерий - если пакеты ICMP имеют тип 0.

              Сначала проверяем, что этот пакет - пакет ICMP; true (истина), если  байт 9 (протокол) = 1

              --u32 "6 & 0xFF = 1 && ...

              считываем байты 6-9 и используем & (логическое И), чтобы отбросить байты 6-8 и сравнить  результат
              с  1.  Затем проверяем, что это не фрагмент (если это фрагмент, то он может быть частью пакета, но
              мы не всегда можем знать этого наверняка). Примечание: Эта проверка  обычно  необходима,  если  вы
              хотите  сопоставить  что-либо за пределами IP-заголовка. Если это полный пакет, то последние 6 бит
              байта 6 и весь байт 7 равны 0. Альтернативно,  вы  можете  разрешить  первые  фрагменты,  проверив
              только последние 5 бит байта 6.

              ... 4 & 0x3FFF = 0 && ...

              Последняя  проверка:  Первый  байт  после заголовка IP (это - тип) равен 0. Именно здесь мы должны
              использовать оператор "@". Длина IP-заголовка (IHL) в 32-битных словах хранится в правой  половине
              байта 0 заголовка IP.

              ... 0 >> 22 & 0x3C @ 0 >> 24 = 0"

              Первые  0  означают считанные байты 0– 3, >>22 означает сдвиг этих 22 бит вправо. Сдвиг на 24 бита
              даст первый байт, так что всего 22 бита - это в четыре раза больше, плюс еще  несколько  бит.  &3C
              затем  удаляются два дополнительных бита справа и первые четыре бита первого байта. Например, если
              IHL=5, то длина IP-заголовка составляет 20 (4 x 5) байт. В  этом  случае  байты  0–1  являются  (в
              двоичном  формате)  xxxx0101  yyzzzzzz, >>22 дают 10-битное значение xxxx0101yy, а &3C - 010100. @
              означает использовать это число в качестве нового смещения в  пакете  и  считывать  четыре  байта,
              начиная  с  него.  Это первые 4 байта полезной нагрузки ICMP, из которых байт 0 соответствует типу
              ICMP. Поэтому мы просто сдвигаем значение 24 вправо, чтобы выбросить все, кроме  первого  байта  и
              сравниваем результат с 0.

       Например:

              Пример: Загрузка байтов полезной загрузки TCP 8-12 (любые байты из 1, 2, 5 или 8).

              Сначала проверяем, что пакет является пакетом TCP (аналогично ICMP):

              --u32 "6 & 0xFF = 6 && ...

              Затем проверяем, что это не фрагмент (как в примере выше):

              ... 0 >> 22 & 0x3C @ 12 >> 26 & 0x3C @ 8 = 1,2,5,8"

              Здесь  оператор  0>>22&3C,  как  указано  выше, вычисляет количество байт в заголовке IP. Оператор
              @делает это новым смещением в пакете, которое является началом заголовка TCP. Длина заголовка  TCP
              (опять  же  в  32-битных  словах) равна левой половине байта 12 заголовка TCP.  Оператор 12>>26&3C
              вычисляет длину в байтах (аналогично предыдущему  заголовку  IP).  Оператор  "@"делает  это  новым
              смещением,  которое  является  началом  полезной  загрузки  TCP.  Наконец,  8 считывает байты 8–12
              полезной загрузки, а оператор = проверяет, что результат является одним из 1, 2, 5 или 8.

   udp
       Это дополнение можно использовать, если указан параметр  "--protocol  udp".  Оно  поддерживает  следующие
       параметры:

       [!] --source-port,--sport port[:port]
              Определяет  исходящий  порт  или  диапазона  исходящих портов.  Дополнительные сведения смотрите в
              описании параметра --source-port  дополнения TCP.

       [!] --destination-port,--dport port[:port]
              Определяет порт назначения или диапазона портов назначения.  Дополнительные  сведения  смотрите  в
              описании параметра --destination-port дополнения TCP.

ЦЕЛИ ДОПОЛНИТЕЛЬНЫЕ

       В стандартном дистрибутиве  iptables поддерживаются нижеследующие дополнительные цели.

   AUDIT
       Настоящая цель создает записи аудита для пакетов, попадающих под действие цели. Цель может использоваться
       для записи принятых, сброшенных или отклоненных пакетов. Дополнительные сведения смотрите в auditd(8).

       --type {accept|drop|reject}
              Определяет  тип  аудиторской записи. Начиная с версии linux-4.12, этот параметр больше  не  влияет
              на   создаваемые   сообщения   аудита.   Он  по-прежнему  принимается  iptables,  по  соображениям
              совместимости, но игнорируется.

       Например:

              iptables -N AUDIT_DROP

              iptables -A AUDIT_DROP -j AUDIT

              iptables -A AUDIT_DROP -j DROP

   CHECKSUM
       Настоящая цель селективно обрабатывает сломанные или устаревшие приложения. Её  можно использовать только
       в таблице mangle.

       --checksum-fill
              Вычислить   и   записать контрольную  сумму в пакет, в котором отсутствует контрольная сумма.  Это
              особенно полезно, если вам нужно применить устаревшие приложения, такие как dhcp-клиенты,  которые
              плохо  работают  с  выгрузкой контрольной  суммы,  но  не  отключают выгрузку контрольной суммы на
              вашем устройстве.

   CLASSIFY
       Настоящий модуль позволяет установить skb-> значение  приоритета  и  таким  образом  определить  пакет  в
       соответствующий класс CBQ.

       --set-class major:minor
              Устанавливает   значения   классов   major   и   minor.   Значения   всегда  интерпретируются  как
              шестнадцатеричные числа, даже если префикс 0x не задан.

   CLUSTERIP (Специфика IPv4)
       Этот  модуль  позволяет  настроить  простой  кластер  узлов,  которые совместно используют   определенный
       адрес   IP   и  адрес  MAC,  без  явного  балансировщика  нагрузки  перед  ними.   Соединения  статически
       распределяются между узлами этого кластера.

       Пожалуйста, обратите внимание, что модуль  CLUSTERIP   считается  устаревшим  и  был  заменен  на  модуль
       cluster, который является более гибким и не ограничивается IPv4.

       --new  Определяет  IP-адрес кластера. Вы всегда должны определить этот адрес в первом правиле для данного
              кластера.

       --hashmode mode
              Определяет режима хеширования. Значение  должно  быть  одним  из:  sourceip,  sourceip-sourceport,
              sourceip-sourceport-destport.

       --clustermac mac
              Определяет MAC-адрес кластера.Это должен быть групповой адрес канального уровня.

       --total-nodes num
              Определяет общее количество узлов в этом кластере.

       --local-node num
              Определяет номер локального узла в этом кластере.

       --hash-init rnd
              Определяет случайное начальное число, используемое для инициализации хэша.

   CONNMARK
       Эта  цель  устанавливает  значение  метки netfilter, которая является идентификатором данного соединения.
       Размер метки составляет 32 бита. Поддерживаются нижеследующие параметры.

       --set-xmark value[/mask]
              Обнуляет заданные значения битов mask и значение value исключающего ИЛИ в ctmark.

       --save-mark [--nfmask nfmask] [--ctmask ctmask]
              Копирует метку пакета (nfmark) в  метку  соединения  (ctmark),  используя  заданные  маски.  Новое
              значение ctmark определяется из выражения:

              ctmark = (ctmark & ~ctmask) ^ (nfmark & nfmask)

              т.е.  ctmask  определяет,  какие биты очистить, а nfmask какие биты nfmark преобразовать в ctmark.
              Значения ctmask и nfmask по умолчанию равны 0xFFFFFFFF.

       --restore-mark [--nfmask nfmask] [--ctmask ctmask]
              Копирует метку соединения (ctmark) в  метку  пакета  (nfmark),  используя  заданные  маски.  Новое
              значение nfmark определяется из выражения:

              nfmark = (nfmark & ~nfmask) ^ (ctmark & ctmask);

              т.е.  nfmask  определяет, какие биты очистить, а  ctmask какие биты ctmark преобразовать в nfmark.
              Значения ctmask и  nfmask  по  умолчанию  равны  0xFFFFFFFF.  Примечание  переводчика.  Символы  в
              выражениях  выше  обозначают:  "&"  -  побитовая  операция  логическое И; "~" - побитовая операция
              логическое НЕ; "^" - побитовая операция логическое ИСКЛЮЧАЮЩЕЕ ИЛИ.

              Параметр --restore-mark допустим только в таблице mangle.

       Для параметра --set-xmark  доступны следующие мнемоники:

       --and-mark bits
              По-битовое логическое И  операндов  "ctmark",  bits  (мнемоническое  обозначение  для  --set-xmark
              0/invbits, где invbits - по-битовое логическое НЕ значения bits).

       --or-mark bits
              По-битовое  логическое  ИЛИ  операндов  "ctmark",  bits (мнемоническое обозначение для --set-xmark
              bits/bits).

       --xor-mark bits
              По-битовое логическое ИСКЛЮЧАЮЩЕЕ ИЛИ операндов  "ctmark",  bits  (мнемоническое  обозначение  для
              --set-xmark bits/0).

       --set-mark value[/mask]
              Устанавливает метку (mark) соединения. Если определена маска (mask), то изменяются только те биты,
              которые определены в маске.

       --save-mark [--mask mask]
              Копирует nfmark в ctmark. Если определена маска, то копируются только эти биты.

       --restore-mark [--mask mask]
              Копирует  ctmark  в nfmark. Если определена маска (mask), то копируются только эти биты. Применимо
              только в таблице mangle.

   CONNSECMARK
       Эта цель копирует маркировку безопасности из пакетов в соединении (если они не помечены) и из  соединений
       обратно  в  пакеты (также только если они не помечены). Обычно, эта цель используется в сочетании с целью
       SECMARK, она применяется в таблице security (а также, для обратной совместимости  со  старыми  ядрами,  в
       таблице mangle). Поддерживаются нижеследующие параметры.

       --save Если  пакет  имеет  маркировку  безопасности,  а  соединение  не  помечено, то скопировать пакет в
              соединение.

       --restore
              Если пакет не имеет маркировки  безопасности,  а  соединение  имеет  маркировку  безопасности,  то
              скопировать маркировку безопасности из соединения в пакет.

   CT
       Цель  CT  устанавливает  параметры  для  пакета или связанного с ним соединения. Цель CT  присоединяет  к
       пакету  "шаблонную"  запись отслеживаемого соединения; при  инициализации  новой  записи  ct  эта  запись
       используется ядром conntrack. Эта цель может использоваться только в таблице "raw".

       --notrack
              Отключить отслеживание соединения для данного пакета.

       --helper name
              Использовать  для  соединения вспомогательный (helper) модуль, обозначенный name. Это более гибкий
              способ, чем загрузка вспомогательных модулей conntrack с предварительно установленными портами.

       --ctevents event[,...]
              Генерировать для данного соединения только указанные  события.  Возможными  типами  событий  могут
              быть:  new, related, destroy, reply, assured, protoinfo, helper, mark (это ссылка на ctmark, но не
              на nfmark), natseqinfo, secmark (ctsecmark).

       --expevents event[,...]
              Генерировать для данного соединения только указанные ожидаемые события. Возможными типами  событий
              могут быть: new.

       --zone-orig {id|mark}
              Для  трафика, поступающего с ОРИГИНАЛЬНОГО направления, назначить этому пакету id зоны и выполнять
              поиск только в этой зоне. Если вместо id используется mark, то зона является производной от nfmark
              пакета .

       --zone-reply {id|mark}
              Для трафика, поступающего из направления REPLY, присвоить этому  пакету  пакету  идентификатор  id
              зоны  и  выполнять  поиск  только  в этой зоне. Если вместо идентификатора зоны используется метка
              mark, то зона является производной от nfmark пакета .

       --zone {id|mark}
              Присвоить этому пакету идентификатор id зоны и выполнять поиск только в  этой  зоне.  Если  вместо
              идентификатора  зоны id используется метка mark, то зона является производной от nfmark пакета. По
              умолчанию пакеты имеют зону 0. Этот параметр применяется в обоих направлениях.

       --timeout name
              Использовать для соединения политику тайм-аута с указанным именем  name.  Это  обеспечивает  более
              гибкое   определение   политики   тайм-аута,   чем  глобальные  значения  тайм-аута,  доступные  в
              /proc/sys/net/netfilter/nf_conntrack_*_timeout_*.

   DNAT
       Эта цель поддерживается только в таблице nat, в цепочках PREROUTING и OUTPUT, а также в  пользовательских
       цепочках,  которые  вызываются  из  этих  цепочек.  Она  изменяет  адрес назначения всех пакетов в данном
       соединении; при этом проверка правил прекращается. В этой цели используются следующие параметры:

       --to-destination [ipaddr[-ipaddr]][:port[-port[/baseport]]]
              который может указывать один  новый  IP-адрес  назначения,  включающий  в  себя  широкий  диапазон
              IP-адресов.  Необязательно  диапазон  портов,  если  в  правиле  также  указан  один  из следующих
              протоколов: tcp, udp, dccp или sctp.Если диапазон портов не определён, то порт назначения  никогда
              не  будет  изменен.  Если  IP-адрес не указан, то будет изменен только порт назначения. Если задан
              параметр baseport, то разница между оригинальным портом назначения и его значением используется  в
              качестве смещения в отображении диапазона портов. Это позволяет создавать сдвинутые диапазоны карт
              портов и доступно начиная с версии ядра 4.18..  Для одного порта или baseport может использоваться
              имя службы, указанное в файле /etc/services.

       --random
              Рандомизировать отображение исходящего порта (ядро >= 2.6.22).

       --persistent
              Предоставляет  клиенту  один  и  тот  же  адрес  источника/назначения  для каждого соединения. Это
              заменяет цель SAME. Поддержка постоянных сопоставлений доступна в версии 2.6.29-rc2.

       Поддержка IPv6 доступна начиная с версии ядер Linux >= 3.7.

   DNPT (Специфика IPv6)
       Эта цель обеспечивает преобразование сетевого префикса  назначения  IPv6,  без  сохранения  состояния,  в
       сетевой префикс IPv6 (как это описано в RFC 6296).

       Эту  цель  можно  применять только в таблице mangle. Применять эту цель в таблице nat недопустимо. В этой
       цели используются следующие параметры:

       --src-pfx [prefix/length]
              Определяет преобразуемый префикс источника и его длину.

       --dst-pfx [prefix/length]
              Определяет преобразуемый префикс назначения и его длину.

       Для того, чтобы отменить преобразование следует использовать цель SNPT. Пример:

              ip6tables -t mangle -I POSTROUTING  -s  fd00::/64  !  -o  vboxnet0  -j  SNPT  --src-pfx  fd00::/64
              --dst-pfx 2001:e20:2000:40f::/64

              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

       Возможно, вам потребуется включить соседний прокси-сервер IPv6:

              sysctl -w net.ipv6.conf.all.proxy_ndp=1

       Вы также должны использовать цель NOTRACK, чтобы отключить отслеживание  соединений  для  преобразованных
       потоков.

   DSCP
       Эта  цель  изменяет  значение  (value) битов DSCP в заголовке TOS пакета IPv4. Поскольку она манипулирует
       пакетом, то её можно использовать только в таблице mangle.

       --set-dscp value
              Определяет числовое значение в поле DSCP (значение может быть десятичным или шестнадцатеричным).

       --set-dscp-class class
              Определяет для поля DSCP значение класса (class) DiffServ.

   ECN (Специфика IPv4)
       Эта цель избирательно обрабатывает известные черные дыры ECN. Её  можно  использовать  только  в  таблице
       mangle.

       --ecn-tcp-remove
              Удаляет все биты ECN из заголовка TCP. Конечно, её можно использовать только совместно с -p tcp.

   (Специфика IPv6)
       Эта  цель  используется   для   изменения  поля  Hop  Limit  в  заголовке IPv6. Поле Hop Limit аналогично
       полю значение TTL в IPv4.  Установка или увеличение поля Hop Limit потенциально может быть очень опасной,
       поэтому её следует избегать любой ценой. Эта  цель  может  использоваться только в таблице mangle.

       Никогда не устанавливайте и не увеличивайте значение Hop Limit для  пакетов,  покидающих  вашу  локальную
       сеть!

       --hl-set value
              Определяет Hop Limit равным значению "value".

       --hl-dec value
              Уменьшает время Hop Limit на значение "value".

       --hl-inc value
              Увеличивает время Hop Limit на значение "value".

   HMARK
       Эта  цель действует также как цель MARK, т.е.  устанавливает метку fwmark, но метка вычисляется исходя из
       выбранного селектора хеширования пакетов. Вам также необходимо указать диапазон меток  и  (необязательно)
       смещение,  с  которого  следует  начинать.  Сообщения  об  ошибках  ICMP  проверяются  и используются для
       вычисления хэширования.

       Поддерживаемые параметры:

       --hmark-tuple tuple
              Членами  кортежа (tuple) могут быть:  src - адрес источника  (адреса  IPv4,  IPv6),  dst  -  адрес
              назначения  (адреса  IPv4,  IPv6), sport - порт источника (TCP, UDP, UDPlite, SCTP, DCCP), dport -
              порт назначения (TCP, UDP, UDPlite, SCTP,  DCCP), spi - индекс параметра безопасности (AH, ESP)  и
              ct - вместо селекторов пакетов использовать кортеж conntrack.

       --hmark-mod value (должно быть > 0)
              Модуль для вычисления хэша (для ограничения диапазона возможных меток).

       --hmark-offset value
              Смещение, с которого начинаются метки.

       Для расширенного использования вместо использования --hmark-tuple вы можете определить пользовательские
              префиксы (prefixes) и маски (masks):

       --hmark-src-prefix cidr
              Маска адреса источника в нотации CIDR.

       --hmark-dst-prefix cidr
              Маска адреса назначения в нотации CIDR.

       --hmark-sport-mask value
              16-битная маска порта источника в шестнадцатеричном формате.

       --hmark-dport-mask value
              16-битная маска порта назначения в шестнадцатеричном формате.

       --hmark-spi-mask value
              32-битное поле с маской spi.

       --hmark-proto-mask value
              8-битное поле с номером протокола уровня 4.

       --hmark-rnd value
              32-битное случайное пользовательское значение для вычисления хэша.

       Примеры:

       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

       iptables -t mangle -A PREROUTING -j HMARK --hmark-offset 10000 --hmark-tuple src,dst,proto --hmark-mod 10
       --hmark-rnd 0xdeafbeef

   IDLETIMER
       Этот  цель  может  использоваться  для  определения  того,  когда  интерфейсы  были  неактивны  в течение
       определенного периода времени.  Таймеры идентифицируются по меткам и создаются при  установке  правила  с
       новой  меткой.   В  качестве  параметра в правилах также указывается время ожидания (в секундах).  Если в
       нескольких правилах используется одна и  та  же  метка  таймера,  таймер  будет  перезапущен  при  каждом
       срабатывании любого из правил.  В sysfs создается одна запись для каждого таймера.  Этот атрибут содержит
       таймер, оставшийся до истечения срока действия таймера.  Атрибуты расположены в классе xt_idletimer:

       /sys/class/xt_idletimer/timers/<label>

       Когда  таймер  срабатывает,  то модуль цели отправляет уведомление sysfs в пользовательское пространство,
       которое затем может решить, что делать (например, отключиться для экономии энергии).

       --timeout amount
              Определяет время в секундах, через которое будет выдано уведомление.

       --label string
              Определяет уникальный идентификатор таймера. Максимальная длина строки  идентификатора  составляет
              27 символов.

   LED
       Это   дополнение   создает LED-триггер, который затем можно подключить к системным индикаторам, чтобы они
       мигали или светились. Используйте индикаторы,  когда   определенные   пакеты  проходят   через   систему.
       Одним  из  примеров может быть включение светодиода на несколько минут каждый раз при соединении по SSH с
       локальным компьютером. Следующие параметры управляют поведением триггера:

       --led-trigger-id name
              Наименование,  присвоенное  триггеру  LED.  Это  наименование   триггера   будет   иметь   префикс
              "netfilter-".

       --led-delay ms
              Определяет  как  долго  (в  миллисекундах)  должен светиться индикатор LED при поступлении пакета.
              Значение по умолчанию равно 0 (мигнуть как можно быстрее). Можно  присвоить  специальное  значение
              inf,  чтобы  оставить  LED  постоянно  включенным. (В этом случае триггер необходимо будет вручную
              выключить и  снова  подключить  к  устройству  LED).

       --led-always-blink
              Всегда  заставлять  LED мигать при поступлении пакета, даже если LED уже  включен.  Это  позволяет
              уведомлять  о новых пакетах даже при больших значениях задержки (в противном случае это привело бы
              к не заметному увеличению времени задержки).

       Например:

       Создаём триггер LED для входящего SSH-трафика:
              iptables -A INPUT -p tcp --dport 22 -j LED --led-trigger-id ssh

       Затем подключаем этот триггер к LED:
              echo netfilter-ssh >/sys/class/leds/ledname/trigger

   LOG
       Эта цель заставляет ядро записывать информацию  о  пакетах  в  журнал.   Если  эта   цель  определена   в
       правиле,   то  ядро  Linux  выведет некоторую информацию  обо  всех соответствующих пакетах  (например, о
       большинстве полей заголовка IP/IPv6) в журнал ядра (откуда  эту  информацию  можно  прочитать  с  помощью
       программы dmesg(1) или прочитать в системном журнале).

       LOG  -  "не  конечная  цель",  т.е.  просмотр  правил  будет  продолжаться далее. Поэтому, если вы хотите
       сохранять сведения о пакетах с помощью цели LOG,  а  затем  их отклонить, то вам следует использовать два
       отдельных правила с одинаковыми критериями соответствия, сначала используйте цель LOG, а затем цели  DROP
       или REJECT.

       --log-level level
              Уровень подробности сведений в журнале.  Этот  уровень  может  быть  (в  зависимости  от  системы)
              числовым   или   мнемоническим. Возможные  значения (в порядке убывания приоритета): emerg, alert,
              crit, error, warning, notice, info или debug.

       --log-prefix prefix
              Определяет префикс, который будет добавлен к сообщениям в журнале; длина префикса  может  быть  не
              более 29 символов; это может быть использовано для различения сообщений в журналах.

       --log-tcp-sequence
              Регистрировать  порядковые  номера TCP. Это представляет угрозу безопасности, если журнал доступен
              для чтения пользователям.

       --log-tcp-options
              Регистрировать параметры из заголовка пакета TCP.

       --log-ip-options
              Регистрировать параметры из заголовка пакета IP/IPv6.

       --log-uid
              Регистрировать идентификатор пользователя процесса, создавшего пакет.

       --log-macdecode
              Регистрировать адреса MAC и протокол.

   MARK
       Эта  цель  присваивает пакету метку  Netfilter.  Эту метку,  например,  можно  использовать  совместно  с
       маршрутизацией  на основе fwmark (требуется программа iproute2). Если вы предполагаете использовать метку
       так, то обратите внимание, что метка должна быть присвоена  (чтобы  повлиять  на  маршрутизацию)  либо  в
       цепочке PREROUTING, либо в цепочке OUTPUT таблицы mangle. Размер поля метки составляет 32 бита.

       --set-xmark value[/mask]
               Обнуляет  биты  в метке пакета ("nfmark"), установленные операцией логическое ИЛИ с маской mask и
              значением value. Если маска mask  не  определена,   то  предполагается,  что  она  имеет  значение
              0xFFFFFFFF.

       --set-mark value[/mask]
              Обнуляет  биты  в  метке  пакета, установленные операцией логическое ИЛИ с маской mask и значением
              value. Если маска mask не определена, то предполагается, что она имеет значение 0xFFFFFFFF.

       Допустима следующая мнемоника:

       --and-mark bits
              --and-mark bits - двоичное логическое И nfmark с  bits; мнемоника для --set-xmark  0/invbits,  где
              invbits - двоичная инверсия bits.

       --or-mark bits
              --or-mark bits - двоичное логическое ИЛИ nfmark с bits; мнемоника для --set-xmark bits/bits.

       --xor-mark bits
              --xor-mark  bits  -  двоичное  логическое исключающее ИЛИ nfmark с bits; мнемоника для --set-xmark
              bits/0.

   MASQUERADE
       Эта цель может применена только в таблице nat, в цепочке POSTROUTING. Её следует  использовать  только  с
       динамически  назначаемыми  IP-адресами  (dialup).  Если  у  вас используется статический IP-адрес, то вам
       следует применить цель SNAT. Маскирование (Masquerading) эквивалентна присвоению интерфейсу,через который
       отправляется пакет, временного IP-адреса, но это приводит к тому, что IP-адрес forgotten (забывается) при
       отключении интерфейса. Это правильное поведение, но при создании нового  соединения,  интерфейс  вряд  ли
       будет  иметь  тот  же самый IP-адрес и, следовательно, все ранее установленные соединения все равно будут
       потеряны. Поддерживаются следующие параметры:

       --to-ports port[-port]
              Определяет диапазон используемых исходящих портов, переопределяя значения по умолчанию  цели  SNAT
              (смотрите  ниже). Это допустимо только в том случае, если в правиле также указан один из следующих
              протоколов: tcp, udp, dccp или sctp.

       --random
              Параметр --random - рандомизировать отображение исходящего порта (ядро версии >= 2.6.21).  Начиная
              с версии ядра 5.0, параметр --random идентичен параметру --random-fully.

       --random-fully
              Полностью рандомизировать отображение исходящего порта (ядро версии >= 3.13).

       Поддержка IPv6 доступна начиная с версии ядер Linux >= 3.7.

   NETMAP
       Эта  цель  позволяет  вам статически отображать адреса всей существующей сети в новые адреса другой сети.
       Эту цель можно использовать только в правилах таблицы nat.

       --to address[/mask]
              Определяет сетевой адрес для отображения. Результирующий адрес будет создан следующим образом: все
              биты "единицы" в маске заполняются из нового "адреса". Все биты, равные нулю в маске,  заполняются
              из существующего адреса.

       Поддержка IPv6 доступна начиная с версии ядер Linux >= 3.7.

   NFLOG
       Эта   цель   обеспечивает  регистрацию  пакетов,  соответствующих  критерию. Когда эта цель определена  в
       правиле,  ядро  Linux   передаст   пакет  внутреннему  интерфейсу  для  регистрации  пакета.  Обычно  она
       используется   совместно  с  nfnetlink_log  в качестве внутреннего интерфейса регистрации,  которая будет
       многоадресно  передавать  пакет через сокет netlink в указанную  группу многоадресной  рассылки. Один или
       несколько  процессов  пользовательского пространства  могут  подписаться  на  эту  группу  для  получения
       пакетов.  Как  и  LOG,   это   не   "конечная" цель, т.е. прохождение правил продолжается. Поддерживаются
       следующие параметры.

       --nflog-group nlgroup
              Определяет  группу  netlink  (0–2^16-1),  к  которой  относятся  пакеты  (применимо   только   для
              nfnetlink_log). Значение по умолчание 0.

       --nflog-prefix prefix
              Определяет  строку  префикса для включения в сообщение журнала длиной до 64 символов, используется
              для различения сообщений в журналах.

       --nflog-range size
              Этот параметр никогда не работал, вместо этого используйте параметр --nflog-size.

       --nflog-size size
              Определяет  количество  байт, которые  должны быть  скопированы  в  пользовательское  пространство
              (применимо  только  для  nfnetlink_log).  Некоторые  версии  nfnetlink_log  могут  указывать  свой
              собственный диапазон, этот параметр переопределяет его.

       --nflog-threshold size
              Определяет количество пакетов, стоящих в очереди внутри ядра перед  отправкой  их  в  пространство
              пользователя  (применимо  только для nfnetlink_log). Большие значения приводят к меньшим издержкам
              на пакет, но увеличивают задержку поступления пакетов в  пространство  пользователя.  Значение  по
              умолчанию равно 1.

   NFQUEUE
       Эта   цель   передает   пакет   в   пространство   пользователя,   используя обработчик  nfnetlink_queue.
       Пакет  помещается   в   очередь, с идентифицирующим  его  16-разрядным  номером   очереди.   Пространство
       пользователя,  при желании, может проверить и изменить  пакет.  Затем  пространство  пользователя  должно
       удалить  или повторно передать пакет в ядро.  Пожалуйста,   смотрите  libnetfilter_queue   для  получения
       подробной информации. Обработчик nfnetlink_queue был добавлен в Linux 2.6.14. Параметр queue-balance  был
       добавлен в Linux 2.6.31, queue-bypass был добавлен в Linux 2.6.39.

       --queue-num value
              Определяет  используемый  номер  очереди.  Допустимые  номера  очередей от 0 до 65535. Значение по
              умолчанию равно 0.

       --queue-balance value:value
              Определяет  диапазон используемых очередей. Затем пакеты балансируются по заданным  очередям.  Это
              полезно  для  многоядерных  систем:  запустите  несколько  экземпляров программы пользовательского
              пространства в очередях x, x+1, . x+n и используйте "--queue-balance x:x+n". Пакеты, принадлежащие
              одному и тому же соединению, помещаются в  одну  и  ту  же  очередь  nfqueue.  Из-за  особенностей
              реализации  меньшее  значение диапазона, равное 0, ограничивает большее значение диапазона, равное
              65534, т.е. можно балансировать не более чем между 65535 очередями.

       --queue-bypass
              По умолчанию, если ни одна программа пользовательского пространства не  прослушивает  NFQUEUE,  то
              все  пакеты,  которые  должны  быть  поставлены  в очередь, отбрасываются. При использовании этого
              параметра цель NFQUEUE вместо этого ведет себя как цель  ACCEPT  и  пакет  переходит  к  следующей
              таблице.

       --queue-cpu-fanout
              Поддерживается начиная с ядра Linux 3.10. При использовании вместе с --queue-balance этот параметр
              будет  использовать  CPU  ID  в  качестве  индекса  для  сопоставления  пакетов  с очередями. Идея
              заключается в том, что вы можете повысить производительность, если на каждый процессор  приходится
              очередь. Для этого требуется определить параметр --queue-balance.

   NOTRACK
       Это   дополнение  отключает  отслеживание соединений для всех пакетов, соответствующих этому правилу. Оно
       эквивалентно -j CT --notrack. Как и CT, NOTRACK можно использовать только в таблице raw.

   RATEEST
       Цель   RATEEST  собирает  статистику,  выполняет  расчет  оценки  скорости  и  сохраняет  результаты  для
       последующей  оценки,  с помощью критерия rateest (смотрите выше в разделе КРИТЕРИИ ДОПОЛНИТЕЛЬНЫЕ).

       --rateest-name name
              Подсчитать,  соответствующие  критерию  пакеты  в пуле с данным названием name, которое может быть
              выбрано любым.

       --rateest-interval amount{s|ms|us}
              Определяет интервал измерения скорости в секундах, миллисекундах или микросекундах.

       --rateest-ewmalog value
              Определяет постоянную времени усреднения при измерении скорости.

   REDIRECT
       Эта цель применима только в таблице nat, в цепочках PREROUTING  и  OUTPUT,  а  также  в  пользовательских
       цепочках,  которые  вызываются  только  из  этих   цепочек.  Она  перенаправляет  пакет на сам компьютер,
       изменяя IP-адрес назначения на заданный адрес  входящего   интерфейса  (локально  сгенерированные  пакеты
       отображаются  в  адреса  localhost,  127.0.0.1  для  IPv4  и  ::1  для  IPv6,  а  пакеты, поступающие  на
       интерфейсы,  для которых не задан IP-адрес, отбрасываются).

       --to-ports port[-port]
              Определяет  порт  назначения  или диапазон используемых портов: без этого значения порт назначения
              никогда не будет изменен. Применима только  тогда, когда в правиле также указан один из  следующих
              протоколов:  tcp,  udp,  dccp  или sctp. Для одиночного порта  может  быть определено наименование
              службы из файла /etc/services.

       --random
              Рандомизировать отображение исходящего порта (ядро >= 2.6.22).

       Поддержка IPv6 осуществляется при использовании ядер Linux версий >= 3.7.

   REJECT (специфика IPv6)
       Эта  цель  используется  для  отправки  обратно пакета с сообщением об ошибке в ответ на  соответствующий
       пакет; в противном случае эта цель эквивалентна цели DROP. Это конечная  цель, завершающая  обход правил.
       Эта  цель  может  применяться  только  в  цепочках  IINPUT,  FORWARD и OUTPUT, а также в пользовательских
       цепочках, которые вызываются из этих цепочек. Следующий параметр определяет  тип  ошибки  в  возвращаемом
       пакете:

       --reject-with type
              Этот  параметр  определят  тип  ошибки  в  отправляемом  обратно пакете. Типами ошибок могут быть:
              icmp6-no-route,   no-route,    icmp6-adm-prohibited,    adm-prohibited,    icmp6-addr-unreachable,
              addr-unreach  или icmp6-port-unreachable, которые возвращает  соответствующее сообщение  об ошибке
              ICMPv6 (по умолчанию  возвращается  icmp6-port-unreachable).  Наконец,  параметр  tcp-reset  может
              использоваться  для  правил,  которые используют только критерии для протокола TCP: это приводит к
              обратной отправке пакета  TCP  RST.  Это  в  основном  полезно  для   блокировки   запросов  ident
              (113/tcp),  которые  часто  возникают  при  отправке  почты  на нерабочие почтовые узлы (которые в
              противном случае не будут принимать вашу почту). Параметр tcp-reset можно  использовать  только  с
              версиями ядра 2.6.14 или более поздними.

       ВНИМАНИЕ:  Вы  не  должны  без  разбора  применять  цель  REJECT  к пакетам, состояние соединения которых
       классифицируется как INVALID; вместо этого следует применять только цель DROP.

        Рассмотрим  узел-источник, передающий пакет P, причем пакет P испытывает такую большую задержку на своем
       пути, что узел-источник делает повторную передачу пакета P_2,  при  этом  повторный  пакет  P_2   успешно
       достигает  пункта  назначения  и  нормально  изменяет   состояние   соединения. Возможно,  что запоздалое
       прибытие  пакета P может рассматриваться как не связанное с какой-либо записью  отслеживания  соединения.
       Создание ответа отклонить (reject) таким образом, приведет к закрытию работоспособного соединения.

       Поэтому, вместо того, чтобы использовать:

       -A INPUT ... -j REJECT

       лучше использовать:

       -A INPUT ... -m conntrack --ctstate INVALID -j DROP
       -A INPUT ... -j REJECT

   REJECT (Специфика IPv4)
       Эта   цель  используется  для  отправки  обратно пакета с сообщением об ошибке в ответ на соответствующий
       пакет; в противном случае эта цель эквивалентна цели DROP. Это конечная  цель, завершающая  обход правил.
       Эта цель может применяться только в цепочках  IINPUT,  FORWARD  и  OUTPUT,  а  также  в  пользовательских
       цепочках,  которые  вызываются  из  этих цепочек. Следующий параметр определяет тип ошибки в возвращаемом
       пакете:

       --reject-with type
              Типом   может    быть    icmp-net-unreachable,    icmp-host-unreachable,    icmp-port-unreachable,
              icmp-proto-unreachable,  icmp-net-prohibited,  icmp-host-prohibited или icmp-admin-prohibited (*),
              которые возвращают соответствующие сообщения об ошибке ICMP (по умолчанию  используется  сообщение
              icmp-port-unreachable).  Параметр  tcp-reset  может  использоваться для правил, которые используют
              только критерии для протокола TCP: это приводит к обратной отправке пакета TCP RST. Это в основном
              полезно для  блокировки  запросов ident (113/tcp), которые часто возникают при отправке  почты  на
              нерабочие почтовые узлы (которые в противном случае не будут принимать вашу почту).

              (*)  Использование  icmp-admin-prohibited  в  ядрах,  которые  этот тип не поддерживают приведет к
              выполнению цели DROP вместо цели REJECT.

       ВНИМАНИЕ: Вы не должны без  разбора  применять  цель  REJECT  к  пакетам,  состояние  соединения  которых
       классифицируется как INVALID; вместо этого следует применять только цель DROP.

        Рассмотрим  узел-источник, передающий пакет P, причем пакет P испытывает такую большую задержку на своем
       пути,  что  узел-источник  делает  повторную  передачу  пакета P_2, при этом повторный пакет P_2  успешно
       достигает пункта назначения и  нормально  изменяет   состояние   соединения.  Возможно,   что  запоздалое
       прибытие   пакета  P может рассматриваться как не связанное с какой-либо записью отслеживания соединения.
       Создание ответа отклонить (reject) таким образом, приведет к закрытию работоспособного соединения.

       Поэтому, вместо того, чтобы использовать:

       -A INPUT ... -j REJECT

       лучше использовать:

       -A INPUT ... -m conntrack --ctstate INVALID -j DROP
       -A INPUT ... -j REJECT

   SECMARK
        Эта   цель  используется  для  установки  значения  метки  безопасности,  связанного  с   пакетом,   для
       использования  подсистемами  безопасности,  такими  как  SELinux.  Она  допустима в таблице security (для
       обратной совместимости со старыми ядрами она также допустима в таблице mangle). Размер  метки  составляет
       32 бита.

       --selctx security_context

   SET
       Этот  модуль  добавляет  и/или удаляет записи из наборов адресов IP, которые могут быть созданы с помощью
       утилиты ipset(8).

       --add-set setname flag[,flag...]
              Этот параметр добавляет адрес (адреса)/порт(порты) пакета в набор.

       --del-set setname flag[,flag...]
              Этот параметр удаляет адрес (адреса)/порт(порты) пакета из заданного набора.

       --map-set setname flag[,flag...]
              [--map-mark] [--map-prio] [--map-queue] показать свойства пакета (метку брандмауэра, приоритет tc,
              аппаратурную очередь)

              здесь флаг(и) flag(s) определяют спецификации src и/или dst и флагов может быть не более шести.

       --timeout value
              определяет значение (value) тайм-аута, которое будет использоваться вместо значения по  умолчанию,
              которое определено настройкой.

       --exist
              при   добавлении   записи,  если  она  уже существует, заменяет существующее значение тайм-аута на
              указанное значение или на значение по умолчанию, которое определено настройкой.

       --map-set set-name
              значение "set-name" должно  быть  создано  с  помощью  параметра  --skbinfo;  параметр  --map-mark
              связывает пакет с меткой брандмауэра; параметр --map-prio связывает пакет с приоритетом управления
              трафиком; параметр --map-queue связывает пакет с аппаратурной сетевой картой.

              Параметр --map-set может быть использован только в таблице maangle. Флаги --map-prio и --map-queue
              могут использоваться только цепочках OUTPUT, FORWARD и POSTROUTING.

       Использование  -j SET требует поддержки ядром утилиты ipset, что для стандартных ядер имеет место начиная
       с Linux 2.6.39.

   SNAT
       Эта  цель  может  применяется  только  в  таблице  nat,  в  цепочках  POSTROUTING  и  INPUT,  а  также  в
       пользовательских  цепочках,  которые  вызываются  только  из  этих  цепочек. В ней указывается, что адрес
       источника пакета должен быть преобразован в другой  адрес  источника,  все  последующие  пакеты  в   этом
       соединении   также   будут иметь этот другой адрес источника, а проверка правил должна быть прекращена. В
       этой цели поддерживаются следующие параметры:

       --to-source [ipaddr[-ipaddr]][:port[-port]]
              Этот параметр определяет один новый IP-адрес источника или диапазон  новых  IP-адресов  источника.
              Если  в  правиле  также определён один из следующих протоколов - tcp, udp, dccp или sctp, то может
              быть определён, дополнительно, диапазон исходящих портов. Если диапазон портов  не  определён,  то
              исходящие  порты  со  значением  менее 512 будут сопоставлены с другими портами со значением менее
              512, порты в интервале от 512 до 1023, включительно, будут сопоставлены с  портами  со  значениями
              менее  1024,  а  остальные порты будут сопоставлены с портами со значениями от 1024 или выше. Там,
              где это возможно, изменение порта производиться не будет.

       --random
              Параметр --random определяет случайное значение исходящего порта; это  значение  будет  создано  с
              помощью алгоритма, основанного на хешировании (ядро >= 2.6.21).

       --random-fully
              Параметр  --random-fully  определяет  случайное  значение  исходящего  порта;  это  значение будет
              получено с помощью генератора псевдослучайных чисел (PRNG), ядра версий >= 3.14.

       --persistent
              Предоставляет клиенту один и  тот  же  адрес  источника/назначения  для  каждого  соединения.  Это
              заменяет цель SAME. Поддержка постоянных сопоставлений доступна в версии 2.6.29-rc2.

       Ядра до версии 2.6.36-rc1 не имеют возможности выполнять SNAT в цепочке INPUT.

       Поддержка IPv6 доступна начиная с версии ядер Linux >= 3.7.

   SNPT (Специфика IPv6)
       Обеспечивает  преобразование,  без  сохранения  состояния,  сетевого  префикса  IPv6 из источника IPv6  в
       сетевой префикс IPv6 (как описано в  RFC 6296).

       Эту цель можно применять только в таблице mangle. Применять эту цель в таблице nat  недопустимо.  В  этой
       цели используются следующие параметры:

       --src-pfx [prefix/length]
              Определяет преобразуемый префикс источника и его длину.

       --dst-pfx [prefix/length]
              Определяет преобразуемый префикс назначения и его длину.

       Для того, чтобы отменить преобразование следует использовать цель DNPT. Пример:

              ip6tables  -t  mangle  -I  POSTROUTING  -s  fd00::/64  !  -o  vboxnet0 -j SNPT --src-pfx fd00::/64
              --dst-pfx 2001:e20:2000:40f::/64

              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

       Возможно, вам потребуется включить соседний прокси-сервер IPv6:

              sysctl -w net.ipv6.conf.all.proxy_ndp=1

       Вы  также  должны  использовать цель NOTRACK, чтобы отключить отслеживание соединений для преобразованных
       потоков.

   SYNPROXY
       Эта  цель  будет  обрабатывать параллельное трехстороннее квитирование TCP в контексте  сетевого  фильтра
       для  защиты  локальной  или   внутренней  системы.  Для  этой  цели  требуется  отслеживание  соединений,
       поскольку необходимо преобразовывать позиционные номера. Способность  ядер отражать атаки SYNFLOOD (отказ
       в обслуживании) была значительно улучшена, начиная с Linux 4.4, так что эта цель больше  не  должна  быть
       нужна  для защиты серверов Linux.

       --mss maximum segment size
              Максимальный   размер  сегмента,  объявленный  клиентам.  Он  должен  соответствовать  внутреннему
              интерфейсу.

       --wscale window scale
              Масштаб окна, объявленный клиентам. Это должно соответствовать внутреннему интерфейсу.

       --sack-perm
              Передавать выборочное квитирование клиента во внутренний интерфейс  (будет  отключено,  если  этот
              параметр не указан).

       --timestamps
              Передать   штемпель   времени клиента во внутренний интерфейс (будет отключено, если этот параметр
              не указан; это также необходимо для выборочного квитирования и масштабирования окна).

       Например:

       Определить параметры tcp, используемые внутренним интерфейсом, из внешней системы

              tcpdump -pni eth0 -c 1 'tcp[tcpflags] == (tcp-syn|tcp-ack)'
                  port 80 &
              telnet 192.0.2.42 80
              18:57:24.693307 IP 192.0.2.42.80 > 192.0.2.43.48757:
                  Flags [S.], seq 360414582, ack 788841994, win 14480,
                  options [mss 1460,sackOK,
                  TS val 1409056151 ecr 9690221,
                  nop,wscale 9],
                  length 0

       Отключить режим tcp_loose, чтобы conntrack помечал пакеты "out-of-flow" как состояние INVALID.

              echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose

       Не отслеживать SYN-пакеты:

              iptables -t raw -A PREROUTING -i eth0 -p tcp --dport 80
                  --syn -j CT --notrack

       Перехватывать состояния UNTRACKED (SYN-пакеты) и INVALID (3WHS ACK-пакеты) и отправлять их  в   SYNPROXY.
       Это   правило   будет   реагировать  на  пакеты  SYN  с  помощью  SYN+ACK файлов куки (cookie), создавать
       состояние ESTABLISHED для действительного ответа клиента (пакетов 3WHS ACK) и удалять неправильные  файлы
       куки.  Комбинации флагов, не ожидаемые за 3WHS, не будут сопоставляться и сохраняться (например, SYN+FIN,
       SYN+ACK).

              iptables -A INPUT -i eth0 -p tcp --dport 80
                  -m state --state UNTRACKED,INVALID -j SYNPROXY
                  --sack-perm --timestamp --mss 1460 --wscale 9

       Отклонить недопустимые пакеты, это будут пакеты вне потока, которые не соответствуют SYNPROXY:

              iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state INVALID -j DROP

   TCPMSS
       Эта цель изменяет значение MSS для пакетов TCP SYN, чтобы управлять его максимальным  размером  в  данном
       соединении  (обычно   ограничивая   MTU вашего исходящего  интерфейса  минус  40  для  IPv4  или минус 60
       для IPv6, соответственно). Конечно, эту цель можно использовать только в сочетании с параметром -p tcp.

       Эта цель используется для борьбы с преступно  безмозглыми интернет-провайдерами  или  серверами,  которые
       блокируют  пакеты  "Требуется  фрагментация   ICMP"  или  "Пакет  ICMPv6  слишком большой". Симптомы этой
       проблемы заключаются в том, что все работает нормально  с  вашего  брандмауэра/маршрутизатора  Linux,  но
       машины, стоящие за ним, никогда не могут обмениваться большими пакетами:

       1.  Веб-браузеры подключаются, затем зависают без получения данных.

       2.  Небольшая почта работает нормально, но большие письма зависают.

       3.  Соединение ssh работает нормально, но scp зависает после первоначального подтверждения.

       Как этому противостоять? Активируйте эту цель и добавьте следующие правило в настройку брандмауэра:

               iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN
                           -j TCPMSS --clamp-mss-to-pmtu

       --set-mss value
              Этот  параметр  определяет  value (значение) MSS. Если MSS пакета уже меньше, чем это значение, то
              оно not (не будет)увеличено (начиная  с Linux 2.6.25 и  позднее),  чтобы  избежать  дополнительных
              проблем с хостами, полагающимися на надлежащее MSS.

       --clamp-mss-to-pmtu
              Этот  параметр  автоматически фиксирует значение MSS равным минус 40 для IPv4 и минус 60 для IPv6.
              Этот параметр может работать не так, как хотелось бы, там, где существуют асимметричные маршруты с
              различным путём MTU, например, ядро использует пути  MTU,  для  отправки   пакетов   на  IP-адреса
              источника и IP-адреса назначения. До версии Linux 2.6.25 этот параметр учитывал только путь MTU на
              IP-адрес назначения; последующие ядра также учитывают путь MTU на IP-адрес источника.

       Эти два последних параметры являются взаимоисключающими.

   TCPOPTSTRIP
       Эта  цель  удалит параметры TCP из TCP-пакета (фактически она заменит их на NO-OPs). При её применении вы
       также должны использовать параметр -p tcp.

       --strip-options option[,option...]
              Этот  параметр  удаляет заданные  параметры. Параметры  могут быть определены по номеру  параметра
              TCP  или  по  его  символическому  имени.  Список поддерживаемых параметров можно получить, вызвав
              iptables с помощью команды -j TCPOPTSTRIP -h.

   TEE
       Цель TEE клонирует пакет и перенаправляет этот клон на другую машину в  сегменте  локальной  сети  local.
       Другими   словами,  следующий    переход  должен  быть  целью,  или, если это необходимо, то вам придется
       настроить следующий переход для дальнейшей пересылки. Поддерживаются следующие параметры.

       --gateway ipaddr
              Отправить клонированный пакет на хост, доступный по указанному IP-адресу  (ipaddr).  Использование
              IP-адресов "0.0.0.0" (для пакетов IPv4) или "::" (для пакетов IPv6) недопустимо.

       Чтобы  перенаправить  весь  входящий  трафик  через  интерфейс  eth0 в бокс журнала сетевого уровня можно
       использовать правило:

       -t mangle -A PREROUTING -i eth0 -j TEE --gateway 2001:db8::1

   TOS
       Этот модуль устанавливает поле типа сервиса  в  заголовке  IPv4  (включая  биты  "precedence")  или  поле
       приоритета  в   заголовке   IPv6.    Обратите  внимание,  что  цель  допустима  только  в таблице mangle.
       Поддерживаются следующие параметры.

       --set-tos value[/mask]
              Обнуляет биты, заданные значениями mask  и  value  (в  поле  TOS/Priority),  к  которым  применена
              логическая  операция  исключающее   ИЛИ (смотрите ПРИМЕЧАНИЕ ниже). Если значение mask указано, то
              предполагается значение 0xFF.

       --set-tos symbol
              Вы можете указать символическое имя  при  использовании  цели  TOS  для  IPv4.  Это  подразумевает
              использование  маски  0xFF  (смотрите ПРИМЕЧАНИЕ ниже). Список распознаваемых имен можно получить,
              вызвав iptables с помощью -j TOS -h.

       Допустима следующая мнемоника:

       --and-tos bits
              Логическая операция И, примененная к значениям TOS и bits. (Мнемоническое значение  для  --set-tos
              0/invbits, где invbits - двоичная инверсия значения bits. Смотрите ПРИМЕЧАНИЕ ниже).

       --or-tos bits
              Логическая операция ИЛИ, примененная к значениям TOS и  bits (Мнемоническое значение для --set-tos
              bits/bits. Смотрите ПРИМЕЧАНИЕ ниже).

       --xor-tos bits
              Операция исключающее  ИЛИ, примененная к значениям (value) TOS и bits. (Мнемоническое значение для
              --set-tos bits/0. Смотрите ПРИМЕЧАНИЕ ниже).

       ПРИМЕЧАНИЕ:  В  ядрах  Linux  до  версии  2.6.38  включительно, за исключением долгосрочных версий 2.6.32
       (>=.42), 2.6.33 (>=.15) и 2.6.35  (>=.14),  существует  ошибка,  из-за  которой  изменение  IPv6  TOS  не
       выполняется  так,  как  документировано  и  отличается  от  версии  IPv4. Маска TOS указывает, какие биты
       требуется обнулить, поэтому ее необходимо инвертировать, прежде чем применять к первоначальному полю TOS.
       Однако вышеупомянутые ядра отказываются от инверсии, которая нарушает --set-tos и его мнемонику.

   TPROXY
       Эта  цель  применима только в таблице mangle, в цепочке PREROUTING и пользовательских  цепочках,  которые
       вызываются  только из этой цепочки. она перенаправляет пакет в локальный сокет, никоим образом не изменяя
       заголовок пакета. Она также может изменить  значение  метки, которое  затем  может  быть  использовано  в
       дополнительных правилах маршрутизации. Поддерживаются три следующих параметра:

       --on-port port
              Определяет   используемый   порт   назначения.  Это  обязательный  параметр; 0 означает, что новый
              порт назначения совпадает с исходящим портом. Этот параметр допустим только в том случае,  если  в
              правиле также указан параметр -p tcp или -p udp.

       --on-ip address
              Определяет  используемый  адрес  назначения.  По  умолчанию  адресом  является  IP-адрес входящего
              интерфейса. Параметр допустим только  в том случае, если в правиле также указан  параметр  -p  tcp
              или -p udp.

       --tproxy-mark value[/mask]
              Помечает   пакеты с заданными значениями значение/маска (value/mask). Установленное здесь значения
              могут использоваться расширенной маршрутизацией.   Примечание. Требуется  для  работы  прозрачного
              прокси: в противном случае эти пакеты будут перенаправлены, что, вероятно, не то, чего вы хотите.

   TRACE
       Эта  цель  помечает  пакеты  так, чтобы ядро регистрировало каждое правило критерия соответствия, которое
       проверяет пакеты, когда они проходят через таблицы, цепочки, правила. Эту цель можно использовать  только
       в таблице raw.

       В iptables-legacy должен быть загружен внутренний интерфейс ведения журнала ip(6)t_LOG или nfnetlink_log.
       Пакеты  регистрируются  с  префиксом строки: "TRACE: tablename:chainname:type:rulenum ", где типом (type)
       может быть "rule"  для  простого правила  и  "return"  для  неявного  правила  в  конце  пользовательской
       цепочки, а также "policy" для политики встроенных цепочек.

       С   помощью   iptables-nft  цель  преобразуется  в выражение meta nftrace. Следовательно, ядро отправляет
       события трассировки через netlink в пользовательское пространство, где они могут отображаться  с  помощью
       команды   xtables-monitor   --trace.   Для   получения   подробной   информации  обратитесь  к  программе
       xtables-monitor(8).

   TTL (Специфика IPv4)
       Эта цель  используется для изменения поля заголовка TTL IPv4.  Поле  TTL  определяет,  сколько  переходов
       (маршрутизаторов) может пройти пакет, пока не истечет его время жизни.

       Установка  или  увеличение поля TTL потенциально может быть очень опасным, поэтому этого следует избегать
       любой ценой. Эта цель применима только в таблице mangle.

       Никогда не устанавливайте и не увеличивайте значение Hop Limit для  пакетов,  покидающих  вашу  локальную
       сеть!

       --ttl-set value
              Установка значения времени TTL "value".

       --ttl-dec value
              Декремент значения времени TTL "value".

       --ttl-inc value
              Инкремент значения времени TTL "value".

   ULOG (Специфика IPv4)
       Это устаревший модуль цели NFLOG, поддерживающий только IPv4. Он обеспечивает ведение журнала совпадающих
       пакетов  в  пользовательском  пространстве.  Когда  этот  модуль  задан в правиле, тогда ядро Linux будет
       осуществлять многоадресную рассылку этого пакета через сокет netlink. Затем один или несколько  процессов
       пользовательского  пространства  могут  подписаться на различные группы многоадресной рассылки и получать
       пакеты. Как и в случае с LOG, это "не завершающая цель", т.е. обход правил продолжается при  при  наличии
       следующего правила.

       --ulog-nlgroup nlgroup
              Определяет группу netlink (1–32), в которую направляется пакет. Значение по умолчанию - 1.

       --ulog-prefix prefix
              Присваивает  сообщениям  журнала указанный префикс (prefix) длиной до 32-х символов; префикс может
              использоваться для различения сообщений в журналах.

       --ulog-cprange size
              Определяет количество (size) байт, которые необходимо скопировать в пользовательское пространство.
              Если количество байт равно 0,  то  всегда  копируется  весь  пакет,  независимо  от  его  размера.
              Значение по умолчанию равно 0.

       --ulog-qthreshold size
              Определяет  количество  пакетов  во внутренней очереди ядра. Установка этого значения, например, в
              10, позволяет накапливать десять пакетов во внутренней очереди  ядра  и  передавать  их  как  одно
              составное  сообщение  netlink  в пользовательское пространство. Значение по умолчанию равно 1 (для
              обратной совместимости).

ПЕРЕВОД

       Русский перевод этой страницы руководства  разработал(и)  Aleksandr  Felda  <isk8da@gmail.com>  и  Kirill
       Rekhov <krekhov.dev@gmail.com>

       Этот  перевод является свободной программной документацией; он распространяется на условиях общедоступной
       лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html  версии  3  или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если  вы  обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
       разработчику(ам)  по  его(их)  адресу(ам)  электронной  почты  или  по   адресу   списка рассылки русских
       переводчиков.

iptables 1.8.11                                                                           iptables-extensions(8)