Выбрать главу

А теперь рассмотрим порядок движения пакета, предназначенного локальному процессу/приложению:

Таблица 3-2. Для локального приложения

(Шаг – Таблица – Цепочка – Примечание)

Шаг: 1

Таблица:

Цепочка: -

Примечание: Кабель (т.е. Интернет)

Шаг:

Таблица:

Цепочка: -

Примечание: Входной сетевой интерфейс (например, eth0)

Шаг: 3

Таблица: mangle

Цепочка: PREROUTING

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

Шаг: 4

Таблица: nat

Цепочка: PREROUTING

Примечание: Преобразование адресов (Destination Network Address Translation). Фильтрация пакетов здесь допускается только в исключительных случаях.

Шаг:

Таблица:

Цепочка: -

Примечание: Принятие решения о маршрутизации.

Шаг: 6

Таблица: mangle

Цепочка: INPUT

Примечание: Пакет попадает в цепочку INPUT таблицы mangle. Здесь внесятся изменения в заголовок пакета перед тем как он будет передан локальному приложению.

Шаг: 7

Таблица: filter

Цепочка: INPUT

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

Шаг: 8

Таблица:

Цепочка: -

Примечание:  Локальный процесс/приложение (т.е., программа-сервер или программа-клиент)

Важно помнить, что на этот раз пакеты идут через цепочку INPUT, а не через FORWARD.

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

Таблица 3-3. От локальных процессов

(Шаг – Таблица – Цепочка – Примечание)

Шаг:

Таблица:

Цепочка: -

Примечание:  Локальный процесс (т.е., программа-сервер или программа-клиент).

Шаг: 2

Таблица:

Цепочка: -

Примечание:  Принятие решения о маршрутизации. Здесь решается куда пойдет пакет дальше – на какой адрес, через какой сетевой интерфейс и пр.

Шаг: 3

Таблица: mangle

Цепочка: OUTPUT

Примечание:  Здесь производится внесение изменений в заголовок пакета. Выполнение фильтрации в этой цепочке может иметь негативные последствия.

Шаг: 4

Таблица: nat

Цепочка: OUTPUT

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

Шаг: 5

Таблица: Filter

Цепочка: OUTPUT

Примечание:  Здесь фильтруется исходящий траффик.

Шаг: 6

Таблица: mangle

Цепочка: POSTROUTING

Примечание:  Цепочка POSTROUTING таблицы mangle в основном используется для правил, которые должны вносить изменения в заголовок пакета перед тем, как он покинет брандмауэр, но уже после принятия решения о маршрутизации. В эту цепочку попадают все пакеты, как транзитные, так и созданные локальными процессами брандмауэра.

Шаг: 7

Таблица: nat

Цепочка: POSTROUTING

Примечание:  Здесь выполняется Source Network Address Translation. Не следует в этой цепочке производить фильтрацию пакетов во избежание нежелательных побочных эффектов. Однако и здесь можно останавливать пакеты, применяя политику по-умолчанию DROP.

Шаг:

Таблица: -

Цепочка: -

Примечание:  Сетевой интерфейс (например, eth0)

Шаг: 9

Таблица: -

Цепочка: -

Примечание:  Кабель (т.е., Internet)

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

Этот рисунок дает довольно ясное представление о порядке прохождения пакетов через различные цепочки. В первой точке принятия решения о маршрутизации (routing decision) все пакеты, предназначенные данному хосту направляются в цепочку INPUT, остальные – в цепочку FORWARD.

Обратите внимание также на тот факт, что пакеты, с адресом назначения на брандмауэр, могут претерпеть изменение сетевого адреса назначения (DNAT) в цепочке PREROUTING таблицы nat и соответственно дальнейшая маршрутизация в первой точке будет выполняться в зависимости от произведенных изменений. Запомните – все пакеты проходят через таблицы и цепочки по тому или иному маршруту. Даже если выполняется DNAT в ту же сеть, откуда пакет пришел, то он все равно продолжит движение по цепочкам.

СОВЕТ: В сценарии rc.test-iptables.txt вы сможете найти дополнительную информацию о порядке прохождения пакетов.

3.2. Таблица Mangle

Как уже упоминалось выше, эта таблица предназначена, главным образом для внесения изменений в заголовки пакетов (mangle – искажать, изменять. прим. перев.). Т.е. в этой таблице вы можете устанавливать биты TOS (Type Of Service) и т.д.

ОСТОРОЖНО: Еще раз напоминаю вам, что в этой таблице не следует производить любого рода фильтрацию, маскировку или преобразование адресов (DNAT, SNAT, MASQUERADE).

В этой таблице допускается выполнять только нижеперечисленные действия:

TOS

TTL

MARK

Действие TOS выполняет установку битов поля Type of Service в пакете. Это поле используется для назначения сетевой политики обслуживания пакета, т.е. задает желаемый вариант маршрутизации. Однако, следует заметить, что данное свойство в действительности используется на незначительном количестве маршрутизаторов в Интернете. Другими словами, не следует изменять состояние этого поля для пакетов, уходящих в Интернет, потому что на роутерах, которые таки обслуживают это поле, может быть принято неправильное решение при выборе маршрута.