Для перемещения по дереву справки используйте строки заголовка.

Справка по NSG Linux 2.1.3
Дерево команд: ip.mangle.…далее…

Что это такое?

Это всякий мухлёж с IP-пакетами.

Зачем это нужно?

  1. Для выполнения разных операций, помимо NAT и фильтрации.
  2. Для маркировки пакетов, с тем, чтобы учитывать выставленные им метки где-нибудь в другом месте (например, при маршрутизации на основе установленных правил).
  3. Для некоторых служебных операций (например, для обработки нестандартных пакетов GRE keepalive в устройствах NSG).
  4. Для всяких грязных шуток, о которых мы вам рассказывать не будем. Но вы можете прочитать о них в Интернете.

Как это настроить?

Средства для расширенного анализа и, если надо, преднамеренного искажения пакетов в ОС Linux являются составной частью механизма netfilter, работающего в ядре Linux. Настройка этого механизма производится с помощью утилиты iptables. Узлы nat, filter, mangle и raw конфигурационного дерева NSG являются оболочкой к данной утилите. Подробно обо всех их возможностях и настройках см. первоисточник, т.е. man pages по iptables в оригинале. Настоятельно рекомендуется ознакомиться с этим документом хотя бы по диагонали, чтобы получить представление об общей структуре настроек.

Говоря коротко, настройка iptables производится в виде таблиц с именами nat, filter mangle и raw, соответственно. Каждая таблица состоит из цепочек последовательно выполняемых правил. На разных этапах обработки пакета в системе используются различные предопределённые цепочки и, кроме того, пользователь может создавать и подключать свои собственные цепочки по своему усмотрению.

Этапы обработки пакетов на сетевом уровне - операции mangle.

ПРИМЕЧАНИЕ. Многие действия (например, уничтожение пакета) могут, вообще говоря, выполняться в схожих цепочках, принадлежащих к разным таблицам. Однако для правильного понимания конфигурации принято разделять их по существу: преобразования адресов и портов — в таблицу nat, фильтрацию и подсчёт пакетов — в таблицу filter, всё прочее — в mangle. Как минимум, это помогает избежать человеческих ошибок. Извращённые ситуации, когда требуется выполнять эти операции в ином порядке, нежели указано на схеме, теоретически возможны, но на практике крайне редки.

Таблица mangle в устройствах NSG включает в себя следующие цепочки:

PREROUTING
Для всех входящих пакетов (как локальных, так и транзитных). Применяется до nat PREROUTING и до маршрутизации.
INPUT
Для пакетов, адресованных локальным службам и приложениям на данном устройстве. Применяется после nat PREROUTING и маршрутизации, но до filter INPUT.
FORWARD
Для транзитных пакетов, передаваемых с одного стороннего хоста на другой через данное устройство. Применяется в процессе маршрутизации — после nat PREROUTING и до filter FORWARD.
OUTPUT
Для пакетов, генерируемых локальными службами и приложениями на данном устройстве. Применяется после маршрутизации этих пакетов, но до nat OUTPUT и filter OUTPUT.
POSTROUTING
Для всех исходящих пакетов (как локальных, так и транзитных). Применяется после всей маршрутизации и фильтрации, но до nat POSTROUTING.
GRE_KA
Специфические для NSG Linux правила, необходимые для корректной обработки пакетов GRE keepalive. Вызываются из цепочки INPUT; если пакет не подпадает под эти правила, то он возвращается на обработку обратно в INPUT.
Пользовательские цепочки
Эти цепочки подключаются к одной из 5 предопределённых цепочек. Для перехода между цепочками используются правила, в которых в качестве действия указано имя новой цепочки или RETURN. Для добавления цепочек используйте команды +, _new или _insert. Данный список является именованным и не упорядочивается автоматически. Для удаления используйте команду - или _remove.
ВНИМАНИЕ! Механизмы nat, filter, mangle и raw, как и правила маршрутизации, относятся к самой сущности IP-маршрутизатора как целого и работают в тесной связи друг с другом, а также с процедурами IP-маршрутизации и IPsec. Именно по этой причине они настраиваются на уровне системы в целом, а не на уровне интерфейсов по отдельности. (Последнее возможно только для простейших бытовых маршрутизаторов, у которых заранее жёстко определены как роль каждого интерфейса, так и возможные преобразования.)
Чтобы ограничить действие правила одним интерфейсом, необходимо и достаточно указать этот интерфейс в критериях для анализа пакетов.

Что делать, если это не работает?

  1. Смотреть правила mangle, фактически созданные в соответствии с вашей конфигурацией, и статистику их срабатывания.
  2. Смотреть входящий и исходящий трафик на интерфейсах при помощи утилиты tcpdump.

© Network Systems Group 2015–2024 Отдел документации