Когда пакет приходит на наш брандмауэр, то он сперва попадает на сетевое устройство, перехватывается соответствующим драйвером и далее передается в ядро. Далее пакет проходит ряд таблиц и затем передается либо локальному приложению, либо переправляется на другую машину. Порядок следования пакета приводится ниже:
Таблица 3-1. Порядок движения транзитных пакетов
(Шаг – Таблица – Цепочка – Примечание)
Шаг:
1Таблица:
–Цепочка:
–Примечание:
Кабель (т.е. Интернет)Шаг:
2Таблица:
–Цепочка:
-Примечание:
Сетевой интерфейс (например, eth0)Шаг:
3Таблица:
mangleЦепочка:
PREROUTINGПримечание:
Обычно эта цепочка используется для внесения изменений в заголовок пакета, например для изменения битовШаг:
4Таблица:
natЦепочка:
PREROUTINGПримечание:
Эта цепочка используется для трансляции сетевых адресов (Шаг:
5Таблица:
–Цепочка:
-Примечание:
Принятие решения о дальнейшей маршрутизации, т.е. в этой точке решается куда пойдет пакет – локальному приложению или на другой узел сети.Шаг:
6Таблица:
mangleЦепочка:
FORWARDПримечание:
Далее пакет попадает в цепочкуШаг:
7Таблица:
FilterЦепочка:
FORWARDПримечание:
В цепочкуШаг:
8Таблица:
mangleЦепочка:
POSTROUTINGПримечание:
Эта цепочка предназначена для внесения изменений в заголовок пакета уже после того как принято последнее решение о маршрутизации.Шаг:
9Таблица:
natЦепочка:
POSTROUTINGПримечание:
Эта цепочка предназначена в первую очередь дляШаг:
10Таблица:
–Цепочка:
-Примечание:
Выходной сетевой интерфейс (например, eth1).Шаг:
11Таблица:
–Цепочка:
-Примечание:
Кабель (пусть будет LAN).Как вы можете видеть, пакет проходит несколько этапов, прежде чем он будет передан далее. На каждом из них пакет может быть остановлен, будь то цепочка iptables
или что либо еще, но нас главным образом интересует iptables. Заметьте, что нет каких либо цепочек, специфичных для отдельных интерфейсов или чего либо подобного. ЦепочкуА теперь рассмотрим порядок движения пакета, предназначенного локальному процессу/приложению:
Таблица 3-2. Для локального приложения
(Шаг – Таблица – Цепочка – Примечание)
Шаг:
1Таблица:
–Цепочка:
-Примечание:
Кабель (т.е. Интернет)Шаг:
2Таблица:
–Цепочка:
-Примечание:
Входной сетевой интерфейс (например, eth0)Шаг:
3Таблица:
mangleЦепочка:
PREROUTINGПримечание:
Обычно используется для внесения изменений в заголовок пакета, например для установки битовШаг:
4Таблица:
natЦепочка:
PREROUTINGПримечание:
Преобразование адресов (Шаг:
5Таблица:
–Цепочка:
-Примечание:
Принятие решения о маршрутизации.Шаг:
6Таблица:
mangleЦепочка:
INPUTПримечание:
Пакет попадает в цепочкуШаг:
7Таблица:
filterЦепочка:
INPUTПримечание:
Здесь производится фильтрация входящего трафика. Помните, что все входящие пакеты, адресованные нам, проходят через эту цепочку, независимо от того с какого интерфейса они поступили.Шаг:
8Таблица:
–Цепочка:
-Примечание:
Локальный процесс/приложение (т.е., программа-сервер или программа-клиент)