ip

title: ip(8)

text:
# ip(8)

## ИМЯ
ip - показ и управление маршрутизацией, сетевыми интерфейсами и туннелями

## СИНТАКСИС

ip [ ОПЦИИ ] ОБЪЕКТ { КОМАНДА | help }

ОБЪЕКТ := { link | addr | route | rule | neigh | tunnel | maddr | mroute | monitor }

ОПЦИИ := { -V[ersion] | -s[tatistics] | -r[esolve] | -f[amily] { inet | inet6 | ipx | dnet | link } | -o[neline] }

ip link set ИНТЕРФЕЙС { up | down | arp { on | off } |

promisc { on | off } |

allmulti { on | off } |

dynamic { on | off } |

multicast { on | off } |

txqueuelen КОЛИЧЕСТВО_ПАКЕТОВ |

name НОВОЕ_ИМЯ |

address LLADDR | broadcast LLADDR |

mtu MTU }

ip link show [ ИНТЕРФЕЙС ]

ip addr { add | del } IFADDR dev СТРОКА

ip addr { show | flush } [ dev СТРОКА ] [ scope SCOPE-ID ] [ to ПРЕФИКС ] [ СПИСОК_ФЛАГОВ ] [ label ШАБЛОН ]

IFADDR := ПРЕФИКС | ADDR peer ПРЕФИКС [ broadcast АДРЕС ] [ anycast АДРЕС ] [ label СТРОКА ] [ scope SCOPE-ID ]

SCOPE-ID := [ host | link | global | ЧИСЛО ]

СПИСОК_ФЛАГОВ := [ СПИСОК_ФЛАГОВ ] ФЛАГ

ФЛАГ := [ permanent | dynamic | secondary | primary | tentative | deprecated ]

ip route { list | flush } СЕЛЕКТОР

ip route get АДРЕС [ from АДРЕС iif СТРОКА ] [ oif СТРОКА ] [ tos TOS ]

ip route { add | del | change | append | replace | monitor } МАРШРУТ

СЕЛЕКТОР := [ root ПРЕФИКС ] [ match ПРЕФИКС ] [ exact ПРЕФИКС ] [ table TABLE_ID ] [ proto RTPROTO ] [ type ТИП ] [ scope ДИАПАЗОН ]

МАРШРУТ := NODE_SPEC [ INFO_SPEC ]

NODE_SPEC := [ ТИП ] ПРЕФИКС [ tos TOS ] [ table TABLE_ID ] [ proto RTPROTO ] [ scope ДИАПАЗОН ] [ metric МЕТРИКА ]

INFO_SPEC := ФЛАГИ ПАРАМЕТРОВ NH [ nexthop NH ] ...

NH := [ via АДРЕС ] [ dev СТРОКА ] [ weight ЧИСЛО ] NHFLAGS

OPTIONS := FLAGS [ mtu ЧИСЛО ] [ advmss ЧИСЛО ] [ rtt ЧИСЛО ] [ rttvar ЧИСЛО ] [ window ЧИСЛО ] [ cwnd ЧИСЛО ] [ ssthresh REALM ] [ realms REALM ]

ТИП := [ unicast | local | broadcast | multicast | throw | unreachable | prohibit | blackhole | nat ]

TABLE_ID := [ local| main | default | all | ЧИСЛО ]

ДИАПАЗОН := [ host | link | global | ЧИСЛО ]

ФЛАГИ := [ equalize ]

NHFLAGS := [ onlink | pervasive ]

RTPROTO := [ kernel | boot | static | ЧИСЛО ]

ip rule [ list | add | del | flush ] СЕЛЕКТОР ДЕЙСТВИЕ

СЕЛЕКТОР := [ from ПРЕФИКС ] [ to ПРЕФИКС ] [ tos TOS ] [ fwmark FWMARK[/МАСКА] ] [ dev СТРОКА ] [ pref ЧИСЛО ]

ДЕЙСТВИЕ := [ table TABLE_ID ] [ nat АДРЕС ] [ prohibit | reject | unreachable ] [ realms [SRCREALM/]DSTREALM ]

TABLE_ID := [ local | main | default | ЧИСЛО ]

ip neigh { add | del | change | replace } { АДРЕС [ lladdr LLADDR ] [ nud { permanent | noarp | stale | reachable } ] | proxy АДРЕС } [ dev ИНТЕРФЕЙС ]

ip neigh { show | flush } [ to ПРЕФИКС ] [ dev ИНТЕРФЕЙС ] [ nud СТАТУС ]

ip tunnel { add | change | del | show } [ ИМЯ ]

[ mode { ipip | gre | sit } ]

[ remote АДРЕС ] [ local АДРЕС ]

[ [i|o]seq ] [ [i|o]key КЛЮЧ ] [ [i|o]csum ] ]

[ ttl TTL ] [ tos TOS ] [ [no]pmtudisc ]

[ dev PHYS_DEV ]

АДРЕС := { АДРЕС_IP | any }

TOS := { ЧИСЛО | inherit }

TTL := { 1..255 | inherit }

КЛЮЧ := { DOTTED_QUAD | ЧИСЛО }

ip maddr [ add | del ] MULTIADDR dev СТРОК

ip maddr show [ dev СТРОКА ]

ip mroute show [ ПРЕФИКС ] [ from ПРЕФИКС ] [ iif ИНТЕРФЕЙС ]

ip monitor [ all | СПИСОК_ОБЪЕКТОВ ]

## ОПЦИИ
-V, -Version

вывести версию ip и выйти.

-s, -stats, -statistics

выводить больше информации. Если опция указывается два или больше раз, подробность выводимой информации увеличивается.

-f, -family

идентификатор протокола: inet, inet6 или link . Если опция не указана, семейство протоколов будет определено из других опций. Если этих опций недостаточно, будет использовано семейство по умолчанию: inet или any(любой). link - специальный идентификатор, означающий что сетевой протокол не задействован.

-4

сокращение для -family inet.

-6

сокращение для -family inet6.

-0

сокращение для -family link.

-o, -oneline

выводить каждую запись на отдельной строке, заменяя перевод строки на символ '´ . Это удобно чтобы подсчитать количество записей командой wc(1)

или отфильтровать вывод командой grep(1).

-r, -resolve

выводить имена хостов вместо IP-адресов.

## СИНТАКСИС КОМАНД IP

### ОБЪЕКТ
link

- сетевой интерфейс.

address

- адрес на интерфейсе в соответствии с протоколом (IP или IPv6).

neighbour

- запись кэша ARP или NDISC.

route

- запись таблицы маршрутизации.

rule

- правило маршрутизации.

maddress

- адрес multicast.

mroute

- запись кэша маршрутизации адреса multicast.

tunnel

- туннель IP.

Имена объектов могут быть указаны полностью или в сокращённой форме, например, address может быть сокращён до addr или до a.

### КОМАНДА
Указывает действие над объектом. Список доступных действий зависит от типа объекта. Как правило, доступны действия add, delete и show (или list ), но некоторые объекты не поддерживают все эти действия или имеют другие действия и соглашения о синтаксисе параметров.

Если команда не указана, используется команда по умолчанию. Обычно это list или, если невозможно получить список объектов этого класса, help.

## ip link - настройка сетевого интерфейса
link - сетевой интерфейс и следующие команды показывают и изменяют его параметры.

### ip link set - изменить параметры интерфейса
dev ИМЯ (поумолчанию)

ИМЯ определяет имя сетевого интерфейса.

up и down

изменяет состояние интерфейса на ВКЛЮЧЕН и ВЫКЛЮЧЕН.

arp on или arp off

изменяет флаг NOARP интерфейса.

multicast on или multicast off

изменяет флаг MULTICAST интерфейса.

dynamic on или dynamic off

изменяет флаг DYNAMIC интерфейса.

name ИМЯ

изменить имя интерфейса. Эта операция не рекомендуется на работающем интерфейсе или интерфейсе с настроенными адресами.

txqueuelen ЧИСЛО

txqlen ЧИСЛО

изменить размер очереди передачи интерфейса.

mtu ЧИСЛО

изменить MTU интерфейса.

address LLАДРЕС

изменить адрес станции интерфейса.

broadcast LLАДРЕС

brd LLАДРЕС

peer LLАДРЕС

изменить широковещательный адрес или адрес канала для интерфейса ТОЧКА-ТОЧКА.

Внимание: Если изменяется сразу несколько параметров, ip прерывает работу, если любое из изменений завершилось с ошибкой. Это единственный случай, когда ip может привести систему в нерабочее состояние. Чтобы этого не случилось, не изменяйте несколько параметров через ip link set за раз, если не уверены.

