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

Глава 3. Порядок прохождения таблиц и цепочек

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

3.1. Общие положения

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

Таблица 3-1. Порядок движения транзитных пакетов

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

Шаг:

Таблица:

Цепочка:

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

Шаг: 2

Таблица:

Цепочка: -

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

Шаг: 3

Таблица: mangle

Цепочка: PREROUTING

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

Шаг: 4

Таблица: nat

Цепочка: PREROUTING

Примечание: Эта цепочка используется для трансляции сетевых адресов (Destination Network Address Translation). Source Network Address Translation выполняется позднее, в другой цепочке. Любого рода фильтрация в этой цепочке может производиться только в исключительных случаях

Шаг: 5

Таблица:

Цепочка: -

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

Шаг: 6

Таблица: mangle

Цепочка: FORWARD

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

Шаг: 7

Таблица: Filter

Цепочка: FORWARD

Примечание:  В цепочку FORWARD попадают только те пакеты, которые идут на другой хост Вся фильтрация транзитного трафика должна выполняться здесь. Не забывайте, что через эту цепочку проходит траффик в обоих направлениях, обязательно учитывайте это обстоятельство при написании правил фильтрации.

Шаг: 8

Таблица: mangle

Цепочка: POSTROUTING

Примечание:  Эта цепочка предназначена для внесения изменений в заголовок пакета уже после того как принято последнее решение о маршрутизации.

Шаг: 9

Таблица: nat

Цепочка: POSTROUTING

Примечание:  Эта цепочка предназначена в первую очередь для Source Network Address Translation. Не используйте ее для фильтрации без особой на то необходимости. Здесь же выполняется и маскарадинг (Masquerading).

Шаг: 10

Таблица:

Цепочка: -

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

Шаг: 11

Таблица:

Цепочка: -

Примечание:  Кабель (пусть будет LAN).

Как вы можете видеть, пакет проходит несколько этапов, прежде чем он будет передан далее. На каждом из них пакет может быть остановлен, будь то цепочка iptables или что либо еще, но нас главным образом интересует iptables. Заметьте, что нет каких либо цепочек, специфичных для отдельных интерфейсов или чего либо подобного. Цепочку FORWARD проходят ВСЕ пакеты, которые движутся через наш брандмауэр/ роутер. Не используйте цепочку INPUT для фильтрации транзитных пакетов, они туда просто не попадают! Через эту цепочку движутся только те пакеты, которые предназначены данному хосту!

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

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

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

Шаг: 1

Таблица:

Цепочка: -

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

Шаг:

Таблица:

Цепочка: -

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

Шаг: 3

Таблица: mangle