Тема: Порядок прохождения таблиц
Цель работы: Усвоить порядок прохождения таблиц.
Оборудование: ПК
Задание:
Составить алгоритм движения транзитных пакетов (схематично)
Составить алгоритм движения локальных пакетов (схематично)
Когда пакет приходит на наш брандмауэр, то он первоначально попадает на сетевое устройство, перехватывается соответствующим драйвером и далее передается в ядро. Далее пакет проходит ряд таблиц и затем передается либо локальному приложению, либо переправляется на другую машину. Порядок следования пакета приводится ниже.
Таблица 1. Порядок движения транзитных пакетов
Шаг | Таблица | Цепочка | Примечание |
1 | ═ | ═ | Кабель (т.е. Интернет) |
2 | ═ | ═ | Сетевой интерфейс (например, eth0) |
3 | Mangle | PREROUTING | Обычно эта цепочка используется для внесения изменений в заголовок пакета, например для изменения битов TOS и пр.. |
4 | Nat | PREROUTING | Эта цепочка используется для трансляции сетевых адресов (Destination Network Address Translation). Source Network Address Translation выполняется позднее, в другой цепочке. Любого рода фильтрация в этой цепочке может производиться только в исключительных случаях |
5 | ═ | ═ | Принятие решения о дальнейшей маршрутизации, т.е. в этой точке решается куда пойдет пакет - локальному приложению или на другой узел сети. |
6 | Filter | FORWARD | В цепочку FORWARD попадают только те пакеты, которые идут на другой хост Вся фильтрация транзитного трафика должна выполняться здесь. Не забывайте, что через эту цепочку проходит траффик в обоих направлениях, обязательно учитывайте это обстоятельство при написании правил фильтрации. |
7 | Mangle | FORWARD | Далее пакет попадает в цепочку FORWARD> таблицы mangle, которая должна использоваться только в исключительных случаях, когда необходимо внести некоторые изменения в заголовок пакета между двумя точками принятия решения о маршрутизации. |
8 | ═ | ═ | Принятие решения о дальнейшей маршрутизации, т.е. в этой точке, к примеру, решается на какой интерфейс пойдет пакет. |
9 | Nat | POSTROUTING | Эта цепочка предназначена в первую очередь для Source Network Address Translation. Не используйте ее для фильтрации без особой на то необходимости. Здесь же выполняется и маскировка (Masquerading). |
10 | Mangle | POSTROUTING | Эта цепочка предназначена для внесения изменений в заголовок пакета уже после того как принято последнее решение о маршрутизации. |
11 | ═ | ═ | Выходной сетевой интерфейс (например, eth1). |
12 | ═ | ═ | Кабель (пусть будет LAN). |
Пакет проходит несколько этапов, прежде чем он будет передан далее. На каждом из них пакет может быть остановлен, будь то цепочка iptables или что-либо еще, но нас главным образом интересует iptables. Заметьте, что нет каких либо цепочек, специфичных для отдельных интерфейсов или чего-либо подобного. Цепочку FORWARD проходят ВСЕ пакеты, которые движутся через наш брандмауэр/роутер. Не используйте цепочку INPUT для фильтрации транзитных пакетов, они туда просто не попадают! Через эту цепочку движутся только те пакеты, которые предназначены данному хосту!
А теперь рассмотрим порядок движения пакета, предназначенного локальному процессу/приложению
Таблица 2. Для локального приложения
Шаг | Таблица | Цепочка | Примечаниеt |
1 | ═ | ═ | Кабель (т.е. Интернет) |
2 | ═ | ═ | Входной сетевой интерфейс (например, eth0) |
3 | Mangle | PREROUTING | Обычно используется для внесения изменений в заголовок пакета, например для установки битов TOS и пр. |
4 | Nat | PREROUTING | Преобразование адресов (Destination Network Address Translation). Фильтрация пакетов здесь допускается только в исключительных случаях. |
5 | ═ | ═ | Принятие решения о маршрутизации. |
6 | Mangle | INPUT | Пакет попадает в цепочку INPUT таблицы mangle. Здесь внесятся изменения в заголовок пакета перед тем как он будет передан локальному приложению. |
7 | Filter | INPUT | Здесь производится фильтрация входящего трафика. Помните, что все входящие пакеты, адресованные нам, проходят через эту цепочку, независимо от того с какого интерфейса они поступили. |
8 | ═ | ═ | Локальный процесс/приложение |
Важно помнить, что на этот раз пакеты идут через цепочку INPUT, а не через FORWARD. И в заключение мы рассмотрим порядок движения пакетов, созданных локальными процессами.
Таблица 3. От локальных процессов
Шаг | Таблица | Цепочка | Примечание |
1 | ═ | ═ | Локальный процесс |
2 | Mangle | OUTPUT | Здесь производится внесение изменений в заголовок пакета. Фильтрация, выполняемая в этой цепочке, может иметь негативные последствия. |
3 | Nat | OUTPUT | Эта цепочка используется для трансляции сетевых адресов (NAT) в пакетах, исходящих от локальных процессов брандмауэра. |
4 | Filter | OUTPUT | Здесь фильтруется исходящий траффик. |
5 | ═ | ═ | Принятие решения о маршрутизации. Здесь решается - куда пойдет пакет дальше. |
6 | Nat | POSTROUTING | Здесь выполняется Source Network Address Translation (SNAT). Не следует в этой цепочке производить фильтрацию пакетов во избежание нежелательных побочных эффектов. Однако и здесь можно останавливать пакеты, применяя политику по-умолчанию DROP. |
7 | Mangle | POSTROUTING | Цепочка POSTROUTING таблицы mangle в основном используется для правил, которые должны вносить изменения в заголовок пакета перед тем, как он покинет брандмауэр, но уже после принятия решения о маршрутизации. В эту цепочку попадают все пакеты, как транзитные, так и созданные локальными процессами брандмауэра. |
8 | ═ | ═ | Сетевой интерфейс (например, eth0) |
9 | ═ | ═ | Кабель (т.е., Internet) |
Есть три различных варианта прохождения пакетов. Рисунок ниже более наглядно демонстрирует это.
Этот рисунок дает довольно ясное представление о порядке прохождения пакетов через различные цепочки.
У вас должно получиться что-то подобное