### ip link show - показать параметры интерфейса
dev ИМЯ (поумолчанию)

ИМЯ указывает интерфейс, параметры которого будут выведены. Если эта опция опущена, будут показаны параметры всех интерфейсов.

up

показать только запущенные интерфейсы.

## ip address - управление адресом.
address обозначает адрес протокола (IP или IPv6), назначенный интерфейсу. Каждый интерфейс должен иметь как минимум один адрес для использования соответствующего протокола. Можно назначить несколько адресов, указав в опции alias , но в данном документе это не рассматривается.

Команда ip addr выводит адреса и их свойства, добавляет новые адреса и удаляет существующие.

### ip address add - добавить новый адрес протокола.
dev ИМЯ

имя интерфейса, которому назначается адрес.

local АДРЕС (поумолчанию)

адрес интерфейса. Формат адреса зависит от протокола: десятичные числа через точку для IP или шестнадцатеричные числа через двоеточие для IPv6. После АДРЕСА может быть указана маска подсети через '/'.

peer АДРЕС

Адрес удалённой стороны для интерфейсов точка-точка. Точно также АДРЕС может быть указан с маской подсети. Если указан адрес peer, локальный адрес не может маску подсети, так как маска подсети назначается адресом 'peer'.

broadcast АДРЕС

Широковещательный адрес интерфейса. Можно указать специальные символы '+' и '-' вместо полного адреса. В этом случае, широковещательный адрес определяется из маски подсети установкой или снятием битов макси подсети.

label ИМЯ

Каждый адрес может быть помечен строкой. Для сохранения совместимости с сетевыми алиасами Linux-2.0, эта строка должна совпадать с именем интерфейса или начинаться с имени интерфейса, после которого идёт двоеточие.

scope SCOPE_VALUE

Диапазон области, которой соответствует адрес. Доступные диапазоны приведены в файле /etc/iproute2/rt_scopes. Предопределённые диапазоны:

global - глобальный адрес.

site - (только IPv6) локальный адрес сайта, т.е. действителен только в пределах этого сайта.

link - локальный адрес интерфейса, т.е. действителен только на этом интерфейсе.

host - адрес действителен только на этом хосте.

### ip address delete - удалить адрес протокола
Параметры: Совпадают с параметрами ip addr add. Обязательный параметр - имя интерфейса. Остальные параметры необязательны. Если параметры не указаны, удаляется первый адрес.

### ip address show - вывод адресов протокола
dev ИМЯ (поумолчанию)

имя интерфейса.

scope SCOPE_VAL

показывать адреса только в указанном диапазоне.

to ПРЕФИКС

показывать адреса, соответствующие ПРЕФИКСУ.

label ШАБЛОН

показывать только адреса с метками, совпадающими с ШАБЛОНОМ. ШАБЛОН соответствует обычному шаблону командной оболочки.

dynamic и permanent

(только IPv6) показать безстатусные и фиксированные (не динамические) адреса.

tentative

(только IPv6) показать дублированные адреса.

deprecated

(только IPv6) показать только устаревшие адреса.

primary и secondary

показать только первичные (или вторичные) адреса.

### ip address flush - очистить адреса протокола
Команда удаляет определённый набор адресов.

Команда принимает те же параметры, что и show. Различие состоит в том, что она не запускается, если параметры не указаны.

Внимание: Эта команда (и другие команды flush описываемые ниже) очень опасна. Если вы сделаете ошибку, могут быть удалены все адреса.

С опцией -statistics вывод команды становится более подробный. Выводится количество удалённых адресов и количество раз очистки адресов. Если опция указана дважды, ip addr flush также выводит все удалённые адреса в формате, описанной в предыдущем разделе.

## ip neighbour - управление таблицей соседей/arp.
Объекты neighbour (сосед) связывают адреса протокола и адреса сетевых адаптеров для хостов одной и той же сети. Записи о соседях организованы в виде таблиц. Таблица соседей протокола IPv4 также известна под именем "таблица ARP".

Следующие команды показывают связи с соседями и параметры этих связей, а также добавляют новые записи или удаляют существующие.

### ip neighbour replace - добавить новую запись или заменить существующую
Эти команды добавляют новые записи о соседях или обновляют существующие записи.

to АДРЕС (поумолчанию)

адрес протокола соседнего хоста, т.е. адрес IPv4 или IPv6.

dev ИМЯ

имя интерфейса, через который доступен соседний хост.

lladdr LLАДРЕС

Адрес сетевого адаптера соседнего хоста. LLАДРЕС также может быть указано как null(пустой).

nud NUD_STATE

статус записи о соседнем хосте. nud - сокращение от 'Neighbour Unreachability Detection' (определение доступности соседа). Статус может получать одно из следующих значений:

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

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

reachable - запись о соседнем хосте действительна пока не произошёл таймаут при определении доступности хоста.

stale - запись о соседнем хосте действительна, но помечена как подозрительная. Это значение, переданное команде ip neigh не изменяет статус соседнего хоста, если он действителен и адрес не меняется в этой команде.

### ip neighbour delete - удалить запись о соседнем хосте
Эта команда удаляет запись о соседнем хосте из таблицы.

Параметры вызова такие же как и для ip neigh add за исключением игнорирования параметров lladdr и nud .

Внимание: Попытка удалить или изменить вручную запись noarp , созданную ядром может привести к непредсказуемым последствиям. Ядро может пытаться определить доступность адреса даже если у интерфейса указан флаг NOARP или адрес является адресом multicast или широковещательным.

### ip neighbour show - список записей о соседних хостах
Эта команда показывает таблицы с адресами соседних хостов.

to АДРЕС (поумолчанию)

префикс выбора адресов.

dev ИМЯ

показать соседние хосты, доступные только через указанный интерфейс.

unused

показать список соседних хостов, которые не используются.

nud NUD_STATE

показать соседние хосты только с указанным статусом. NUD_STATE является значением, указанным выше, или специальным значением all , которое означает все статусы. Эта опция может быть указана несколько раз. Если опция не указана, ip выводит все записи, кроме имеющих статус none и noarp.

### ip neighbour flush - очистить записи таблицы о соседних хостах
Эта команда очищает таблицы с записями о соседних хостах по указанным условиям.

Команда принимает те же параметры, что и show. Различия в том, как обрабатываются команды без аргументов и что статус по умолчанию не учитывает статусы permanent и noarp.

С опцией -statistics вывод команды становится более подробным. Начинают выводится количество удалённых записей и количество вызова команды flush. Если опция указана дважды, ip neigh flush также выводит содержимое удалённых записей.

## ip route - управление таблицей маршрутизации
Управление записями маршрутов в таблице маршрутизации ядра.

Типы маршрутов:

unicast - маршрут описывает действующий путь к хостам сети.

unreachable - хосты по маршруту недоступны. Пакеты отбрасываются и возвращаются сообщения ICMP host unreachable . Локальные отправители получают ошибку EHOSTUNREACH .

blackhole - хосты по маршруту недоступны. Пакеты отбрасываются без уведомления об ошибке. Локальные отправители получают ошибку EINVAL .

prohibit - хосты по маршруту недоступны. Пакеты отбрасываются и возвращаются сообщения ICMP communication administratively prohibited . Локальные отправители получают ошибку EACCES .

local - целевые хосты соответствуют текущему хосту. Пакеты доставляются локально.

broadcast - целевые хосты являются широковещательным адресом. Пакеты отправляются как широковещательные запросы.

throw - специальный контролируемый маршрут, действующий оп определённым правилам. При отправке по этому маршруту система притворяется, что маршрут не найден. Без правил маршрутизации это эквивалентно отсутствию маршрута в таблице маршрутизации. Пакеты отбрасываются и возвращаются сообщения ICMP net unreachable . Локальные отправители получают ошибку EHOSTUNREACH .

nat - специальная таблица NAT. Целевые хосты по этому маршруту определяются как фиктивные (или внешние) адреса, для которых необходимо преобразование на реальные (или внутренние) адреса перед пересылкой. Транслируемые адреса указываются в дополнительном параметре. Внимание: Маршрут NAT не поддерживается в ядрах Linux 2.6.

via.

anycast - не реализовано целевые хосты имеют адреса anycast привязанные к этому хосту. Это эквивалент маршруту local с одним отличием: такие адреса признаются недействительными, если используются как адрес источника пакета.

multicast - специальный тип, используемый для маршрутизации multicast. В обычных таблицах маршрутизации не присутствует.

