Все упоминания об аппаратном обеспечении, а так же о внутренних механизмах ядра или абстрактных понятиях системы (например: петлевой (loopback) интерфейс), отображаются курсивом .
Имена файлов и пути к файлам отображаются таким образом: /usr/local/bin/iptables.
1.1. Почему было написано данное руководство
Скажем так, я посчитал, что существует досадный пробел в HOWTO по части информации об iptables и функциях сетевого фильтра (netfilter), реализованных в новой серии ядер 2.4.x Linux. Кроме всего прочего, я попытался ответить на некоторые вопросы по поводу новых возможностей, например проверки состояния пакетов (state matching). Большинство из них проиллюстрированы в файле скрипта rc.firewall.txt , который вы можете вставить в /etc/rc.d/. Для тех, кому интересно, готов сообщить, что этот файл первоначально был основан на masquerading HOWTO.
Там же вы найдете небольшой сценарий rc.flush-iptables.txt , написанный мною, который вы можете использовать, для своих нужд, при необходимости расширяя под свою конфигурацию.
Я консультировался с Марком Бучером (Marc Boucher) и другими членами команды разработчиков netfilter. Пользуясь случаем, выражаю огромную признательность за их помощь в создании данного руководства, которое изначально было написано для boingworld.com, а теперь доступно на моем персональном сайте frozentux.net. С помощью этого документа вы пройдете процесс настройки шаг за шагом и, надеюсь, что к концу изучения его вы будете знать о пакете iptables значительно больше. Большая часть материала базируется на файле rc.firewall.txt, так как я считаю, что рассмотрение примера – лучший способ изучения iptables. Я пройду по основным цепочкам правил в порядке их следования. Это несколько усложняет изучение, зато изложение становится логичнее. И, всякий раз, когда у вас возникнут затруднения, вы можете обращаться к этому руководству.
1.3. Термины, используемые в данном документе
Этот документ содержит несколько терминов, которые следует пояснить прежде, чем вы столкнетесь с ними.
DNAT – от англ. Destination Network Address Translation – Изменение Сетевого Адреса Получателя. DNAT – это изменение адреса назначения в заголовке пакета. Зачастую используется в паре с SNAT. Основное применение – использование единственного реального IP-адреса несколькими компьютерами для выхода в Интернет и предоставления дополнительных сетевых услуг внешним клиентам.
«Поток» (Stream) – под этим термином подразумевается соединение, через которое передаются и принимаются пакеты. Я использовал этот термин для обозначения соединений, через которые передается по меньшей мере 2 пакета в обеих направлениях. В случае TCP это может означать соединение, через которое передается SYN пакет и затем принимается SYN/ACK пакет. Но это так же может подразумевать и передачу SYN пакета и прием сообщения ICMP Host unreachable. Другими словами, я использую этот термин в достаточно широком диапазоне применений.
SNAT – от англ. Source Network Address Translation – Изменение Сетевого Адреса Отправителя. SNAT – это изменение исходного адреса в заголовке пакета. Основное применение – использование единственного реального IP-адреса несколькими компьютерами для выхода в Интернет. В натоящее время диапазон реальных IP-адресов, по стандарту IPv4, недостаточно широк, и его не хватает на всех (переход на IPv6 разрешит эту проблему).
«Состояние» (State) – под этим термином подразумевается состояние, в котором находится пакет, согласно RFC 793 – RFC 793 – Transmission Control Protocol , а также трактовкам, используемым в netfilter/iptables. Хочу обратить ваше внимание на тот факт, что определения состояний пакетов, как для внутренних так и для внешних состояний, используемые Netfilter, не полностью соответствуют указанному выше RFC 793.
«Пространство пользователя» (User space) – под этим термином я подразумеваю все, что расположено за пределами ядра, например: коменда iptables -hвыполняется за пределами ядра, в то время как команда iptables -A FORWARD -p tcp -j ACCEPTвыполняется (частично) в пространстве ядра, поскольку она добавляет новое правило к имеющемуся набору.
«Пространство ядра» (Kernel space) – в большей или меньшей степени является утверждением, обратным термину «Пространство пользователя». Подразумевает место исполнения – в пределах ядра.
«Userland» – см. «Пространство пользователя».
Целью данной главы является оказание помощи в понимании той роли, которую netfilter и iptablesиграют в Linux сегодня. Так же она должна помочь вам установить и настроить межсетевой экран (firewall).
Читать дальше