Опубликован: 21.11.2006 | Уровень: специалист | Доступ: платный
Лекция 19:

Маршрутизация IP в ОС Linux

< Лекция 18 || Лекция 19: 123456

Применение утилиты ipfwadm

Утилита пакет ipfwadm позволяет манипулировать внутренней таблицей NAT в ядре ОС Linux. Этот пакет распространяется компанией X/OS. Информация о нем находится на Web-сайте компании по адресу:

http://www.xos.nl/linux/ipfwadm/

Замечание

В большинство дистрибутивов ОС Linux с версией ядра ниже 2.1 входил бинарный пакет с программой ipfwadm. В настоящее время вы можете получить с FTP-сервера компании его версию 2.3.0:

ftp://ftp.xos.nl/pub/linux/ipfwadm/ipfwadm-2/3/0/tar.gz

После получения файла через Internet его необходимо распаковать и скомпилировать выполняемый файл ipfwadm.

Для управления адресами в таблице NAT в программе ipfwadm используются специальные правила. Каждый раз при добавлении или удалении адреса из таблицы NAT необходимо перезапускать программу ipfwadm. Все правила, используемые в ipfwadm, можно разделить на четыре категории:

  • правила для учета IP-пакетов;
  • правила брандмауэра для входящих пакетов;
  • правила брандмауэра для исходящих пакетов;
  • правила брандмауэра при пересылке IP-пакетов.

Каждой категории соответствует определенный набор правил. Все правила располагаются в порядке их определения, поэтому будьте внимательны: некоторые правила могут противоречить заданным ранее правилам. Формат команды для запуска ipfwadm следующий:

ipfwadm category command parameters [options]

Параметр category говорит о типе задаваемых правил. В табл.19.1 представлены возможные типы категорий.

Таблица 19.1. Категории ipfwadm
Категория Описание
-A правила для учета IP-пакетов
-I правила брандмауэра для входящих пакетов
-O правила брандмауэра для исходящих пакетов
-F правила брандмауэра при пересылке IP-пакетов
-M правила для управления преобразованием адресов

В одной строке можно вводить только правила одной категории. Каждая категория описывает отдельный список правил для ipfwadm. Категория правил -M используется для управления преобразованием адресов.

Команды, с помощью которых осуществляется добавление, удаление и изменение значений правил, задаются в командной строке. В табл.19.2 приведены команды, доступные для каждой из категорий правил (кроме категории -M ).

Таблица 19.2. Команды ipfwadm
Команда Описание
-a [policy] Добавить одно или несколько правил
-i [policy] Вставить одно или несколько правил в начало списка правил
-d [policy] Удалить одно или несколько правил из выбранного списка правил
-l Показать все правила в списке
-z Сбросить все счетчики
-f Обнулить выбранный список правил
-p policy Изменить набор правил по умолчанию
-s tcp tcpfin udp Изменить время задержки, используемое при преобразовании адресов
-c Проверить, будут ли приниматься пакеты с заданным IP-адресом
-h Вывести на экран список команд

Параметр policy бывает трех типов: accept, deny и reject. Тип accept позволяет пересылать через сеть определенные пакеты. Тип deny, наоборот запрещает передавать по сети определенные пакеты. Тип reject также запрещает пересылку определенных пакетов по сети, но при этом на адрес отправителя выдается специальный ICMP-пакет с сообщением об ошибке.

Для уточнения действий после применения той или иной команды используются специальные параметры. Их описание вы найдете в табл.19.3.

Таблица 19.3. Параметры команд ipfwadm
Параметр Описание
-P protocol Проверяемый протокол
-S address [|mask] Проверяемый адрес(а) отправителя
-D address [|mask] Проверяемый адрес(а) получателя
-V address Дополнительный адрес интерфейса, через который пакет будет принят
-W address Дополнительное имя интерфейса, через который пакет будет принят

В качестве адреса можно указывать как IP-адреса отдельных устройств, так и адрес сети с соответствующей маской. Маска подсети определяет количество активных бит. Так, например, значение маски 24 соответствует маске подсети вида 255.255.255.0.

Дополнительные настройки правил могут выполняться с помощью опций. В табл.19.4 приведены опции, применяемые с ipfwadm.

Таблица 19.4. Опции ipfwadm
Опция Описание
-b Двусторонний режим
-e Расширенный вывод результатов
-k Проверка TCP-пакетов на совпадение с битами ACK
-m Преобразование пакетов для пересылки
-n Вывод результатов в цифровом виде
-o Включение режима отчетов о прохождении пакетов
-r [port] Перенаправление пакетов на локальный порт
-t andmask ormask Использование масок для изменения типа обслуживания IP
-v Высокая детализация при выводе результатов
-x Расширенные числа
-y Выравнивание пакетов в начале сеанса