Таблицы маршрутизации: Ядра Linux-2.x могут хранить информацию о маршрутизации в нескольких таблицах маршрутизации, имеющих номер в диапазоне от 1 до 255 или имя из файла /etc/iproute2/rt_tables главную (main) таблицу (ID 254) и ядро использует только эту таблицу при определении маршрутов.

В действительности, всегда существует ещё одна таблица, которая невидима, но даже более важна. Это локальная (local) таблица (ID 255). Эта таблица состоит из маршрутов для локальных и широковещательных адресов. Ядро поддерживает эту таблицу автоматически и системному администратору обычно нет необходимости изменять её и даже просто смотреть..

Поддержка нескольких таблиц маршрутизации начинается при использовании policy routing (маршрутизация по правилам).

### ip route replace - добавить или изменить маршрут
to ТИП ПРЕФИКС (поумолчанию)

префикс назначения маршрута. Если параметр ТИП опущен, ip подразумевает тип unicast. Прочие значения ТИПА были перечислены выше. ПРЕФИКС является адресом IP или IPv6 опционально дополненном слешем и маской подсети. Если маска подсети пропущена, ip использует маршрут для всех адресов. Есть предопределённое значение ПРЕФИКС default - который эквивалентен для IP 0/0 или для IPv6 ::/0.

tos TOS

dsfield TOS

значение типа услуги (Type Of Service, TOS). Это поле не имеет связанной маски. Сравниваются TOS маршрута и пакета. Если они не равны, пакет соответствует маршруту в нулевым TOS. TOS является 8-битным шестнадцатеричным числом или идентификатором из /etc/iproute2/rt_dsfield.

metric ЧИСЛО

preference ЧИСЛО

значение предпочтения маршрута. ЧИСЛО - обычное 32-битное число.

table TABLEID

таблица, в которую будет добавлен маршрут. TABLEID может быть числом или идентификатором из файла /etc/iproute2/rt_tables. Если параметр опущен, ip подразумевает главную (main) таблицу, за исключением маршрутов local , broadcast и nat, которые добавляются в локальную (local) таблицу по умолчанию.

dev ИМЯ

имя интерфейса.

via АДРЕС

адрес следующего узла. Значение этого поля зависит от типа маршрутизации. Для обычных маршрутов unicast означает адрес следующего узла или, в случае прямого маршрута в режиме совместимости BSD, локальный адрес интерфейса. Для маршрутов NAT - первый адрес блока транслируемых IP-адресов.

src АДРЕС

адрес источника.

realm REALMID

область (realm), которой назначен маршрут. REALMID может быть числом или идентификатором из файла /etc/iproute2/rt_realms.

mtu MTU

mtu lock MTU

MTU маршрута. Если не используется модификатор lock , MTU определяется ядром. Если используется модификатор lock MTU не определяется автоматически, все пакеты отправляются без бита DF для IPv4 или фрагментированного MTU для IPv6.

window ЧИСЛО

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

rtt ЧИСЛО

начальная оценка RTT ('Round Trip Time').

rttvar ЧИСЛО (2.3.15+ только)

начальное расхождение оценки RTT.

ssthresh ЧИСЛО (2.3.15+ только)

оценка начального порога.

cwnd ЧИСЛО (2.3.15+ только)

смычка для перегруженного окна. Игнорируется, если не используется модификатор lock .

advmss ЧИСЛО (2.3.15+ только)

MSS ('Maximal Segment Size' - максимальный размер сегмента) для уведомления целевых хостов, с которыми установлены соединения. Если значение не указано, Linux использует значение по умолчанию, вычисляемое из MTU следующего узла (если путь к хостам асимметричен, значение может быть определено неверно).

reordering ЧИСЛО (2.3.15+ только)

максимальная смена порядка в пути. Если не указано, Linux использует значение sysctl из файла net/ipv4/tcp_reordering.

nexthop NEXTHOP

следующий узел (nexthop) в маршруте со множеством путей (multipath route). NEXTHOP представляет собой составное выражение с собственным синтаксисом похожим на синтаксис команд верхнего уровня:

via АДРЕС - следующий узел.

dev ИМЯ - интерфейс исходящего трафика.

weight ЧИСЛО - вес для элемента в маршруте со множеством путей, отражающий связанный канал или качество.

scope SCOPE_VAL

диапазон целевых хостов по префиксу маршрута. SCOPE_VAL может быть числом или строкой из файла /etc/iproute2/rt_scopes. Если параметр опущен, ip подразумевает диапазон global для всех маршрутов unicast , диапазон link для прямых маршрутов unicast и broadcast и диапазон host для локальных маршрутов.

protocol RTPROTO

протокол маршрутизации. RTPROTO может быть числом или строкой из файла /etc/iproute2/rt_protos. Если идентификатор протокола маршрутизации не указан, ip подразумевает протокол boot . Некоторые значения протоколов имеют фиксированную интерпретацию:

redirect - маршрут устанавливается перенаправлением ICMP.

kernel - маршрут устанавливается ядром при автоконфигурации.

boot - маршрут устанавливается при загрузке. Когда стартует демон маршрутизации, всем маршрутам назначается этот протокол.

static - маршрут устанавливается администратором для перезаписи динамической маршрутизации. Демон маршрутизации предпочитает такие маршруты и рекомендует использовать их.

ra - маршрут устанавливается протоколом Router Discovery.

Значения этого параметра не резервируются и администратор вправе назначить (или не назначать) метки протоколов.

onlink

симулировать прямое подключение следующего узла к этому интерфейсу, даже если он не находится в этой сети.

equalize

позволять пакетам распределяться случайным образом по маршруту с несколькими путями. Без этого модификатора маршрут будет зафиксирован на единственный следующий узел. equalize работает только если ядро пропатчено.

### ip route delete - удалить маршрут
ip route del имеет те же параметры, что и ip route add, но их значение несколько отличается.

Ключевые значения (to, tos, preference и table) выбирают удаляемый маршрут. Если указаны дополнительные параметры, ip проверяет совпадение указанных атрибутов для выявления удаляемого маршрута. Если совпадений не найдено, ip route del не удаляет ни одного маршрута.

### ip route show - вывод списка маршрутов
команда показывает содержимое таблиц маршрутизации или маршруты, удовлетворяющие заданным критериям.

to СЕЛЕКТОР (поумолчанию)

показывать маршруты только для заданного диапазона целевых хостов. СЕЛЕКТОР состоит из опционального модификатора (root, match или exact) и префикса (маски подсети). root ПРЕФИКС выбирает маршруты с префиксом не меньше указанного ПРЕФИКСА. Т.е. root 0/0 выведет всю таблицу маршрутизации. match ПРЕФИКС выбирает маршруты с префиксом не больше указанного ПРЕФИКСА. Т.е. match 10.0/16 выведет маршруты 10.0/16, 10/8 и 0/0, но не включая 10.1/16 и 10.0.0/24. И exact ПРЕФИКС (или просто ПРЕФИКС) выведет маршруты точно с указанным префиксом. Если модификаторы и селектор не указаны, ip подразумевает root 0/0 и выводит всю таблицу маршрутизации.

tos TOS

dsfield TOS показать маршруты с заданным TOS.

table TABLEID

показать содержимое только заданной таблицы. По умолчанию выводится таблица main (главная) "." TABLEID может быть номером таблицы или одним из следующих ключевых слов:

all - вывести все таблицы.

cache - вывести кэш маршрутизации.

cloned

cached

вывод клонированных маршрутов, т.е. маршрутов, которые динамически порождены из других маршрутов с связи с изменением некоторых атрибутов (например, MTU). Практически это эквивалент table cache.

from СЕЛЕКТОР

имеет тот же синтаксис, что и to, но привязывается к адресу источника, а не получателя. Опция from работает только с клонированными маршрутами.

protocol RTPROTO

вывести маршруты только с указанным протоколом.

scope SCOPE_VAL

вывести маршруты только с указанным диапазоном.

type ТИП

вывести маршруты только с указанным ТИПОМ.

dev ИМЯ

вывести маршруты, связанные только с указанным интерфейсом.

via ПРЕФИКС

вывести маршруты, связанные только со следующим узлом, указанным ПРЕФИКСОМ.

src ПРЕФИКС

вывести маршруты только для указанного адреса источника, указанного ПРЕФИКСОМ.

realm REALMID

realms FROMREALM/TOREALM

вывести маршруты только с указанной одной или несколькими областями (realm).

### ip route flush - очистка таблицы маршрутизации
команда очищает маршруты по заданным критериям.

Аргументы для этой команды и их значение такое же, как и для ip route show, но маршруты не выводятся, а удаляются. Различие только в запуске без аргументов: show выводит всё содержимое таблицы маршрутизации, а flush выводит окно справки.

