Что это такое?
Это действие, которое должно быть совершено над пакетами, имевшими несчастье попасть под данное правило фильтрации, NAT или прочего. В терминологии iptables называется целью (target) — это то, что пишется после ключа --jump.
Зачем это нужно?
А зачем вообще нужны правила обработки IP-пакетов? Вот затем.
Как это настроить?
Выбрать одно из действий, перечисленных в списке.
ВНИМАНИЕ! Ниже приведён полный список поддерживаемых действий. При этом многие действия являются специфическими для определённых цепочек и таблиц; применять их в других местах не следует или недопустимо, даже если они там доступны в меню.
В зависимости от выбранных действий могут потребоваться дополнительные параметры этих действий. Например, если выбрано какое-либо из преобразований NAT, то необходимо указать, на что именно следует заменять исходные IP-адреса и номера портов. Узлы для ввода этих параметров становятся доступными после выбора соответствующего действия.
В экзотических случаях, не предусмотренных конфигурационным деревом NSG в явном виде, для указания параметров действия и даже самого действия можно использовать параметр extra-target
.
Подробно о целях, их применении и синтаксисе параметров см. man pages по iptables и iptables-extensions.
В пользовательских цепочках альтернативой данному параметру может являться переход в другую цепочку с возвращением в вышестоящую (эквивалент ключа iptables --goto). Параметр target
не может использоваться одновременно с chain
, поскольку действие в любом случае возможно только одно.
ACCEPT
- Пропустить пакет дальше без изменений (т.е. продолжить его обработку другими правилами, цепочками и таблицами). Параметров нет. Применимо в любой цепочке.
CLASSIFY
- Назначить пакету определённую выходную очередь в дисциплине CBQ и приоритет в этой очереди. Только для цепочек
FORWARD
, OUTPUT
, POSTROUTING
таблицы mangle
. Параметр — значение очереди и приоритета.
CLUSTERIP
- Организовать простейший кластер из нескольких узлов, работающих на одном IP и МАС-адресе, со статическим распределением соединений между ними. Только для IPv4. Параметры кластера:
clustermac
,
hash-init
,
hashmode
,
local-node
,
new
,
total-nodes
.
CONNMARK
- Установить метку соединения для данного пакета. Параметры действия записываются в строке
connmark-params
, используя синтаксис iptables.
CT
- Использовать механизм conntrack для отслеживания взаимосвязанных потоков (например, соединений ftp и ftp-data). Только для таблицы
raw
. Явно реализованные параметры:
ctevents
,
helper
,
notrack
,
zone
. Другие параметры для данной цели можно включить в
extra-target
.
DNAT
- Изменить адрес назначения пакета, а также, опционально, порт назначения для протоколов TCP и UDP. Только для цепочек
nat
PREROUTING
и OUTPUT
. Параметры:
диапазон адресов и портов и
порядок выбора портов.
IP-адрес и порт источника при преобразовании DNAT не изменяются.
DROP
- Уничтожить пакет, т.е. послать его
на в /dev/null. Применимо всегда и везде. Параметров нет. См. также REJECT
(см. ниже) — не просто послать, но послать вежливо.
DSCP
- Изменить значение поля DSCP (6 бит) в заголовке пакета IPv4. Только для таблицы
mangle
. Параметры действия:
set-dscp
,
set-dscp-class
.
ECN
- Принудительно очистить поле ECN (Explicit Congestion Notification) в заголовке TCP, чтобы закрыть известные дыры в безопасности. Только для IPv4, только для таблицы
mangle
и только для пакетов TCP. Параметр — указание на очистку заголовка.
LOG
- Внести запись о данном пакете в журнал ядра Linux (см. .system.show.dmesg и .system.syslog). Параметры вида
log-*
определяют содержимое и степень детализации записей.
Данное действие не является терминирующим, т.е. после срабатывания данного правила обработка пакета продолжается в данной цепочке. Если требуется выполнить какое-то ещё действие, например, уничтожить нежелательный пакет, то его следует задать в виде отдельного правила с тем же набором критериев и меньшим приоритетом (т.е. бóльшим номером в списке).
MARK
- Установить метку netfilter для данного пакета. Следует использовать только в таблице
mangle
. Параметры действия — метки iptables и
xtables. Обе метки могут далее использоваться, например, в пакете iproute2.
MASQUERADE
- Изменить адрес источника пакета на адрес интерфейса, через который отправляется пакет. Только для цепочки
nat POSTROUTING
. Рекомендуется использовать для интерфейсов, которым адрес назначается динамически (средствами PPP или DHCP). При этом адрес интерфейса определяется заново для каждого пакета, что создаёт повышенную вычислительную нагрузку по сравнению с аналогичным действием SNAT (см. ниже). В случае перехода такого интерфейса в состояние DOWN (по любой причине) все записи, относящиеся к нему, удаляются, а после его восстановления начинают создаваться снова (возможно, с новым IP-адресом, если он изменился).
Для пакетов TCP и UDP первоначальный порт источника, по возможности, не изменяется, если иное не указано явно. Если при этом несколько локальных хостов пытаются выйти во внешнюю сеть с одним и тем же портом источника, то порты из диапазонов до 511 включительно, 512...1023 и от 1024 включительно преобразуются в порты из того же диапазона по мере необходимости. Вместо этого поведения можно явно указать диапазон новых портов источника и режим их выбора.
IP-адрес и порт назначения при преобразованиях MASQUERADE и SNAT не изменяются.
NETMAP
- Статическое отображение адресов из одной сети на адреса в другой сети. Только для таблицы
nat
. Параметр — целевой адрес (или диапазон адресов, который комбинируется с исходным адресом).
NFLOG
- Более универсальный вариант ULOG (см. ниже), обеспечивающий передачу информации о пакете не напрямую в сокет netlink, а через специальную подсистему — logging backend. Параметры действия, в данной версии NSG Linux, следует записывать в поле
extra-options
.
NFQUEUE
- Поместить пакет в определённую очередь, идентифицируемую по 16-битному номеру. Параметр — номер очереди.
NONE
- Ничего не делать. Обычно используется, чтобы временно выключить правило. На нет — и параметров нет.
NOTRACK
- Отключить механизм conntrack. Только для таблицы
raw
. Равносильно target=CT notrack=true
.
RATEEST
- Сбор статистики, оценка скорости передачи и сохранение результатов для последующих вычислений с помощью критерия rateest. Настраивается параметрами
rateest-*
.
RAWDNAT
- Использовать устаревшую версию DNAT без механизма conntrack. Только для таблицы
raw
.
REDIRECT
- Перенаправить пакет на локальную машину. Только для цепочек
nat
PREROUTING
и OUTPUT
. Параметры только для пакетов TCP и UDP:
диапазон адресов и портов и
порядок выбора портов.
IP-адрес и порт источника при преобразовании REDIRECT не изменяются.
REJECT
- Уничтожить пакет, но при этом послать отправителю уведомление ICMP о том, что он не может быть доставлен. Только для цепочек
INPUT
, FORWARD
и OUTPUT
. Параметр — тип уведомления.
RETURN
- Прекратить анализ пакета по текущей цепочке и вернуться в предыдущую цепочку. Если это действие выполняется в одной из предопределённых цепочек, то результат определяется её действием по умолчанию. Параметров нет.
SNAT
- Изменить адрес источника пакета на адрес интерфейса, через который отправляется пакет. Только для цепочки
nat POSTROUTING
. В отличие от действия MASQUERADE (см. выше), новый IP-адрес (или диапазон адресов) — постоянный и указывается статически.
Данное действие целесообразно использовать на интерфейсах, имеющих статические IP-адреса. Исключением являются сеансовые соединения PPP (коммутируемые модемные соединения, сотовые порты, туннели PPPoE и PPTP) с ограниченным временем жизни — для них следует использовать MASQUERADING даже при наличии у них статических адресов.
Для пакетов TCP и UDP первоначальный порт источника, по возможности, не изменяется, если иное не указано явно. Если при этом несколько локальных хостов пытаются выйти во внешнюю сеть с одним и тем же портом источника, то порты из диапазонов до 511 включительно, 512...1023 и от 1024 включительно преобразуются в порты из того же диапазона по мере необходимости. Вместо этого поведения можно явно указать диапазон новых портов источника и режим их выбора.
IP-адрес и порт назначения при преобразованиях MASQUERADE и SNAT не изменяются.
TCPMSS
- Изменить значение MSS (Maximum Segment Size) в пакетах TCP SYN, чтобы вручную ограничить максимальный размер для данного соединения. Только для правила, содержащего протокол TCP в качестве одного из критериев. Применяется для преодоления проблем у отдельных сетевых ресурсов или поставщиков услуг, у которых неадекватно работают механизмы MTU и фрагментации пакетов (в особенности при дополнительных инкапсуляциях, таких как PPPoE, PPTP). Типичные симптомы проблемы: с хостов, расположенных за вашим маршрутизатором, TCP-соединения устанавливаются, мелкие пакеты проходят, а большие — нет; например, Web-сайты находятся, но открываются только простенькие странички без больших архитектурных форм.
Параметры действия: либо установить точно вычисленный (или подобранный) размер MSS, либо тупо урезать его до MTU данного маршрута минус 40 (для IPv4) или минус 60 (для IPv6, соответственно).
TCPOPTSTRIP
- Удалить заданные опции TCP из заголовка пакета. Только для правила, содержащего протокол TCP в качестве одного из критериев, и только в таблице
mangle
.
TEE
- Отправить копию пакета через заданный шлюз. Сами знаете кому и зачем.
TOS
- Изменить значение поля Type of Service заголовка IPv4 или поля Priority IPv6. Только в таблице
mangle
.
TPROXY
- Перенаправить пакет на локальный сокет, не изменяя его заголовок никоим образом. Допускается изменять только метку
fwmark
, которая может быть учтена средствами расширенной маршрутизации. Только для цепочки mangle PREROUTING
(и вызываемых из неё пользовательских цепочек). Параметры действия, в данной версии NSG Linux, следует записывать в поле extra-options
.
TTL
- Изменить значение поля TTL в заголовке пакета IPv4. Только в таблице
mangle
. Параметры определяют
уменьшение,
увеличение или сразу желаемое
значение TTL.
ВНИМАНИЕ! Данная операция может привести к непредсказуемым последствиям. Запрещается явно устанавливать или увеличивать поле TTL в пакетах, отправляемых за пределы вашей локальной сети.
ULOG
- Ретранслировать данный пакет через из ядра Linux через сокет netlink с тем, чтобы сделать его доступным для пользовательских процессов. Только для IPv4. Как и LOG (см. выше), данное действие не является терминирующим. Данный механизм является устаревшим, вместо него рекомендуется использовать NFLOG (см. выше). Настраивается параметрами
ulog-*
.
- Служебная (
UPnP
, GRE_KA
) или пользовательская цепочка
- Передать пакет на исследование в указанную цепочку. В этой цепочке над ним может быть совершено некоторое окончательное (терминирующее) действие, либо он может быть возвращён в исходную цепочку действием
RETURN
в одном из правил, либо он будет возвращён по исчерпании всех правил в дочерней цепочке. Либо он может быть передан в какую-то третью цепочку и т.д.