Маршрутизация IP в ОС Linux
В ядре ОС Linux версии 2.1 таблица NAT была расширена и наделена дополнительными функциями. Так как в ней обеспечена обратная совместимость , то для внесения изменений в таблицу NAT вы можете использовать программу ipfwadm . Однако для работы с новыми функциями, доступными в этой версии ядра, была разработана другая программа . Для работы с таблицей NAT в ядрах ОС Linux была создана программа ipchains . Программа была написана Расти Расселом (Rusty Russel) и поддерживается им и сегодня. Основной Web- сервер по поддержке программы ipchains находится по адресу:
В состав большинства дистрибутивов ОС Linux, в которых используется ядро версии 2.2 и выше, входит бинарный пакет с программой ipchains . Во время написания книги его текущая версия была 1.3.9. Этот пакет можно получить по FTP с сервера:
Полученный через Internet файл нужно распаковать и скомпилировать в выполняемый файл ipchains .
С целью облегчения администрирования совместно с программой ipchains можно использовать три сценария: ipchains-save , ipchains-restore и ipchains-wrapper . Сценарий ipchains-wrapper может использоваться, если в системе уже задействован сценарий ipfwadm и вы хотите, модернизировав ядро ОС Linux, перейти к работе с ipchains . Если же вы настраиваете преобразование адресов и брандмауэр впервые, то вам этот сценарий не понадобится.
Все эти сценарии можно получить по FTP с сервера:
Работу сценариев мы обсудим позже в разделе «Сохранение конфигурации NAT «.
Программа ipchains , как и ipfwadm , манипулирует в таблице NAT правилами четырех категорий. Эти категории:
- входящая цепочка IP;
- исходящая цепочка IP;
- цепочка для пересылки пакетов IP;
- цепочки, определяемые пользователем.
В программе ipchains используется принцип формирования цепочек правил, которые совместно регулируют процесс фильтрации пакетов по мере их прохождения через сервер на базе ОС Linux. Помните о том, что правила создаются для облегчения системному администратору управления таблицей NAT . На рис.19.3 представлена графическая схема цепочки правил. Все правила хранятся в виде пар IP -адресов в таблице NAT .
Рис.19.3 демонстрирует процессы обработки пакетов на сервере под управлением ОС Linux. В табл.19.5 дается подробное описание этих процессов.
Процесс | Описание |
---|---|
chesksum | Выявляет искаженные пакеты |
sanity1 | Выявляет неправильно сформированные пакеты |
input chain | Проверяет входную цепочку правил брандмауэра |
demasquerade | Для ответа на пакет с преобразованным адресом адрес должен быть сконвертирован в исходный адрес пакета |
routing | Удаленный хост проверяет, является ли пакет локальным или требуется пересылка на другой хост |
sanity2 | Выявляет неправильно сформированные пакеты |
forward chain | Проверяет пересылаемую цепочку брандмауэра |
sanity3 | Выявляет неправильно сформированные пакеты |
output chain | Проверяет выходную цепочку брандмауэра |
Прежде чем пакет будет принят и обработан на локальном хосте либо переслан на другой хост , он должен пройти все необходимые стадии обработки, представленные в табл.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 . Цепочки, определяемые пользователем, часто применяются для упрощения сложных правил.