С опцией -statistics вывод команды становится более подробным. Начинают выводится количество удалённых маршрутов и количество вызова команды flush. Если опция указана дважды, ip route flush также выводит содержимое удалённых маршрутов в формате, описанном в предыдущем разделе.

### ip route get - вывести один маршрут
команда определяет единственный маршрут, удовлетворяющий заданным критериям и выводит его содержимое в том виде, в котором он представлен в ядре.

to АДРЕС (поумолчанию)

адрес получателя.

from АДРЕС

адрес отправителя.

tos TOS

dsfield TOS

тип услуги (Type Of Service).

iif ИМЯ

интерфейс, из которого ожидается получение пакета.

oif ИМЯ

интерфейс, через который будет отправлен пакет.

connected

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

Эта операция не эквивалентна команде ip route show. show выводит существующие маршруты. get проверяет их и создаёт новые клоны, если необходимо. Обращаем внимание на то, что get является эквивалентом отправки пакета по маршруту. Если опции iif не указана, ядро создаёт маршрут для исходящих пакетов указанным целевым хостам. Это эквивалент пингованию назначения с последующим ip route ls cache, однако, реально пакеты не отправляются. С опцией iif ядро симулирует получение пакета с указанного интерфейса и ищет маршрут для дальнейшей пересылки пакета.

## ip rule - управление правилами маршрутизации
Правила маршрутизации используются алгоритмом выбора маршрута.

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

В некоторых случаях необходимо маршрутизировать пакет в зависимости не только от адреса получателя, но также от других полей пакета: адреса отправителя, протокола IP, портов и даже стоимости пакета. Такой подход называется

Для решения этой задачи база данных маршрутизации, основанная на адресе получателя, заменяется на базу данных маршрутизации, основанную на правилах ('routing policy database', RPDB), которая выбирает маршрут на основании выполнения определённого набора правил.

Каждое правило маршрутизации состоит из селектора и действия. RPDB сканируется по порядку увеличения приоритета. Селектор каждого правила определяется значением параметра: адреса отправителя, адреса получателя, интерфейса входящего трафика, TOS, fwmark, и, если пакет соответствует условиям правила, производится указанное действие. В случае успешного выполнения действия (выбор маршрута или индикация сбоя), поиск по базе прекращается. В противном случае, программа RPDB продолжает проверку следующего правила.

Семантически действие заключается в выборе следующего узла и интерфейса исходящего трафика.

При запуске ядра в базу данных RPDB заносятся три правила:

1.

Приоритет: 0, селектор: все пакеты, действие: поиск по таблице маршрутизации local (локальной) (ID 255). Таблица local является специальной таблицей маршрутизации, содержащей высокоприоритетные маршруты для локальных и широковещательных адресов. Правило 0 специальное. Оно не может быть удалено или заменено.

2.

Приоритет: 32766, селектор: все пакеты, действие: поиск по таблице маршрутизации main (главной) (ID 254). Таблица main является обычной таблицей маршрутизации, содержащей все маршруты, для которых правила не указаны. Это правило может быть удалено или заменено другим правилом.

3.

Приоритет: 32767, селектор: все пакеты, действие: поиск по таблице default (по умолчанию) (ID 253). Таблица default пустая. Она зарезервирована для некоторых действий в случае, если пакет не удовлетворяет предыдущим правилам. Это правило также может быть удалено.

Каждая запись RPDB имеет дополнительные атрибуты. Например, каждое правило имеет указатель на некоторую таблицу маршрутизации. NAT и правила маскировки (masquerading) имеют атрибут для выбора нового IP-адреса для трансляции или маскировки. Кроме того, правила имеют некоторые необязательные атрибуты, которые есть у маршрутов, называемые областями (realms). Эти атрибуты не заменяют атрибуты, указанные в таблицах маршрутизации. Они используется в случае, если эти атрибуты не указаны для маршрута.

База данных RPDB может содержать правила следующих типов:

unicast - правило предписывает возвратить маршрут из таблицы маршрутизации.

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

unreachable - правило предписывает генерировать ошибку 'Network is unreachable' (сеть

недоступна).

prohibit - правило предписывает генерировать ошибку 'Communication is administratively prohibited' (связь запрещена административно).

nat - правило предписывает транслировать адрес отправителя в другое значение.

### ip rule delete - удалить правило
type ТИП (поумолчанию)

тип правила. Список доступных типов описан в предыдущем разделе.

from ПРЕФИКС

выбор отправителя в соответствии с указанным ПРЕФИКСОМ.

to ПРЕФИКС

выбор получателя в соответствии с указанным ПРЕФИКСОМ.

iif ИМЯ

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

tos TOS

dsfield TOS

выбор пакета с указанным TOS.

fwmark MARK

выбор пакета с указанным значением fwmark .

priority PREFERENCE

приоритет правила. Каждое правило должно иметь уникальное значение приоритета.

table TABLEID

идентификатор таблицы маршрутизации для поиска маршрута при совпадении с условиями правила.

realms FROM/TO

Выбираемые области при при совпадении с условиями правила и успешном поиске в таблице маршрутизации. Область TO используется только если маршрут не соответствует ни одной области.

nat АДРЕС

Начало блога транслируемых адресов отправителя. Значение АДРЕСА может быть первым адресом в блоке адресов NAT (в маршрутах NAT) или локальным адресом хоста (или даже нулём). В последнем случае маршрутизатор не транслирует пакеты, а маскирует их под этот адрес. Внимание: Изменения в RPDB, сделанными этими командами, происходят не сразу. Они вступают в силу после того, как скрипт закончит вносить все изменения и очистить кэш маршрутизации командой ip route flush cache.

### ip rule flush - также вывести все удалённые правила.
У этой команды нет аргументов.

### ip rule show - вывести список правил
У этой команды нет аргументов.

## ip maddress - управление адресами multicast
maddress адрес multicast.

### ip maddress show - список адресов multicast
dev ИМЯ (поумолчанию)

имя интерфейса.

### ip maddress delete - удалить адрес multicast
эти команды назначают и убирают статический адрес multicast на интерфейс. Помните, что невозможно объединить группы multicast протокола статически. Эти команды только управляют адресами на уровне канала.

address LLАДРЕС (поумолчанию)

адрес multicast не уровне канала.

dev ИМЯ

интерфейс, которому назначается/убирается адрес multicast.

## ip mroute - управление кэшем маршрутизации multicast
mroute объекты записей кэша маршрутизации multicast, созданные демоном mrouting, работающим на пользовательском уровне (например, pimd или mrouted ).

В связи с ограничениями текущего интерфейса к движку маршрутизации multicast, невозможно изменить mroute административно, можно только показать. Это ограничение будет преодолено в будущем.

### ip mroute show - список записей кэша mroute
to ПРЕФИКС (поумолчанию)

выводить только адреса multicast получателя с заданным префиксом.

iif ИМЯ

интерфейс, с которого приходят пакеты multicast.

from ПРЕФИКС

выводить только адреса multicast отправителя с заданным префиксом.

## ip tunnel - настройка туннеля
tunnel туннель, инкапсулирующий пакеты в пакеты IPv4 и отправляющих их по сети IP.

### ip tunnel delete - уничтожить туннель
name ИМЯ (поумолчанию)

интерфейс для организации туннеля.

mode MODE

режим туннеля. Доступны три режима: ipip, sit и gre.

remote АДРЕС

адрес удалённого выхода туннеля.

local АДРЕС

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

ttl N

установить фиксированный TTL N для туннелируемых пакетов. N - число в диапазоне 1-255. 0 - специальное значение, что пакеты наследуют значение TTL. Значение по умолчанию: inherit.

tos T

dsfield T

установить фиксированный TOS T для туннелируемых пакетов. Значение по умолчанию: inherit.

dev ИМЯ

привязать туннель к интерфейсу ИМЯ так, что туннелируемые пакеты будут направляться только через этот интерфейс и не смогут отправится через другой интерфейс при смене маршрута к целевому хосту.

nopmtudisc

отключить Path MTU Discovery для туннеля. По умолчанию включено. Помните, что фиксированный ttl несовместим с этой опцией: туннелирование с фиксированным ttl всегда осуществляется с pmtu discovery.

key K

ikey K

okey K

( только туннели GRE ) использование ключевого GRE с ключом K. K может быть числом или четвёркой чисел как адрес IP. Параметр key устанавливает ключ для использования в обоих направлениях. Параметры ikey и okey устанавливают различные ключи для входящего и исходящего трафика.

csum, icsum, ocsum

