Маршрутизация IP в ОС Linux
Применение утилиты ipchains
В ядре ОС Linux версии 2.1 таблица NAT была расширена и наделена дополнительными функциями. Так как в ней обеспечена обратная совместимость, то для внесения изменений в таблицу NAT вы можете использовать программу ipfwadm. Однако для работы с новыми функциями, доступными в этой версии ядра, была разработана другая программа. Для работы с таблицей NAT в ядрах ОС Linux была создана программа ipchains. Программа была написана Расти Расселом (Rusty Russel) и поддерживается им и сегодня. Основной Web-сервер по поддержке программы ipchains находится по адресу:
http://www.rustcorp.com/linux/ipchains
Замечание
В состав большинства дистрибутивов ОС Linux, в которых используется ядро версии 2.2 и выше, входит бинарный пакет с программой ipchains. Во время написания книги его текущая версия была 1.3.9. Этот пакет можно получить по FTP с сервера:
ftp://ftp.rustcorp.com/ipchains/ipchains-1.3.9.tar.bz2
Полученный через Internet файл нужно распаковать и скомпилировать в выполняемый файл ipchains.
С целью облегчения администрирования совместно с программой ipchains можно использовать три сценария: ipchains-save, ipchains-restore и ipchains-wrapper. Сценарий ipchains-wrapper может использоваться, если в системе уже задействован сценарий ipfwadm и вы хотите, модернизировав ядро ОС Linux, перейти к работе с ipchains. Если же вы настраиваете преобразование адресов и брандмауэр впервые, то вам этот сценарий не понадобится.
Замечание
Все эти сценарии можно получить по FTP с сервера:
ftp://ftp.rustcorp.com/ipchains/ipchains-scripts-1.1.2.tar.gz
Работу сценариев мы обсудим позже в разделе "Сохранение конфигурации NAT".
Программа ipchains, как и ipfwadm, манипулирует в таблице NAT правилами четырех категорий. Эти категории:
- входящая цепочка IP;
- исходящая цепочка IP;
- цепочка для пересылки пакетов IP;
- цепочки, определяемые пользователем.
В программе ipchains используется принцип формирования цепочек правил, которые совместно регулируют процесс фильтрации пакетов по мере их прохождения через сервер на базе ОС Linux. Помните о том, что правила создаются для облегчения системному администратору управления таблицей NAT. На рис.19.3 представлена графическая схема цепочки правил. Все правила хранятся в виде пар IP-адресов в таблице NAT.
Рис.19.3 демонстрирует процессы обработки пакетов на сервере под управлением ОС Linux. В табл.19.5 дается подробное описание этих процессов.
Прежде чем пакет будет принят и обработан на локальном хосте либо переслан на другой хост, он должен пройти все необходимые стадии обработки, представленные в табл.19.5.
С помощью программы ipchains для входных, выходных цепочек и цепочек пересылки используются правила, устанавливаемые в таблице NAT. Формат команды ipchains варьируется в зависимости от используемой категории. Ниже приведены несколько наиболее распространенных форматов ipchains:
ipchains -[ADC] chain rule-specification [options] ipchains -[RI] chain rulenum rule-specification [options] ipchains -D chain rulenum [options] ipchains -[LFZNX] [chain] [options] ipchains -P chain target [options] ipchains -M [-L | -S ] [options]
Первый параметр в команде задает функции, выполняемые ipchains. В табл.19.6 представлены команды для управления работой ipchains.
Команда | Описание |
---|---|
-A | Добавить одно или несколько правил |
-D | Удалить одно или несколько правил |
-C | Проверить пакет вне заданной цепочки |
-R | Заменить правило для заданной цепочки |
-I | Вставить одно или несколько правил с заданным номером |
-L | Вывести список правил для выбранной цепочки |
-F | Очистить выбранную цепочку |
-Z | Обнулить счетчики для всех цепочек |
-N | Создать новую цепочку с параметрами, определенными пользователем |
-X | Удалить выбранную цепочку с параметрами, определенными пользователем |
-P | Установить набор правил для цепочки |
-M | Просмотреть текущие соединения с преобразованием адресов |
Далее следует имя цепочки. Это может быть либо одна из системных цепочек (входная, выходная или цепочка пересылки), либо имя цепочки, заданное пользователем с помощью команды -N. Цепочки, определяемые пользователем, часто применяются для упрощения сложных правил.