### Порядок движения транзитных пакетов | Таблица | Цепочка | Примечание | |---|---|---| | mangle | prerouting | Входящий сетевой интерфейс Цепочка используется для внесения изменений в заголовок пакета | | nat | prerouting | Цепочка служит для трансляции сетевых адресов. Любого рода фильтрация в этой цепочке может производиться только в исключительных случаях. В этой точке решается, куда пойдет пакет: локальному приложению или на другой хост | | mangle | forward | Цепочка forward таблицы mangle должна использоваться только в исключительных случаях, когда необходимо внести некоторые изменения в заголовок пакета между двумя точками принятия решения о маршрутизации | | filter | forward | В цепочку forward попадают только те пакеты, которые идут на другой хост. Вся фильтрация транзитного трафи- ка должна выполняться здесь. Через эту цепочку прохо- дит трафик в обоих направлениях, обязательно учиты вайте это обстоятельство при написании правил фильтрации | | mangle | postrouting | Эта цепочка предназначена для внесения изменений в заголовок пакета после того, как принято последнее решение о маршрутизации | | nat | postrouting | Эта цепочка предназначена в первую очередь для NAT и маскарадинга. Исходящий сетевой интерфейс | ### Порядок движения пакетов для локальной программы | Таблица | Цепочка | Примечание | |---|---|---| | mangle | prerouting | Используется для внесения изменений в заголовок пакета | | nat | prerouting | Преобразование адресов. Фильтрация пакетов здесь допускается только в исключительных случаях | | | | Принятие решения о маршрутизации | | mangle | input | Здесь вносятся изменения в заголовок пакета перед тем, как он будет передан локальной программе | | filter | input | Фильтруется входящий трафик | | | | Локальная программа | ### Порядок движения пакетов от локальной программы | Таблица | Цепочка | Примечание | |---|---|---| | | | Локальная программа | | | | Принятие решения о маршрутизации | | mangle | output | Используется для внесения изменений в заголовок пакета| | nat | output | Предназначена для трансляции сетевых адресов (NAT) в пакетах, исходящих от локальных процессов брандмауэра | | filter | output | Фильтруется исходящий трафик | | mangle | postrouting | Используется для правил, которые должны вносить изменения в заголовок пакета перед тем, как он покинет брандмауэр, но уже после принятия решения о маршрутизации. В эту цепочку попадают все пакеты, как транзитные, так и созданные локальными процессами брандмауэра | | nat | postrouting | Нежелательно фильтровать пакеты во избежание побочных эффектов. Однако и здесь можно останавливать пакеты, применяя политику по умолчанию DROP | | | | Сетевой интерфейс | ### Таблица mangle В таблице mangle, предназначенной для внесения изменений в заголовки пакетов, допускается выполнять только три действия: * TOS; * TTL; * MARK. Действие TOS устанавливает биты поля Type of Service в пакете. Это поле используется для назначения сетевой политики обслуживания пакета. Действие TTL задает значение поля TTL (Time To Live) пакета. Действие MARK устанавливает специальную метку на пакет, которая затем может быть проверена другими правилами в iptables или другими программами. С помощью "меток" можно управлять маршрутизацией пакетов, ограничивать трафик и т. п. ### Таблица nat Таблица служит для преобразования сетевых адресов (Network Address Translation, NAT) и предусматривает следующие действия: * DNAT (Destination Network Address Translation) — преобразует адреса назначения в заголовках пакетов (перенаправляет пакеты); * SNAT (Source Network Address Translation) — изменяет исходные адреса пакетов. С помощью этого действия можно скрыть структуру локальной сети, разделить единственный внешний IP-адрес между компьютерами локальной сети для выхода в Интернет; * MASQUERADE (маскировка) — применяется в тех же целях, что и SNAT, но в отличие от последнего, MASQUERADE сильнее нагружает систему. Происходит это потому, что каждый раз, когда требуется выполнение этого действия, производится запрос IP-адреса для указанного в действии сетевого интерфейса, в то время как для SNAT IP-адрес указывается непосредственно. Однако благодаря такому отличию MASQUERADE может работать с динамическим IP-адресом. ### Таблица filter В этой таблице должны содержаться наборы правил для фильтрации пакетов. Пакеты могут пропускаться далее либо отвергаться (действия ACCEPT и DROP соответственно) в зависимости от их содержимого. ### Действия и переходы Действия и переходы сообщают правилу, что необходимо выполнить, если па кет соответствует заданному критерию. Действие — это предопределенная команда, описывающая действие, которое необходимо выполнить, если пакет совпал с заданным критерием. Переходы в правилах описывают точно так же, как и действия, т. е. ставят ключ -j и указывают название цепочки правил, на которую выполняется переход. На переходы есть ограничения: цепочка, на которую выполняется переход, должна находиться в той же таблице, что и цепочка, из которой этот переход выполняется. Цепочка, являющаяся целью перехода, должна быть создана до того, как на нее будут выполняться переходы. При выполнении перехода iptables продолжит движение пакета по цепочке, в которую был произведен переход. Если пакет достиг конца цепочки, то он будет возвращен в вызывающую цепочку и движение пакета продолжится с правила, следующего за правилом, вызвавшим переход. Если к пакету во вложенной цепочке будет применено действие ACCEPT, то пакет будет считаться принятым и в вызывающей цепочке и его движение по вызывающим цепочкам прекратится. ### Действие ACCEPT Если над пакетом выполняется действие ACCEPT, то пакет прекращает движение по цепочке и считается принятым. Однако пакет продолжит движение по цепочкам в других таблицах и может быть отвергнут там. Действие задается с помощью ключа-j ACCEPT. ### Действие DNAT DNAT (Destination Network Address Translation) преобразует адрес места назначения в IP-заголовке пакета. Если пакет подпадает под критерий правила, выполняющего DNAT, то пакет и все последующие пакеты из этого же потока будут подвергнуты преобразованию адреса назначения и переданы на требуемый адрес. Действие DNAT может выполняться только в цепочках prerouting и output таблицы nat и во вложенных цепочках. ### Действие DROP Данное действие удаляет пакет. Пакеты прекращают свое движение полно- стью — они не передаются в другие таблицы, как это происходит при действии ACCEPT. ### Действие LOG LOG-действие служит для журналирования отдельных пакетов и событий. В журнал могут заноситься IP-заголовки пакетов и другая интересующая вас информация. Информация из журнала затем может быть прочитана с помощью dmesg или syslogd. ### Действие MARK Устанавливает метки для определенных пакетов. Это действие может выпол- няться лишь в пределах таблицы mangle. Метка пакета существует только в период времени, пока пакет не покинул брандмауэр, таким образом, метка не передается по сети. ### Действие MASQUERADE Маскарадинг подразумевает получение IP-адреса от заданного сетевого интерфейса, вместо прямого его указания. Действие MASQUERADE имеет хорошее свойство "забывать" соединения при остановке сетевого интерфейса. MASQUERADE допускается указывать только в цепочке postrouting таблицы nat. ### Действие MIRROR MIRROR заменяет в пакете поле source на destination и destination на source. Данное действие допустимо только в цепочках input, forward и prerouting, а также в цепочках, вызываемых из этих трех. ### Действие QUEUE QUEUE ставит пакет в очередь на обработку пользовательскому процессу. Оно может быть использовано для нужд учета или дополнительной ф ильтрации пакетов. ### Действие REDIRECT REDIRECT перенаправляет пакеты и потоки на другой порт того же самого хоста. Действие REDIRECT очень удобно для выполнения "прозрачного" проксирования (transparent proxying), когда машины в локальной сети даже не подозревают о существовании proxy. ### Действие REJECT Используется в тех же самых ситуациях, что и DROP, но в отличие от него, REJECT выдает сообщение об ошибке на хост, передавший пакет. ### Действие RETURN RETURN прекращает движение пакета по текущей цепочке правил и производит возврат в вызывающую цепочку, если текущая цепочка была вложенной, или если текущая цепочка лежит на самом верхнемуровне (например, input), то к пакету будет применена политика по умолчанию. ### Действие SNAT Преобразует сетевые адреса, т. е. изменяет исходящий IP-адрес в IP-заголовке пакета. SNAT допускается только в таблице nat, в цепочке postrouting. Если первый пакет в соединении подвергся преобразованию исходящего адреса, то все последующие пакеты из этого же соединения будут преобразованы автоматически и не пойдут через эту цепочку правил. ### Действие TOS Команда TOS устанавливает биты в поле Type of Service IP-заголовка пакета. ### Действие TTL Изменяет содержимое поля Time To Live в IP-заголовке пакета. Действие TTL можно указывать только в таблице mangle и нигде больше. ### Действие ULOG Действие ULOG предоставляет возможность журналирования пакетов в пользовательское пространство. Оно заменяет традиционное действие LOG, базирующееся на системном журнале. При использовании этого действия пакет передается специальному демону, который может выполнять детальное журналирование в различных форматах (обычный текстовый файл, база данных MySQL и т. д.) и поддерживает возможность добавления надстроек для формирования разных выходных форматов и обработки сетевых протоколов.