( только туннели GRE ) генерируют или проверяют контрольную сумму для туннелируемых пакетов. Флаг ocsum вычисляет контрольную сумму для исходящих пакетов. Флаг icsum требуют, чтобы все входящие пакеты имели правильную контрольную сумму. Флаг csum является комбинацией флагов icsum ocsum.

seq, iseq, oseq

( только туннели GRE ) сериализуют пакеты. Флаг oseq включает последовательность исходящих пакетов. Флаг iseq требует чтобы все входящие пакеты были сериализованы. Флаг seq является комбинацией флагов iseq oseq. Пока это не работает. Не используйте эти флаги.

### ip tunnel show - список туннелей
Команда не требует дополнительных параметров.

## ip monitor и rtmon - мониторинг состояния
Программа ip может постоянно отслеживать состояние интерфейсов, адресов и маршрутов. Эта опция имеет слегка отличающийся формат, а именно должна идти первой в списке параметров с указанием отслеживаемого объекта:

ip monitor [ all | СПИСОК_ОБЪЕКТОВ ]

СПИСОК_ОБЪЕКТОВ содержит типы объектов, которые нужно отслеживать. Он может содержать типы link, address и route. Если не указан параметр file , ip открывает сокет RTNETLINK, прослушивает его и выводит информацию в формате, описанному выше.

Если указано имя файла, прослушивание сокета RTNETLINK не осуществляется, а выводятся сообщения RTNETLINK, сохранённые в файле в бинарном формате. Такой файл журнала может быть создан командой rtmon . Эта программа имеет такой же синтаксис, как и ip monitor. В идеале программа rtmon должна быть запущена перед первой командой настройки сети. Например, если вы вставите:

rtmon file /var/log/rtmon.log

в скрипт загрузки, вы можете увидеть всю историю работы сетевой подсистемы.

Конечно, можно запустить rtmon в любое время. В таком случае журнал будет содержать только события, произошедшие с момента запуска программы.

## ИСТОРИЯ
ip была написана Алексеем Кузнецовым и добавлена в Linux 2.2.

## СМ. ТАКЖЕ
tc(8)

IP Command reference ip-cref.ps

IP tunnels ip-cref.ps

## АВТОР
Оригинальное руководство man написано Михаилом Литваком (Michail Litvak) <mci@owl.openwall.com>

## ПЕРЕВОД
Андрей Черепанов <cas@altlinux.ru> 2007


package: man-pages-ru-extra

title: ip6tables(8)

text:
# ip6tables(8)

## ИМЯ
iptables - инструмент администрирования фильтра пакетов IPv6

## ОБЗОР
ip6tables [-t таблица] -[AD] цепочка описание-правил [опции]

iptables [-t таблица] -I цепочка [номер-правила] описание-правил [опции]

ip6tables [-t таблица] -R цепочка номер-правила описание-правил [опции]

ip6tables [-t таблица] -D цепочка номер-правила [опции]

ip6tables [-t таблица] -[LFZ] [цепочка] [опции]

ip6tables [-t таблица] -N цепочка

ip6tables [-t таблица] -X [цепочка]

ip6tables [-t таблица] -P цепочка цель [опции]

ip6tables [-t таблица] -E старое-имя-цепочки новое-имя-цепочки

## ОПИСАНИЕ
ip6tables используется для установки, настройки и исследования таблиц правил фильтрации IPv6-пакетов в ядре Linux.

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

## ЦЕЛИ
Правило брандмауэра (межсетевого экрана) определяет критерии для пакета и цели. Если пакет не попадает под действие правила, тестируется следующее правило в цепочке; если попадает, - тестируется правило указанное в цели, которая может быть именем новой цепочки или одно из специальных целей: ACCEPT, DROP, QUEUE или RETURN.

ACCEPT означает принять (пропустить далее) пакет DROP означает проигнорировать (отбросить) пакет. QUEUE означает передать пакет в адресное пространство пользователя (получение пакета пользовательским процессом зависит от обработчика очереди; в ядрах 2.4.x и 2.6.x до 2.6.13 использовался обработчик ip_queue; в ядрах начиная с 2.6.14 появился дополнительный обработчик nfnetlink_queue; в этом случае пакеты с целью QUEUE отправляются очереди номер 0; см. также цель NFQUEUE ниже). RETURN означает остановить применение правил этой цепочки и передать пакет следующему правилу предыдущей (вызывающей) цепочки. Если достигается конец встроенной (предопределённой) цепочки или в ней к пакету применяется правило с целью RETURN, то окончательное действие над пакетом (цель) определяется стратегией (политикой) цепочки.

## ТАБЛИЦЫ
Существует две независимых таблицы (какие именно таблицы присутствуют в данный момент -- зависит от конфигурации ядра и наличия его модулей), поскольку NAT ещё не реализована.

-t, --table таблица

Задаёт таблицу, к которой будет применена команда. Если ядро скомпилировано с автоматической загрузкой модулей, то, при необходимости, будет загружен модуль, соответствующий таблице. Итак, таблицы:

filter:

Таблица используемая по-умолчанию (если опция -t не задана). Эта таблица содержит предопределённые цепочки INPUT (для входящих пакетов - направленных данному компьютеру), FORWARD (для проходящих пакетов) и OUTPUT (для исходящих пакетов - сгенерированных в локальной системе).

mangle:

Эта таблица используется для специальных изменений пакетов. Она содержала две предопределённые цепочки в ядрах до версии 2.4.17: PREROUTING (для изменения входящих пакетов до их перенаправления-маршрутизации) и OUTPUT (для изменения локально сгенерированных пакетов перед их маршрутизацией). Начиная с ядер версии 2.4.18, включены ещё три другие предопределённые цепочки: INPUT (для изменения входящих пакетов), FORWARD (для изменения проходящих пакетов) и POSTROUTING (для изменения исходящих пакетов).

raw:

Используется преимущественно для создания исключений в слежении за соединениями совместно с целью NOTRACK. Для неё в netfilter сделаны специальные вставки имеющие высший приоритет и поэтому вызываемые до nf_conntrack и всех других таблиц. В таблице имеются следующие предопределённые цепочки: PREROUTING (для пакетов приходящих из сетевых интерфейсов) OUTPUT (для пакетов генерируемых локальными процессами)

## ОПЦИИ
Опции для ip6tables могут быть разделены на несколько групп.

### КОМАНДЫ
Эти опции определяют действие, выполняемое в данном сеансе работы программы. В командной строке может быть указана только одна из этих опций, если противоположное явно не указано в описании. Длинные команды можно сокращать до первых букв, но их должно быть достаточно, чтобы программа могла однозначно идентифицировать команду.

-A, --append цепочка определение-правила

Добавить одно или несколько правил в конец указанной цепочки. Если имя источника и/или стока (назначения) соответствует нескольким адресам, правило будет добавлено для всех возможных комбинаций адресов.

-D, --delete цепочка определение-правила

-D, --delete цепочка номер-правила

Удалить одно или несколько правил из указанной цепочки. Существует две версии этой команды: правило может быть указано через его номер в цепочке (счёт первого правила начинается с 1) или через соответствие правилу.

-I, --insert цепочка [номер-правила]

определение-правила" В указанной цепочке вставить одно или более правил в позицию, заданную номером. Так, если указан номер 1, правило или правила будут вставлены в начало цепочки. Это подразумеваемая позиция, если номер не указан.

-R, --replace цепочка номер-правила определение-правила

Заменить правило в указанной цепочке. Если имена источника и/или стока соответствуют нескольким адресам, команда не будет выполнена с сообщением об ошибке. Правила нумеруются с 1.

-L, --list [цепочка]

Показать все правила в выбранной цепочке. Если цепочка не указана, то команда применяется ко всем цепочкам. Как и всякая другая команда ip6tables, она воздействует на указанную таблицу (filter, если таблица не указана), к примеру следующая команда выводит список правил таблицы mangle:

```
 ip6tables -t mangle -n -L
```

Обратите внимание на опцию -n которая часто используется для отключения (медленного) определения имён DNS. Также можно указать опцию -Z -Z (zero), в этом случае автоматически произойдёт перечисление правил цепочки и обнуление её счётчиков. Вид результата зависит от других аргументов. Самый детальный результат может быть получен так:

```
 ip6tables -L -v
```

-F, --flush [цепочка]

Сбросить выбранную цепочку (все цепочки в таблице, если ни одна не указана). Это эквивалентно удалению по одному всех правил.

-Z, --zero [цепочка]

Обнулить счётчики количества пакетов и байтов во всех или указанной цепочке. Можно также указать -L, --list чтобы отобразить значения счётчиков непосредственно перед их обнулением (см. выше).

-N, --new-chain цепочка

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

-X, --delete-chain [цепочка]

