Основные понятия IPTables
Метки: DNAT | forwarding | IPTables | NAT | pOm
Среда, 11 февраля 2009 г.
Просмотров: 2992
IPTables входит в состав практически всех современных дистрибутивов Linux и устанавливается по умолчанию. Ядро Linux в таких дистрибутивах обычно скомпилировано с поддержкой IPTables. Если в дистрибутиве нет IPTables, его можно загрузить с сайта www.netfilter.org.
IPTables непрерывно развивается, следовательно, немало новых функций не включено в состав обычного ядра Linux, так как они еще не протестированы на надежность. Такие расширения дают администратору много полезных функций. Эти функции IPTables распространяются в виде серии патчей ядра, которая называется Patch-O-Matic (pOm).
Установка pOm.
Установка pOm состоит из следующих этапов:
Распаковка pOm в каталог с исходными кодами ядра (как правило /usг/src/linux) и запуск программы runme: # КЕRNЕL_DIR=<каталог ядра> ./runme pending
Компиляция ядра заново, с включением новых функций.
Компиляция дополнительных утилит (сценарий ./configure не нужен):
$ make KERNEL_DIR=<каталог ядра>
$ make install KERNEL_DIR=<каталог ядра>
Таблицы IPTables.
IPTables по сути - это набор таблиц с правилами, каждая таблица которого содержит определенные правила. К примеру, таблица filter содержит правила для фильтрации пакетов, NAT - для трансляции сетевых адресов. За каждую таблицу отвечает некоторый модуль ядра, который загружается по мере необходимости - при первом использовании таблицы.
Описание таблицы NAT. Модули таблицы NAT выполняют следующие функции:
- SNAT
- DNAT
- MASQUERADE - маскарадинг.
- REDIRECT - перенаправление.
В ядре 2.2 термин «маскарадинг» был почти что синонимом NAT - его общей формой. Но в IPTables у него другое значение: маскарадинг предназначен для реализации SNAT или DNAT при использовании динамических IP-адресов (ISP назначает клиенту IP-адрес при каждом подключении его к модемному пулу).
Маскарадинг крайне полезен для коммутируемых соединений. Также его можно использовать для полудинамических соединений, где IP-адрес представлен как динамический, но при подключении одного и того же пользователя ему назначается один и тот же IP-адрес.
Таблицы IPTables делятся на три встроенные цепочки, обрабатывающие пакеты при их прохождении через ядро:
- PREROUTING - цепочка принимает пакеты, проходящие через устройство, перед принятием решения о маршрутизации относительно этого пакета. Эта цепочка направляет пакеты на вход в брандмауэр.
- OUTPUT - позволяет управлять локальными пакетами, поступающими от приложений «внутри» брандмауэра (перед принятием решения о маршрутизации).
- POSTROUTING - позволяет управлять пакетами после принятия решения о маршрутизации, как правило, используется для SNAT.
Если пакет не соответствует определенному правилу, он передается следующему за ним правилу и так, пока не будет достигнут конец цепочки. В конце цепочки выполняется правило по умолчанию.
NAT и продвижение портов тесно связаны и в ipchains были объединены в одно правило. В IPTables для NAT и для продвижения (форвардинга) портов появились отдельные таблицы - таблица NAT для трансляции адресов и цепочка FORWARD таблицы filter для форвардинга портов.
Продвижение (форвардинг) портов - это форвардинг входящих соединений к некоторым узлам локальной сети по номерам портов (к примеру, если порт получателя равен 80/tcp, пакет будет перенаправлен Web-серверу сети, который находится в нейтральной зоне). Это частный случай NAT, но для удобства выведенный в отдельную таблицу.