Відмінності між версіями «Iptables»
| Рядок 46: | Рядок 46: | ||
!Шаг!! Таблица !! Цепочка !! Примечание | !Шаг!! Таблица !! Цепочка !! Примечание | ||
|- | |- | ||
| − | !1 || || ||Кабель (т.е. Интернет) | + | !1 |
| + | | || || ||Кабель (т.е. Интернет) | ||
|- | |- | ||
| − | !2 || || ||Входной сетевой интерфейс (например, eth0) | + | !2 |
| + | | || || ||Входной сетевой интерфейс (например, eth0) | ||
|- | |- | ||
| − | !3 ||mangle ||PREROUTING ||Обычно используется для внесения изменений в заголовок пакета, например для установки битов TOS и пр. | + | !3 |
| + | | ||mangle ||PREROUTING ||Обычно используется для внесения изменений в заголовок пакета, например для установки битов TOS и пр. | ||
|- | |- | ||
| − | !4 ||nat ||PREROUTING || Преобразование адресов (Destination Network Address Translation). Фильтрация пакетов здесь допускается только в исключительных случаях. | + | !4 |
| + | | ||nat ||PREROUTING || Преобразование адресов (Destination Network Address Translation). Фильтрация пакетов здесь допускается только в исключительных случаях. | ||
|- | |- | ||
| − | !5 || || || Принятие решения о маршрутизации. | + | !5 |
| + | | || || || Принятие решения о маршрутизации. | ||
|- | |- | ||
| − | !6 ||mangle ||INPUT ||Пакет попадает в цепочку INPUT таблицы mangle. Здесь внесятся изменения в заголовок пакета перед тем как он будет передан локальному приложению. | + | !6 |
| + | | ||mangle ||INPUT ||Пакет попадает в цепочку INPUT таблицы mangle. Здесь внесятся изменения в заголовок пакета перед тем как он будет передан локальному приложению. | ||
|- | |- | ||
| − | !7 ||filter ||INPUT ||Здесь производится фильтрация входящего трафика. Помните, что все входящие пакеты, адресованные нам, проходят через эту цепочку, независимо от того с какого интерфейса они поступили. | + | !7 |
| + | | ||filter ||INPUT ||Здесь производится фильтрация входящего трафика. Помните, что все входящие пакеты, адресованные нам, проходят через эту цепочку, независимо от того с какого интерфейса они поступили. | ||
|- | |- | ||
| − | !8 || || || Локальный процесс/приложение (т.е., программа-сервер или программа-клиент) | + | !8 |
| + | | || || || Локальный процесс/приложение (т.е., программа-сервер или программа-клиент) | ||
|} | |} | ||
Важно помнить, что на этот раз пакеты идут через цепочку INPUT, а не через FORWARD. | Важно помнить, что на этот раз пакеты идут через цепочку INPUT, а не через FORWARD. | ||
Версія за 07:34, 31 березня 2009
Когда пакет приходит на наш брандмауэр, то он сперва попадает на сетевое устройство, перехватывается соответствующим драйвером и далее передается в ядро. Далее пакет проходит ряд таблиц и затем передается либо локальному приложению, либо переправляется на другую машину. Порядок следования пакета приводится ниже:
Таблица 3-1. Порядок движения транзитных пакетов
| Шаг | Таблица | Цепочка | Примечание |
|---|---|---|---|
| 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 | Кабель (т.е. Интернет) | |||
| 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-3. От локальных процессов
Шаг Таблица Цепочка Примечание 1 Локальный процесс (т.е., программа-сервер или программа-клиент). 2 Принятие решения о маршрутизации. Здесь решается куда пойдет пакет дальше -- на какой адрес, через какой сетевой интерфейс и пр. 3 mangle OUTPUT Здесь производится внесение изменений в заголовок пакета. Выполнение фильтрации в этой цепочке может иметь негативные последствия. 4 nat OUTPUT Эта цепочка используется для трансляции сетевых адресов (NAT) в пакетах, исходящих от локальных процессов брандмауэра. 5 Filter OUTPUT Здесь фильтруется исходящий траффик. 6 mangle POSTROUTING Цепочка POSTROUTING таблицы mangle в основном используется для правил, которые должны вносить изменения в заголовок пакета перед тем, как он покинет брандмауэр, но уже после принятия решения о маршрутизации. В эту цепочку попадают все пакеты, как транзитные, так и созданные локальными процессами брандмауэра. 7 nat POSTROUTING Здесь выполняется Source Network Address Translation. Не следует в этой цепочке производить фильтрацию пакетов во избежание нежелательных побочных эффектов. Однако и здесь можно останавливать пакеты, применяя политику по-умолчанию DROP. 8 Сетевой интерфейс (например, eth0) 9 Кабель (т.е., Internet)