Удалить цепочку, определённую пользователем. При этом не должно быть ссылок на удаляемую цепочку. Если такие ссылки есть, необходимо сначала удалить или изменить правила, ссылающиеся на удаляемую цепочку. Если цепочка не указана, из таблицы будут удалены все цепочки кроме встроенных.

-P, --policy цепочка цель

Определить стратегию для цепочки. Допустимые цели описаны в разделе ЦЕЛИ настоящего документа. Стратегия может быть задана только для встроенных цепочек и не может быть задана для цепочек определённых пользователем.

-E, --rename-chain старое-имя новое-имя

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

-h

Подсказка. Выдаёт очень короткое описание синтаксиса команд.

### ПАРАМЕТРЫ
Следующие параметры предназначены для формирования правил (используются в командах add, delete, insert, replace и append).

-p, --protocol [!] протокол

Сетевой протокол применяемого правила или проверяемого пакета. Допустимые значения: tcp, udp, icmpv6, esp, all. Также протоколы можно указывать в виде числа (соответствующего одному из перечисленных или иному протоколу). Названия протоколов также можно брать из файла /etc/protocols. Расширения заголовков IPv6, кроме esp, запрещены. esp и ipv6-nonext можно использовать на ядрах 2.6.11 и выше. Знак "!" перед названием протокола инвертирует результат теста. Число 0 эквивалентно all. Значение all соответствует всем протоколами и используется если данный параметр опущен.

-s, --source [!] адрес[/маска]

Адрес источника. Адресом может быть имя хоста (не рекомендуем указывать имена хостов, разрешаемые через запросы к удалённым DNS), сетевой IPv6-адрес (либо диапазон адресов - при указании маски), или одиночный IPv6-адрес (сетевые имена не поддерживаются на данный момент). Маской может быть сетевая маска или число, соответствующее количеству определяющих разрядов в сетевой маске. Например, маска 64 эквивалентна ffff:ffff:ffff:ffff:0000:0000:0000:0000. Знак "!" перед спецификацией адреса инвертирует результат теста. Опция --src --src является псевдонимом данного параметра.

-d, --destination [!] адрес[/маска]

Адрес цели. Синтаксис аналогичен синтаксису параметра -s Опция --dst является псевдонимом данного параметра.

-j, --jump цель

Определяет цель правила; т.е., что делать, когда пакет попадает под условия правила. Целью может быть цепочка определённая пользователем (отличная от цепочки правила), одна из встроенных целей, определяющая окончательное действие над пакетом, или расширение (см. раздел РАСШИРЕНИЯ далее). Если эта опция не задана в правиле, то правило не будет применяться, но счётчик количества применений правила будет увеличен.

-i, --in-interface [!] имя

Имя интерфейса, через который должен быть получен обрабатываемый пакет (только для пакетов входящих в цепочки INPUT, и PREROUTING ). Использование аргумента "!" перед именем интерфейса инвертирует результат теста. Если имя интерфейса оканчивается на "+", то это означает любой интерфейс, имя которого начинается с указанного имени. Если эта опция опущена, при обработке пакета интерфейс, с которого он был получен, не учитывается.

-o, --out-interface [!] имя

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

фрагментам фрагментированного пакета.

номера портов или тип ICMP. первому фрагменту или к нефрагментированному пакету. -c, --set-counters число-пакетов число-байт Позволяет инициализировать в правиле счётчики пакетов и байтов (при выполнении операций INSERT, APPEND, REPLACE ).

### ПРОЧИЕ ОПЦИИ
Имеются следующие дополнительные опции:

-v, --verbose

Увеличить подробность сообщений. При указании её с командой list будет выводиться имя интерфейса, параметры правил и маски TOS. Также выводятся счётчики ("K", "M", "G" соответствуют множителям 1 000, 1 000 000 и 1 000 000 000; см. -x ). Если ключ используется с командами --append, --insert, --delete или --replace, то будет выведен подробный отчёт о произведенной операции.

-n, --numeric

Выводить IP-адреса и номера портов в числовом виде предотвращая попытки преобразовать их в символические имена.

-x, --exact

Для всех чисел в выходных данных выводить их точные значения без округления и без использования множителей K, M, G. Этот ключ используется только с командой -L и не применим с другими командами.

--line-numbers

Режим вывода номеров строк при отображении списка правил командой --list. Номер строки соответствует позиции правила в цепочке.

--modprobe=команда

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

## РАСШИРЕНИЯ МЕХАНИЗМА ТЕСТИРОВАНИЯ
Возможности тестирования пакетов расширяются через модули. Последние загружаются либо автоматически при указании -p / --protocol , либо явно при указании имени модуля через -m / --match . После загрузки модуля становятся доступными дополнительные опции командной строки в зависимости от модуля. Справку по новым ключам можно получить с помощью ключа -h / --help . Допустимо указание нескольких модулей. Результаты тестирования, выдаваемые модулем, обычно можно инвертировать, указав ! перед его именем. В базовую поставку входят следующие модули.

### ah
Этот модуль тестирует по параметрам аутентификационного заголовка пакетов IPsec.

--ahspi [!] spi[:spi]

Последовательный периферийный интерфейс (SPI).

--ahlen [!] размер

Общий размер заголовка в октетах (байтах).

--ahres

Пропускать пакеты если зарезервированное поле заполнено нулями.

### condition
Результат теста совпадает со значением в соответствующем файле /proc - 0 или 1.

--condition [!] имя-файла

Выдать результат теста из /proc/net/ip6t_condition/имя-файла.

### dst
Фильтрует пакеты по параметрам заголовка "Destination Options"

--dst-len [!] размер

Общий размер заголовка в октетах.

--dst-opts тип[:размер][,тип[:размер]...]

Номер опции и размер данных в октетах.

### esp
Служит для проверки значений SPI в заголовках ESP пакетов IPSec.

--espspi [!] spi[:spi]

### eui64
Фильтрует по компоненту EUI-64 адреса IPv6 настроенного автоматически без сохранения состояния. Модуль производит сравнение EUI-64 полученного из исходного MAC-адреса Ehternet-фрейма с младшими 64 разрядами IPv6-адреса источника. Разряд "Universal/Local" не учитывается. Модуль не пропускает другие фреймы на уровне канала связи и может использоваться только в цепочках PREROUTING, INPUT, FORWARD.

### frag
Фильтрует по параметрам заголовка "Fragment".

--fragid [!] идентификатор[:идентификатор]

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

--fraglen [!] размер

Недействительно для ядер 2.6.10 и выше. Размер заголовка Fragment фиксирован и ключ не имеет смысла.

--fragres

Пропускать пакеты, если зарезервированное поле заполнено нулями.

--fragfirst

Пропускать при первом фрагменте.

[--fragmore]

Пропускать если фрагментов несколько.

[--fraglast]

Пропускать при последнем фрагменте.

### fuzzy
Результат теста зависит от скорости доставки пакетов по методу FLC (Fuzzy Logic Controller): пока скорость доставки пакетов не достигает нижнего порога, условие никогда не будет выполняться; при скорости в диапазоне между нижним и верхним порогами частота выполнения условий будет расти пропорционально скорости доставки пакетов; после превышения верхнего порога скорости частота выполнения условий достигнет максимального значения.

--lower-limit скорость

Нижний порог (пакетов в секунду).

--upper-limit скорость

Верхний порог (пакетов в секунду).

### hbh
Фильтрует по параметрам заголовка "Hop-by-Hop"

--hbh-len [!] размер

Общий размер заголовка в октетах.

--hbh-opts тип[:размер][,тип[:размер]...]

Номер опции и размер данных в октетах.

### hl
Фильтрует по полю "Hop Limit" заголовка IPv6.

--hl-eq [!] значение

Пропускать пакеты с Hop Limit равным указанному значению.

--hl-lt значение

Пропускать пакеты с Hop Limit меньше указанного значения.

--hl-gt значение

Пропускать пакеты с Hop Limit больше указанного значения.

### icmp6
Это расширение загружается при указании `--protocol ipv6-icmp' или `--protocol icmpv6'

--icmpv6-type [!] тип[/код]|имя-типа

Тип ICMPv6 в виде числа или имени в соответствии с

```
 ip6tables -p ipv6-icmp -h
```

### ipv6header
Фильтрует по заголовкам расширений IPv6 и/или заголовку более высокого уровня.

--header [!] заголовок[,заголовок...]

