Маршрутизация IP в ОС Linux
Правила для ipchains
Спецификация правил включает в себя параметры, с помощью которых определяются действия, выполняемые согласно тому или иному правилу. В табл.19.7 представлены параметры, используемые в правилах.
Параметр | Описание |
---|---|
-p protocol | Проверяемый протокол |
-s address [|mask] | Проверяемый адрес отправителя |
--source-port port | Проверяемый порт отправителя |
-d address [|mask] | Проверяемый адрес получателя |
--destination-port port | Проверяемый порт получателя |
--icmp-type | Проверяемый тип ICMP |
-j target | Направление перехода при соответствии пакета определенному условию |
-i name | Имя интерфейса |
-f | Правило, определяющее фрагментацию пакетов |
Параметр -j позволяет задавать шесть специальных действий, регулирующих пересылку пакетов при соответствии их определенному правилу с. Эти действия используются лишь для того, чтобы помочь администратору почтовой системы при описании правил. При этом таблица NAT по-прежнему отслеживает пары IP-адресов и фильтрует пакеты (т.е. она может либо пропустить пакет в сеть, либо блокировать его).
Дополнительные функции, реализованные в более новых версиях ядра ОС Linux, включают в себя возможности перенаправления пакетов и преобразования адресов (маскарадинга). В табл.19.8 приведены возможные действия ipchains.
Действие | Описание |
---|---|
ACCEPT | Пропустить пакет |
DENY | Не пропускать пакет |
REJECT | Не пропускать пакет и вернуть отправителю сообщение об ошибке согласно протоколу ICMP |
MASQ | Преобразовать адрес при пересылке пакета |
REDIRECT | Переслать пакет на локальный порт, а не на удаленный хост |
RETURN | Немедленно разорвать цепочку |
При более детальном описании правил используются дополнительные параметры. Они приведены в табл.19.9.
Параметр | Описание |
---|---|
-b | Двусторонний режим |
-v | Вывод результатов с высокой детализацией |
-n | Вывод результатов в цифровом виде |
-l | Включение режима отчетов |
-o [maxsize] | Копирование согласованных пакетов на заданное устройство |
-m markvalue | Установка меток на согласованные пакеты |
-t andmask xormask | Маски, используемые для изменения поля Тип сервиса (Type of Service) в IP-пакете |
-x | Расширение адресов |
-y | Производить согласование только для пакетов, обозначающих начало сеанса |
Таблица NAT формируется в соответствии с порядком задания команд ipchains. Помните, что все внесенные в эту таблицу изменения теряются при перезагрузке сервера. Для того чтобы таблица NAT при каждой загрузке обновлялась, создаются два файла сценариев запуска ipchains.
Сохранение конфигурации NAT
Для сохранения текущей конфигурации таблицы NAT используется сценарий ipchains-save, с помощью которого производится запись в заданный файл. Формат команды для сохранения конфигурации следующий:
ipchains-save > filename,
где filename — имя файла, куда записывается текущая конфигурация таблицы NAT. Чтобы выполнить эту команду, вы должны обладать в системе правами пользователя root. Для восстановления конфигурации таблицы NAT из файла можно создать сценарий инициализации ipchains-restore. Формат команды для его создания следующий:
ipchains-restore > filename,
где filename — имя файла, в котором хранится текущая конфигурация таблицы NAT. Эта команда также должна выполняться только с правами пользователя root. Желательно также, чтобы этот сценарий запускался вместе с остальными при инициализации сервера.
Разрешение преобразования адресов
В листинге 19.2 представлены примеры команд ipchains, которые разрешают режим преобразования адресов (маскарадинг) на сервере под управлением ОС Linux.
1 /sbin/ipchains -P forward DENY 2 /sbin/ipchains -A forward -i ppp0 -j MASQЛистинг 19.2. Пример команд, разрешающих преобразование адресов
В строке 1 листинга 19.2 устанавливается правило для запрещения пересылки пакетов. В строке 2 добавляется правило, разрешающее пересылку, но с определенными условиями. Адреса всех пакетов, проходящих через интерфейс ppp0, сначала будут преобразованы в другие. В данном случае соединение с провайдером Internet обеспечивается именно через интерфейс ppp0. Чтобы добавить фильтрацию пакетов, можно ввести команду:
/sbin/ipchains -A input -i ppp0 -l -y -j DENY
При использовании этой команды TCP-пакеты типа начало сеанса (start-of-session), поступающие на интерфейс ppp0, не будут пересылаться в локальную сеть. Таким образом, если интерфейс ppp0 обеспечивает соединение с провайдером Internet, эта команда препятствует установлению прямых соединений между рабочими станциями в локальной сети и хостами в сети Internet. Параметр -l включает режим ведения отчетов. При этом все попытки установить соединение с рабочими станциями локальной сети будут протоколироваться в файл отчета. Затем системный администратор, анализируя файл отчетов, может выявить попытки несанкционированного доступа в сеть.