Чаще всего на практике применяются опции -m, с помощью которой включается преобразование адресов; -o, с помощью которой для каждого пакета, соответствующего правилу, в файле отчета создается отдельная запись; и -y, с помощью которой запрещается устанавливать соединения с определенными узлами сети. Будьте осторожны, работая с опцией -o: когда она включена, в системе генерируются огромные файлы отчетов. Эта опция часто используется совместно с опцией -y с целью фиксирования попыток установления соединения с рабочими станциями локальной сети со стороны удаленных хостов сети Internet.

Команды ipfwadm вводятся в таблицу NAT в том же порядке, в котором они задаются в командной строке. К сожалению, все они аннулируются при перезагрузке сервера на базе ОС Linux. Таким образом, подобрав нужную конфигурацию правил, можно создать файл сценария, который будет выполняться во время загрузки. При этом все необходимые правила будут задаваться автоматически. В листинге 19.1 приведен пример сценария для запуска преобразования адресов в ОС Linux (IP-маскарадинг).

1 /sbin/ipfwadm -F -p deny
2 /sbin/ipfwadm -F -a -m -S 192.168.1.0/24 -D 0.0.0.0/0
Листинг 19.1. Пример сценария ipfwadm для преобразования адресов

В строке 1 листинга 19.1 представлена команда ipfwadm, по которой текущий набор правил сменяется на набор правил типа deny. Лучше всего по умолчанию задавать правила, запрещающие пересылку пакетов. В строке 2 осуществляется преобразование адресов, т.е. маскарадинг. Команда -a указывает на то, что новое правило будет добавлено к списку правил, регулирующих пересылку IP-пакетов. Присутствие опции -m свидетельствует о том, что при пересылке пакетов их адреса будут преобразовываться. Параметр -S определяет сетевой адрес отправителя и маску подсети, которая будет использоваться правилом при пересылке пакетов. Маска 24 позволяет использовать в маске подсети все 24 бита. В таком случае маска подсети будет 255.255.255.0, что соответствует локальной сети офиса (до 254 хостов). Параметр -D описывает адрес назначения и его маску. Приведенное правило указывает таблице NAT принимать пакеты из сети 192.168.1.0, адресованные в любою другую сеть, и пересылать их с преобразованием адресов на внешнее РРР-соединение. Таким образом, до пересылки в сеть Internet адреса пакетов, поступающих от рабочих станций, должны быть преобразованы.

С помощью преобразования адресов, которое можно наблюдать на рис.19.2, всеми исходящими из локальной сети пакетами будет использоваться адрес почтового сервера на базе ОС Linux. Для того чтобы различать установленные соединения, каждому из них в ОС Linux динамически присваивается номер порта TCP.

Приведенное выше правило не выполняет функций брандмауэра. Чтобы разрешить фильтрацию пакетов, нужно добавить еще одну строку:

/sbin/ipfwadm -F -a deny -P tcp -W ppp0 -y -o

С помощью этой команды в таблице NAT создается запись, блокирующая TCP-запросы, которые поступают через интерфейс ppp0, обычно подключаемый к провайдеру Internet. Таким образом, вы заблокируете любые попытки установления TCP-соединений извне. То есть, если задать такое правило, то никто в сети Internet не сможет установить соединение с устройствами в вашей локальной сети. Например, если в локальной сети имеется Web-сервер, то клиенты сети Internet не смогут установить соединение с ним, так что следует формировать правила более осторожно. Можно, например, разрешить Web-трафик между Web-сервером и сетью Internet, но запретить все остальные виды соединений. Помните, что правило, разрешающее Web-трафик, должно следовать перед правилом, запрещающим все остальные виды трафика, иначе оно будет аннулировано (или, как говорят, "перекрыто") запрещающим правилом. Адреса помещаются в таблицу NAT в том же порядке, в котором они были введены; в таком же порядке они и обрабатываются.

После того как вы создали нужный сценарий запуска со списками правил и преобразованием адресов, добавьте его в каталог, где хранятся все файлы сценариев соответствующего уровня запуска.

< Лекция 18 || Лекция 19: 123456
Valentin Diduk
Valentin Diduk
Украина, одесса, кпи, 2010
Евгений Олабин
Евгений Олабин
Беларусь, Гродно