Пропускать пакеты с набором заголовком точно равным указанному. Заголовки встроенные в ESP не учитываются. В качестве заголовка можно указывать: hop|hop-by-hop (заголовок "Hop-by-Hop Options"), dst (заголовок "Destination Options header"), route (заголовок "Routing header"), frag (заголовок "Fragment header"), auth (заголовок "Authentication header"), esp (заголовок "Encapsulating Security Payload"), none (заголовок "No Next header") - соответствующий 59 в поле Next Header заголовка IPv6 или любого заголовка расширений IPv6, - proto - соответствующий любому заголовку протокола более верхнего уровня. Возможно использование имён протоколов в соответствии с /etc/protocols и номеров. 255 соответствует proto.

[--soft]

Смягчить условия: пропускать пакет если в нём присутствуют _как минимум_ указанные заголовки.

### length
Позволяет проверять размеры пакетов (точно или по диапазону). Заголовок IPv6 не считается.

--length [!] размер[:размер]

### limit
Этот модуль выдаёт положительный результат с фиксированной частотой. Правило использующее это расширение будет выполняться до момента достижения лимита (и наоборот, если указан "!"). Может использоваться вместе с целью LOG для получения ограниченного протоколирования.

--limit частота

Максимальная средняя частота положительных результатов. После числа можно указывать единицы: `/second', `/minute', `/hour', `/day'; значение по умолчанию - 3/час.

--limit-burst number

Ограничение на исходное число пропускаемых пакетов: это число увеличивается на единицу каждый раз когда ограничение на частоту положительных результатов не достигается. Это происходит столько раз, сколько указано в данном параметре. Значение по умолчанию - 5.

### mac
--mac-source [!] адрес

Выполнять тестирование по MAC-адресу отправителя. Адрес должен указываться в форме XX:XX:XX:XX:XX:XX. Использование данного условия имеет смысл только при получении пакетов от устройства Ethernet, проходящих одну из цепочек PREROUTING, FORWARD и INPUT .

### mark
Тестирует по полю mark. Это специальное поле, которое существует только в области памяти ядра и связывается с конкретным пакетом. (для установки этого поля используется цель MARK , описанная ниже).

--mark число[/маска]

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

### multiport
Позволяет указывать в тексте правила несколько (до 15) портов и диапазонов портов. Диапазон портов (порт:порт) считается за два порта (в отношении ограничения в 15). Используется только вместе с -p tcp или -p udp.

--source-ports [!] порт[,порт[,порт:порт...]]

Пропускать пакеты с исходным портом равным одному из указанных. Краткая форма ключа - --sports .

--destination-ports [!] порт[,порт[,порт:порт...]]

Пропускать пакеты с портом назначения равным одному из указанных. Краткая форма ключа - --dports .

--ports [!] порт[,порт[,порт:порт...]]

Пропускать пакеты с одинаковыми исходным и портом назначения и равными одному из указанных.

### nth
Пропускает каждый `n'-ый пакет

--every n

Пропускать каждый n-ый пакет.

[--counter номер]

Использовать внутренний счётчик с указанным номером. Значение по умолчанию - `0'.

[--start число]

Начальное значение счётчика (вместо стандартного `0'). Обычно между `0' и `n'-1.

[--packet k]

Пропускать k-ый пакет из набора n пакетов. Соответственно, значение должно быть между `0' и `n'-1.

### owner
Позволяет фильтровать по параметрам "владельца" пакета. Этот критерий можно использовать только в цепочке OUTPUT , но даже в этом случае могут попадаться пакеты без владельца (например, ответы ISMP ping), и такие пакеты не будут пропускаться. Имеет статус экспериментального.

--uid-owner идентификатор-пользователя

Пропускать пакеты генерируемые процессами работающими от указанного пользователя.

--gid-owner идентификатор-группы

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

--pid-owner идентификатор-процесса

Пропускать пакеты, генерируемые процессом с указанным идентификатором.

--sid-owner идентификатор-сеанса

Пропускать пакеты, генерируемые процессами в сеансе с указанным идентификатором.

соответствующую функцию)

Примечание: фильтрация по pid, sid и команде не работает в SMP-системах

### physdev
Позволяет организовывать фильтрацию по устройствам, используемым для связи двух локальных сетей. Это модуль является частью инфраструктуры для IP-брандмауэра "прозрачно" связывающего сети. Имеет смысл использовать только с ядрами 2.5.44.

--physdev-in [!] имя

Порт связи сетей, через который получен пакет (только для пакетов, проходящих цепочки INPUT, FORWARD и PREROUTING ). Если имя интерфейса оканчивается на "+", то будут пропускаться пакеты со всех интерфейсов, имя которых начинается с указанной последовательности. Если пакет получен из устройства, которое не связывает локальные сети, он не будет пропущен (если только не указано "!").

--physdev-out [!] имя

Порт связи сетей, через который пакет отправляется (для пакетов проходящих цепочки FORWARD, OUTPUT и POSTROUTING ). Если имя интерфейса оканчивается на "+", то будут пропускаться пакеты со всех интерфейсов, имя которых начинается с указанной последовательности. Тестирование по порту вывода в цепочках OUTPUT nat и mangle невозможно, зато в filter OUTPUT - возможно. Если пакет отправляется не через устройство связи двух сетей, или если отправляющее устройство на данном этапе неизвестно, то такой пакет не будет пропущен (если только не указан "!").

[!] --physdev-is-in

Пропускать пакеты, полученные через интерфейс связи двух сетей.

[!] --physdev-is-out

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

[!] --physdev-is-bridged

Пропускать пакеты для которых не выполняется маршрутизация (т.к. они проходят через "мост" между сетями) Имеет смысл только в цепочках FORWARD и POSTROUTING.

### policy
Позволяет фильтровать пакеты по стратегии обработки пакета IPsec.

--dir in|out

Стратегия по которой следует фильтровать: стратегии извлечения данных из сообщения или включения (инкапсуляции) оных. Вариант in допустим в цепочках PREROUTING, INPUT и FORWARD , вариант out

- в цепочках POSTROUTING, OUTPUT и FORWARD .

--pol none|ipsec

Должен ли пакет подлежать обработке IPsec.

--strict

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

--reqid id

Пропускать пакеты с указанным идентификатором reqid правила стратегии. Идентификатор указывается с помощью команды setkey(8) , в качестве уровня используется unique:id .

--spi spi

Фильтровать пакеты на основе последовательного периферийного интерфейса (SPI) SA.

--proto ah|esp|ipcomp

Фильтровать пакеты на основе протокола инкапсуляции.

--mode tunnel|transport

Фильтровать пакеты на основе режима инкапсуляции.

--tunnel-src адрес[/маска]

Пропускать пакеты с исходным адресом [пункта] режима tunnel SA, входящим в указанный диапазон. Имеет смысл только при --mode tunnel.

--tunnel-dst адрес[/маска]

Пропускать пакеты с адресом назначения режима tunnel SA, входящим в указанный диапазон. Имеет смысл только при --mode tunnel.

--next

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

### random
Вероятностная фильтрация.

--average доля

Пропускать указанную часть пакетов (в процентах). Значение по умолчанию - 50%.

### rt
Фильтрует по заголовку маршрутизации IPv6

--rt-type [!] тип

Пропускать пакеты с указанными типом (указывается номер).

--rt-segsleft [!] число[:число-макс]

Пропускать пакеты со значением поля segments left (количество оставшихся сегментов) входящим в указанный диапазон или равным указанному.

--rt-len [!] длина

Пропускать пакеты указанного размера.

--rt-0-res

Пропускать также пакеты с резервным полем (тип 0)

--rt-0-addrs адрес[,адрес...]

Пропускать адреса с типом 0 (список).

--rt-0-not-strict

Список адресов с типом 0 не строгий.

### tcp
Это расширение загружается при указании `--protocol tcp'. Становятся доступными следующие ключи:

--source-port [!] порт[:порт]

Исходный порт (или диапазон портов), с которого должен быть отправлен пакет для прохождения теста. В качестве значения может указываться номер порта или название сетевой службы. Диапазон (включительно) портов указывается в формате первый-порт:последний-порт. Если опускается первый порт, т.е. когда критерий записывается как --source-port :80, то в качестве начала диапазона принимается число 0. Если опускается максимальный порт, т.е. когда критерий записывается как --source-port 22:, то в качестве конца диапазона принимается число 65535. Если первый порт больше последнего, они меняются местами. Краткая форма ключа - --sport .

--destination-port [!] порт[:порт]

Порт (или диапазон портов) назначения. Краткая форма ключа - --dport .

--tcp-flags [!] флаги comp

Пропускать пакеты с указанным набором флагов TCP. Первый аргумент - флаги (через запятую) которые нужно проверять, второй - те флаги, которые должны быть установлены. Возможные флаги: SYN ACK FIN RST URG PSH ALL NONE. Так, условию

```
 ip6tables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN
```

будут соответствовать пакеты с установленным флагом SYN, и снятыми флагами ACK, FIN, RST.

[!] --syn

Пропускать пакеты TCP с установленным флагом SYN и снятыми ACK,RST. Такие пакеты используются для запроса создания TCP-соединения; очевидно, блокирование таких пакетов приведёт к невозможности создания входящих TCP-соединений. Эквивалентно --tcp-flags SYN,RST,ACK SYN. Указание "!" перед "--syn", смысл ключа инвертируется.

--tcp-option [!] номер-опции

Пропускать пакеты с установленной опцией TCP.

### udp
Это расширение загружается при указании `--protocol udp'. Доступны следующие ключи:

--source-port [!] порт[:порт]

Диапазон, в который должен входить исходный порт. См. описание ключа --source-port расширения TCP.

--destination-port [!] port[:port]

Диапазон, в который должен входить целевой порт. См. описание ключа --destination-port расширения TCP.

## РАСШИРЕНИЯ МЕХАНИЗМА ОБРАБОТКИ
В ip6tables можно добавлять дополнительные цели: Далее описаны модули включенные в стандартную поставку.

### CONNMARK
Помечает соединения.

--set-mark метка[/маска]

Метка соединения. Если указана маска, изменяются только биты, которые равны единице в маске.

--save-mark [--mask маска]

Перенести метку пакета в соединение. Если указана маска, копируются только биты, которые равны единице в маске.

--restore-mark [--mask маска]

Перенести метку соединения в пакет. Если указана маска, копируются только биты, которые равны единице в маске. Допустимо только в таблице mangle .

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

--save

Если пакет имеет метку, а соединение - нет, то перенести её в соединение.

--restore

Если соединение имеет метку, а пакет - нет, то перенести её в соединение.

### HL
Модифицирует поле Hop Limit ("ограничение на пересылку") заголовка IPv6. Это поле выполняет аналогичные функции TTL в IPv4. Изменение (особенно - увеличение) этого поля может быть опасным, потому желательно избегать этого. Используется в таблице mangle .

Никогда не изменяйте (особенно - не увеличивайте) значение для пакетов,

покидающих локальную сеть.

--hl-set значение

Установить новое значение Hop Limit.

--hl-dec значение

Уменьшить значение Hop Limit на указанное число.

--hl-inc значение

Увеличить значение Hop Limit на указанное число.

### LOG
Вносить в протокол ядра записи о пакетах (например, поля заголовка IPv6), для которых указана данная цель. Протокол ядра доступен по команде dmesg . См. syslogd(8)). Обработка после этой цели продолжается. Так, для внесения записей о блокируемых пакетах укажите два отдельных правила с одинаковыми условиями, для первого укажите цель LOG, для второго - DROP (или REJECT).

--log-level уровень

Степень подробности (число, см. syslog.conf(5)).

--log-prefix префикс

Префикс для выделения записей протокола среди других. До 29 символов.

--log-tcp-sequence

Протоколировать номера последовательностей (sequence numbers) TCP. Если протокол доступен обычным пользователям, это отрицательно скажется на защищённости системы.

--log-tcp-options

Вносить в протокол параметры заголовка TCP.

--log-ip-options

Вносить в протокол параметры заголовка IPv6.

--log-uid

Вносить в протокол идентификатор пользователя, которому принадлежит процесс, сгенерировавший пакет.

### MARK
Используется для присвоения пакетам меток. Может использоваться только в пределах таблицы mangle . Обычно используется вместе с iproute2.

--set-mark значение

Задать значение nfmark.

### NFQUEUE
Это расширение QUEUE. В отличие от QUEUE, позволяет помещать пакет в определённую очередь идентифицируемую по 16-разрядному номеру.

--queue-num номер

Номер очереди QUEUE. Допустимые номера - от 0 до 65535. По умолчанию - 0.

Работает только с ядрами 2.6.14 и выше, т.к. требует поддержку

nfnetlink_queue.

### REJECT
Используется для отправки сообщения об ошибке на хост, от которого получен исходный пакет, в остальном эквивалентно DROP , обработка пакета останавливается на этой цели. Может использоваться только в цепочках INPUT, FORWARD , OUTPUT , а также в цепочках вложенных в них. Следующий ключ определяет форму пакета с сообщением об ошибке:

--reject-with тип

Сообщение ICMP об ошибке. Возможные значения:

```
 icmp6-no-route
 no-route
 icmp6-adm-prohibited
 adm-prohibited
 icmp6-addr-unreachable
 addr-unreach
 icmp6-port-unreachable
 port-unreach
```

По умолчанию отправляется port-unreach. Для правил, которые фильтруют пакеты только принадлежащие протоколу TCP, можно указывать tcp-reset : это приведёт к возврату пакетов TCP RST и полезно для блокирования тестов ident (113/tcp), выполняемых при отправке почты на недоступные узлы. Использовать tcp-reset можно только с ядрами 2.6.14 и выше.

### ROUTE
Позволяет явно изменять логику маршрутизации сетевой подсистемы. Используется в таблице mangle .

--oif интерфейс

Направить пакет через указанный интерфейс.

--gw IPv6-адрес

Направить пакет через указанный шлюз.

--continue

Не прекращать тестирование пакета в цепочке. Недопустимо, если указан `--tee'.

--tee

Выполнять указанные действия над копией пакета, не прекращать тестирование исходного пакета в цепочке. Недопустимо, если указан ключ `--continue'.

### SECMARK
Устанавливает метки механизма защиты в пакетах. Они используются подсистемами защиты наподобие SELinux. Допустимо указание только в таблице mangle .

--selctx контекст-защиты

### TRACE
Включает трассировку пакетов соответствующих условию правила.

## ДИАГНОСТИКА
Разнообразные сообщения выводятся на стандартный вывод. Код выхода в случае отсутствия ошибок - 0. Если команде переданы недопустимые ключи, код выхода равен 2, при остальных ошибках код выхода равен 1.

## ОШИБКИ
Работа счётчиков ненадёжна на sparc64.

## СОВМЕСТИМОСТЬ С IPCHAINS
Пакет iptables очень похож на ipchains, написанные Расти Расселом (Rusty Russell). Основное различие состоит в том, что цепочки INPUT и OUTPUT не применяются для "проходящих" пакетов. Потому каждый пакет проходит только через одну из цепочек (кроме трафика кольцевого интерфейса loopback, проходящего через INPUT и OUTPUT).

Другое различие состоит в том, что -i относится с входному интерфейсу; -o - к выходному, и оба они доступны для пакетов в цепочке FORWARD . дополнительные расширения. Натурально, имеется много менее значительных изменений.

## СМ. ТАКЖЕ
ip6tables-save(8), ip6tables-restore(8), iptables(8), iptables-save(8), iptables-restore(8), libipq(3).

О фильтрации пакетов более подробно написано в packet-filtering-HOWTO, о трансляции адресов - в NAT-HOWTO, о нестандартных расширениях - в netfilter-extensions-HOWTO, о программировании - в netfilter-hacking-HOWTO.

См. http://www.netfilter.org/ и http://www.linuxshare.ru/docs/security/iptables/iptables-tutorial.html.

## АВТОРЫ
Пакет iptables создал Расти Рассел (Rusty Russell), консультируясь с Майклом Ньюлингом (Michael Neuling) на ранних этапах.

Благодаря Марку Бушэ (Marc Boucher) был удалён код ipnatctl, он был заменен более общей инфраструктурой селекции пакетов. Им была реализована таблица mangle, фильтрация по владельцу, метки и ещё много чего другого.

Джеймс Моррис (James Morris) реализовал цель TOS и фильтрацию по tos.

Джозеф Кадлецик (Jozsef Kadlecsik) реализовал цель REJECT.

Гаральд Уэльт (Harald Welte) реализовал цели ULOG и NFQUEUE, libiptc, а также libipulog и цель+фильтр TTL.

Команду Netfilter Core Team составляют: Марк Бушэ (Marc Boucher), Мартин Джозефсон (Martin Josefsson), Джозеф Кадлецик (Jozsef Kadlecsik), Джеймс Моррис (James Morris), Гаральд Уэльт (Harald Welte) и Расти Рассел (Rusty Russell).

Настоящий документ создан Адрасом Киз-Жабо (Andras Kis-Szabo) на основе страницы iptables для IPv4 написанной Херви Ейчинном (Herve Eychenne) <rv@wallfire.org>.

## ПЕРЕВОД
Николай Шафоростов <shafff@ukr.net> 2007

branch: sisyphus