В этой книге делается попытка помочь
администраторам сетей и почтовых систем
установить и настроить полнофункциональный
сервер электронной почты под управлением ОС
Linux для работы в сети Internet. Возможно,
эта лекция вызовет у некоторых из вас
недоумение: зачем говорить об IP-маршрутизации,
когда книга посвящена работе почтового
сервера? Выбирая платформу для почтового
сервера, необходимо руководствоваться
несколькими критериями. Для обеспечения
работы сервера электронной почты в настоящее
время существует огромное количество
программного обеспечения и операционных
систем (хотя ни одна из них не сможет
сравнится с ОС Linux). Чаще всего при
создании локальной вычислительной сети
возникает необходимость подключения ее к
сети Internet. В некоторых ОС (таких,
например, как Windows NT 4.0) уже заложены
функции для подключения локальной сети к
Internet. Другие ОС (например, Windows 95)
требуют дополнительного программного
обеспечения для поддержки этих функций.
Если вы остановили свой выбор на ОС Linux в
качестве платформы для почтового сервера, то
у вас появится вполне закономерное желание
использовать его и как маршрутизатор при
подключении рабочих станций к сети Internet.
Это действительно возможно. В этой лекции
описывается, каким образом сервер на базе ОС
Linux доставляет электронную почту и
обеспечивает доступ к сети Internet для
рабочих станции локальной сети, выступая в
качестве маршрутизатора.
Способы
подключения к сети в ОС Linux
Подключение отдельных рабочих станций к сети
Internet с помощью сервера под управлением
ОС Linux вы можете осуществить двумя
способами:
-
получить диапазон реальных IP-адресов и
использовать в качестве маршрутизатора
сервер на базе ОС Linux;
-
воспользоваться диапазоном общедоступных
IP-адресов и использовать сервер на базе
ОС Linux для преобразования IP-адресов (маскарадинга).
В первом
случае необходимо, чтобы каждому устройству
в сети (каждой рабочей станции) был присвоен
реальный IP-адрес, при этом должна быть
правильно настроена маршрутизация вашей сети
в сеть Internet. Тогда сервер под
управлением ОС Linux выступает в роли
обычного маршрутизатора IP-пакетов из
локальной сети через узел провайдера в сеть
Internet.
Получить блок
IP-адресов можно двумя путями: обратившись в
сетевой информационный центр Network
Information Center (NIC) или арендуя их у
провайдера сети Internet. Во втором случае
провайдер выделяет блок IP-адресов из своего
адресного пространства, которое он, в свою
очередь, получает в NIC. Регистрация блока
IP-адресов в сетевом информационном центре
довольно дорогостоящее мероприятие. В
последнее время стали появляться слухи о том,
что в сетевом информационном центре
практически не осталось свободных блоков IP-адресов,
так как некоторые организации
зарегистрировали большие блоки IP-адресов и
не используют их. Как правило, провайдеры
сети Internet предоставляют своим клиентам
блок IP-адресов из собственного диапазона. К
сожалению, если в вашей сети предполагается
использование более 5–6 рабочих станций, то
такая схема выделения IP-адресов вам не
подойдет, так как провайдеры обычно не
выдают крупные блоки IP-адресов.
Чаще всего на
практике встречается второй способ
подключения клиентов к сети. В локальной
сети назначаются IP-адреса из общедоступного
диапазона —
192.168.0.0. Все рабочие станции в
сети устанавливают сетевые соединения с
сервером на базе ОС Linux, используя адреса
именно из этого диапазона. Однако устройства,
которые имеют общедоступный IP-адрес, не
могут работать напрямую в сети Internet.
Диапазоны адресов корпоративной сети были
специально разработаны для использования во
внутренних сетях, не имеющих соединения с
сетью Internet.
Однако на
базе сервера под управлением ОС Linux можно
выполнять преобразование или подстановку IP-адресов
(маскарадинг). Это делается следующим
образом. При подключении сервера на базе ОС
Linux к провайдеру Internet ему статически
или динамически назначается реальный IP-адрес.
Главная уловка заключается в том, что IP-адрес
любой рабочей станции в сети можно
преобразовать с помощью механизма
маскарадинга в реальный IP-адрес, полученный
сервером на базе ОС Linux при необходимости
послать пакет в сеть Internet. Хост в сети
Internet, принявший пакет, посылает ответный
пакет на адрес сервера под управлением ОС
Linux. Далее Linux-сервер должен произвести
обратное преобразование IP-адреса и
доставить пакет на соответствующую рабочую
станцию в локальной сети.
На базе
почтового сервера под управлением ОС Linux
можно реализовать оба способа подключения
клиентов к сети. В последующих разделах
дается описание этих способов.
Локальная
сеть с блоком реальных IP-адресов
Если для
вашей локальной сети получен блок реальных
IP-адресов, то, естественно, преобразование
адресов не потребуется. В этом случае сервер
под управлением ОС Linux выполняет функцию
маршрутизации пакетов между локальной сетью
и Internet. На рис.19.1 представлен пример
подключения рабочей станции к сети Internet
с использованием в качестве маршрутизатора
сервера под управлением ОС Linux.
Рис. 19.1. Подключение к сети
Internet рабочих станций с реальными IP-адресами
При такой
схеме подключения любой хост в сети Internet
может посылать IP-пакеты прямо на рабочую
станцию в локальной сети, так как сеть, в
которой она находится, имеет реальный адрес
в Internet. Для того чтобы сервер под
управлением ОС Linux мог работать в режиме
маршрутизатора IP-пакетов, этот режим должен
быть разрешен на уровне ядра операционной
системы. На рис.19.1 клиент локальной сети с
IP-адресом 5.6.8.2
устанавливает соединение с удаленным хостом
1.2.3.4. Когда
в качестве маршрутизатора выступает
локальный почтовый сервер, то этот процесс
выглядит так.
-
Клиент посылает пакет на удаленный хост
с адресом 1.2.3.4.
-
Локальный почтовый сервер пересылает
этот пакет на сервер провайдера,
указывая в качестве отправителя пакеты
рабочую станцию с адресом
5.6.8.2.
-
Сервер провайдера указывает маршрут для
пакета на хост с адресом
1.2.3.4 и
возвращает ответ на адрес
5.6.8.2.
-
Удаленный хост принимает пакет и
посылает ответ на адрес
5.6.8.2.
-
Сервер провайдера обнаруживает на входе
пакет, предназначенный для рабочей
станции с адресом
5.6.8.2, и пересылает его в
соответствующую сеть.
-
Локальный почтовый сервер, который
одновременно выполняет функции
маршрутизатора, обнаруживает пакет,
адресованный рабочей станции
5.6.8.2, и
направляет его туда.
Если в ядре
не разрешена пересылка IP-пакетов, то его
нужно перекомпилировать.
Чтобы
определить, разрешен ли режим пересылки IP-пакетов,
обратитесь к файлу
/proc/sys/net/ipv4/ip_forward.
Установив значение файла
ip_forward в
'1' вы
разрешите пересылку IP-пакетов. Это
выполняется с помощью команды, заданной
пользователем с правами
root:
echo '1' >
/proc/sys/net/ipv4/ip_forward
Замечание
В связи с
ростом популярности протокола TCP/IP и
механизма преобразования адресов (маскарадинга),
в большинство современных дистрибутивов
ОС Linux пересылка IP включена по
умолчанию. Если в имеющейся версии ядра
ОС Linux поддержка пересылки IP
отсутствует, то необходимо включить ее и
перекомпилировать ядро системы. Более
детально процесс конфигурирования ядра
ОС Linux описан в других книгах
издательства Sams Publishing.
Предупреждение
При
внесении каких-либо изменений в ядро
операционной системы будьте предельно
осторожны. В некоторых случаях внесенные
вами изменения могут привести к
невозможности загрузки системы.
Использование
сервера на базе ОС Linux в качестве IP-маршрутизатора —
довольно полезная функция, но ее применение
сопряжено с определенным риском. Когда ваш
сервер под управлением ОС Linux
сконфигурирован для маршрутизации сетевого
трафика в сеть Internet, работает и обратная
связь, т.е. трафик сети Internet может
поступать в вашу локальную сеть. Повторим
еще раз: трафик сети Internet может
поступать в вашу локальную сеть! Ваша
сеть в этом случае уязвима для атак хакеров
через сеть Internet. В зависимости от
оборудования, используемого в сети, это
обстоятельство в той или иной степени должно
вызывать беспокойство системного или
сетевого администратора.
Еще одна
полезная особенность ОС Linux состоит в том,
что, начиная с версии ядра 1.3, в него
включены функции поддержки системы
безопасности (так называемого брандмауэра —
firewall). Эти функции можно использовать
для отражения атак хакеров, нацеленных на
отдельные устройства во вверенной вам сети.
Вообще
брандмауэр выполняет функцию фильтрации
определенных типов пакетов, т.е. не
допускает определенные пакеты в локальную
сеть или не выпускает определенные пакеты из
нее. С помощью брандмауэра вы можете
запретить определенным удаленным хостам
устанавливать соединение с устройствами в
вашей сети. Вы также можете запретить
рабочим станциям в своей сети устанавливать
соединение с определенными внешними хостами.
Все эти действия выполняются с помощью
таблицы преобразования адресов (Network
Address Translation table — NAT). Эта
таблица обслуживается на уровне ядра. Пары
IP-адресов помещаются в эту таблицу с
помощью специальных программ, которые
используют определенные правила. Каждому
правилу соответствует определенная запись в
таблице NAT. Принимая пакет, ОС Linux
проверяет имеющуюся таблицу NAT и решает,
будет ли пакет передан получателю или
отвергнут.
Для настройки
таблицы NAT в ядре операционной системы
имеется два программных пакета. Наиболее
популярным из них является пакет
ipfwadm,
который может работать с ядрами версий от
1.3 до 2.0. В ядро версии 2.1 были добавлены
новые функции для работы NAT. Если в
имеющейся у вас версии ОС Linux применяется
ядро версии 2.1 или выше, то вы можете
использовать программный пакет
ipchains. В
нем широко используются новые возможности
ядра версии 2.1 и выше, такие как быстрое
преобразование адресов и возврат пакетов (отправка
отвергнутых ICMP пакетов обратно на
пославший их хост). Оба эти программных
продукта подробно описаны в разделах "Применение
утилиты ipfwadm" и "Применение утилиты
ipchains".
При установке
брандмауэра вы можете настроить программное
обеспечение таким образом, чтобы пресекались
любые попытки хакеров установить соединение
с устройствами вашей сети. Это не отменяет
функции системного администрирования. Вам
все равно придется просматривать файлы
отчетов системы для выявления попыток
несанкционированного доступа. Сам по себе
брандмауэр не дает стопроцентную гарантию
безопасности.
Локальная
сеть с применением общедоступных IP-адресов
Как уже
отмечалось ранее, применение общедоступных
IP-адресов в локальной сети требует больших
усилий от сетевого администратора. На
рис.19.2 представлена схема подключения
рабочих станций к сети Internet с
общедоступными IP-адресами.
Рис. 19.2. Локальные рабочие станции
с общедоступными IP-адресами
Ввиду того
что рабочие станции в локальной сети имеют
адреса, запрещенные для использования в сети
Internet, сервер на базе Linux должен быть
сконфигурирован для их преобразования, если
отдельным рабочим станциям или другим
устройствам в сети необходимо соединение с
хостом в сети Internet. Поддержка
преобразования IP-адресов (маскарадинга IP)
была реализована в ядре Linux версии 1.3 и
модернизирована в версии 2.1. На рис.19.2
клиент с адресом
192.168.1.15 устанавливает соединение
с удаленным хостом, адрес которого
1.2.3.4. При
применении алгоритма подстановки IP-адресов
схема сетевого сеанса будет выглядеть так.
-
Клиент посылает пакет на удаленный хост
с адресом 1.2.3.4.
-
Локальный почтовый сервер пересылает
пакет от клиента на сервер провайдера с
адресом 5.6.7.8.
Далее в пакете реальный IP-адрес рабочей
станции отправителя преобразуется в
адрес сервера электронной почты —
5.6.7.9.
- Затем
сервер провайдера направляет пакет по
сети Internet на удаленный хост с
адресом 1.2.3.4
и с указанием отправителя (5.6.7.9).
-
Удаленный хост принимает пакет и
посылает ответ на адрес
5.6.7.9.
-
Сервер провайдера обнаруживает пакет для
локального адреса
5.6.7.9 и отправляет его по
назначению.
-
Локальный почтовый сервер, приняв пакет,
идентифицирует его как пакет для одного
из локальных клиентов и пересылает его
на адрес
192.168.1.15.
Подобно
функции брандмауэра, преобразование адресов
(маскарадинг) также включается на уровне
ядра системы. Как и в брандмауэре, в ядре
поддерживается внутренняя таблица соединений,
содержащая адреса локальных сетевых
устройств с номерами портов и
соответствующие им реальные IP-адреса. Эта
функция добавлена в таблицу преобразования
сетевых адресов (Network Address
Translation — NAT). Пакеты IP, поступающие
от рабочей станции в локальной сети,
добавляются в таблицу NAT, и им назначается
номер порта с реальным IP-адресом сервера
под управлением ОС Linux.
Вы можете
определить, включено ли в ядро вашей системы
преобразование адресов, обратившись к файлу
/proc/net/ip_masquerade.
Если этот файл существует, то преобразование
адресов уже скомпилировано в ядре.
Обязательным условием для преобразования IP-адресов
является наличие в ядре ОС поддержки
пересылки IP-пакетов. Вы можете разрешить
пересылку, проделав операции, описанные в
предыдущем разделе. Будьте предельно
внимательны при изменении настроек и
перекомпиляции ядра. Любая ошибка может
полностью вывести из строя ваш Linux-сервер.
Для настройки
преобразования адресов можно воспользоваться
теми же программными пакетами, что и при
конфигурировании брандмауэра. Представленные
нами ранее программные пакеты
ipfwadm и
ipchains
позволяют вставку и удаление IP-адресов при
преобразовании с помощью таблицы NAT. В
последующих разделах мы рассмотрим работу
этих программных пакетов более детально.
Применение
утилиты 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 в
том же порядке, в котором они были введены;
в таком же порядке они и обрабатываются.
После того
как вы создали нужный сценарий запуска со
списками правил и преобразованием адресов,
добавьте его в каталог, где хранятся все
файлы сценариев соответствующего уровня
запуска.
Применение
утилиты 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. Работа правил в программе
ipchains
Рис.19.3
демонстрирует процессы обработки пакетов на
сервере под управлением ОС Linux. В
табл.19.5 дается подробное описание этих
процессов.
Таблица 19.5. Фильтрация пакетов
программой ipchains
Процесс |
Описание |
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.
Таблица 19.6. Команды ipchains
Команда |
Описание |
-A |
Добавить одно или
несколько правил |
-D |
Удалить одно или
несколько правил |
-C |
Проверить пакет
вне заданной цепочки |
-R |
Заменить правило
для заданной цепочки |
-I |
Вставить одно или
несколько правил с заданным
номером |
-L |
Вывести список
правил для выбранной цепочки |
-F |
Очистить
выбранную цепочку |
-Z |
Обнулить счетчики
для всех цепочек |
-N |
Создать новую
цепочку с параметрами,
определенными пользователем |
-X |
Удалить выбранную
цепочку с параметрами,
определенными пользователем |
-P |
Установить набор
правил для цепочки |
-M |
Просмотреть
текущие соединения с
преобразованием адресов |
Далее следует
имя цепочки. Это может быть либо одна из
системных цепочек (входная, выходная или
цепочка пересылки), либо имя цепочки,
заданное пользователем с помощью команды
-N. Цепочки,
определяемые пользователем, часто
применяются для упрощения сложных правил.
Правила
для ipchains
Спецификация
правил включает в себя параметры, с помощью
которых определяются действия, выполняемые
согласно тому или иному правилу. В табл.19.7
представлены параметры, используемые в
правилах.
Таблица 19.7. Параметры ipchains
Параметр |
Описание |
-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.
Таблица 19.8. Действия ipchains
Действие |
Описание |
ACCEPT |
Пропустить пакет |
DENY |
Не пропускать
пакет |
REJECT |
Не пропускать
пакет и вернуть отправителю
сообщение об ошибке согласно
протоколу ICMP |
MASQ |
Преобразовать
адрес при пересылке пакета |
REDIRECT |
Переслать пакет
на локальный порт, а не на
удаленный хост |
RETURN |
Немедленно
разорвать цепочку |
При более
детальном описании правил используются
дополнительные параметры. Они приведены в
табл.19.9.
Таблица 19.9. Параметры ipchains
Параметр |
Описание |
-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 включает
режим ведения отчетов. При этом все попытки
установить соединение с рабочими станциями
локальной сети будут протоколироваться в
файл отчета. Затем системный администратор,
анализируя файл отчетов, может выявить
попытки несанкционированного доступа в сеть.
Настройка
маршрутизации на клиентских рабочих станциях
После
настройки сервера на базе ОС Linux для
работы в качестве маршрутизатора и/или для
преобразования адресов можно приступить к
настройке для работы в сети клиентских
рабочих станций. Чтобы пакеты пересылались
через сервер на базе ОС Linux в сеть
Internet, рабочие станции должны иметь его
IP-адрес.
Для того
чтобы пакеты от рабочих станций безошибочно
поступали на Linux-сервер, и станции, и
сервер должны принадлежать к одной сети с
определенными адресом и маской. Маска
подсети определяет количество битов,
используемых в IP-адресе для задания адреса
сети. Эта информация используется рабочими
станциями при принятии решения о том, куда
направлять пакеты — на маршрутизатор или
напрямую на удаленный хост.
Если диапазон
адресов получен вами от вашего провайдера
Internet или через NIC, то вы можете
развивать свою сеть только в его границах.
Однако при создании локальной сети можно
воспользоваться диапазоном общедоступных IP-адресов.
Тогда у вас есть возможность выделить для
описания устройств в сети необходимое
количество адресов. В табл.19.10
представлены маски, с помощью которых можно
описать сеть с определенным числом хостов.
Таблица 19.10. Разделение на подсети
в сети с адресом 192.168.0.0
Маска |
Количество
рабочих станций |
255.255.240.0 |
4094 |
255.255.248.0 |
2046 |
255.255.252.0 |
1022 |
255.255.254.0 |
510 |
255.255.255.0 |
254 |
255.255.255.128 |
126 |
255.255.255.192 |
62 |
255.255.255.224 |
30 |
255.255.255.240 |
14 |
255.255.255.248 |
6 |
255.255.255.252 |
2 |
Чаще всего (и
легче всего) использовать маску подсети
255.255.255.0.
Итак, первые три октета в IP-адресе
описывают сеть. Все рабочие станции в сети
должны иметь одинаковые первые три октета в
IP-адресе. То есть в качестве адреса сети вы
можете использовать
192.168.1.0, а адреса с 1 по 254
назначить рабочим станциям (помните, что
адрес 255 в данном случае не может
назначаться какой-либо рабочей станции, так
как он используется в этой сети для
широковещательных запросов, т.е. для
обращения ко всем хостам сети одновременно).
В лекции 15,
"Конфигурирование клиентов ЛВС", подробно
рассмотрена настройка сетевых адаптеров и
IP-адресов на рабочих станциях под
управлением ОС Windows 98 и XP. На рис.19.4
приведено окно Свойства TCP/IP (TCP/IP
Properties) для рабочей станции под
управлением ОС Windows XP.
Рис. 19.4. Окно Свойства TCP/IP в ОС
Windows XP
На вкладке
IP-адрес (IP Address) задаются IP-адрес
рабочей станции и маска подсети. На вкладке
Шлюз (Gateway) задается IP-адрес
шлюза, используемого по умолчанию. В
качестве адреса шлюза нужно задать IP-адрес
локального Linux-сервера, если он выполняет
функции маршрутизатора.
На рабочих
станциях под управлением ОС Windows NT 4.0
настройка этих параметров происходит
аналогично. На рис.19.5 приведено окно
Свойства TCP/IP (TCP/IP Properties) в ОС
Windows NT 4.0.
Рис. 19.5. Окно Свойства TCP/IP в ОС
Windows NT 4.0
Здесь все три
параметра вводятся на вкладке IP-адрес
(IP Address). В этом случае в качестве
шлюза, используемого по умолчанию, следует
также указать IP-адрес Linux-сервера.
После задания
всех этих параметров рабочая станция сможет
через сервер на базе ОС Linux контактировать
с удаленными хостами в сети Internet.
Резюме
Хотя IP-маршрутизация
и не входит в функции системы электронной
почты, довольно часто она является
необходимым условием при подключении
локальных сетей к Internet. Если для вашей
сети выделены реальные IP-адреса, то сервер
на базе ОС Linux может быть настроен для
пересылки пакетов на узел провайдера без
каких-либо дополнительных ухищрений в том
виде, в котором они поступают от рабочих
станций. При использовании в локальной сети
общедоступных адресов сервер под управлением
ОС Linux должен выполнять преобразование
адресов. Процесс преобразования адресов (или,
как его еще называют, маскарадинг) позволяет
вместо IP-адреса рабочей станции из
локальной сети подставлять IP-адрес Linux-сервера
и передавать пакет в сеть Internet уже с
реальным адресом. Тогда хосты в сети
Internet смогут переслать на адрес сервера
под управлением ОС Linux. Далее адрес пакета
подвергается обратному преобразованию, и
пакет направляется на соответствующую
рабочую станцию в локальной сети. И в том, и
в другом случае сервер под управлением ОС
Linux может выполнять функции брандмауэра по
защите сети от атак хакеров. Для реализации
функций брандмауэра и преобразования адресов
применяются утилиты
ipfwadm и
ipchains. Обе утилиты с помощью
наборов правил воздействуют непосредственно
на ядро ОС Linux и указывают ему, как
обслуживать тот или иной пакет. После
настройки Linux-сервера для пересылки
пакетов из локальной сети в Internet нужно
соответствующим образом сконфигурировать
рабочие станции. На них в качестве шлюза,
используемого по умолчанию, следует указать
IP-адрес сервера под управлением ОС Linux.
Во всех операционных системах производства
компании Microsoft есть возможность
настройки маски подсети и шлюза для работы
по протоколу TCP/IP. Рабочие станции, для
которых в качестве шлюза указан IP-адрес
почтового сервера на базе ОС Linux, могут
работать в сети Internet.
С этого
момента вы должны чувствовать себя уверенней
в вопросах администрирования почтового
сервера под управлением ОС Linux. Но помните:
работа администратора почтовой системы
никогда не заканчивается. В настоящее время
намечается использование нескольких новых
технологий, расширяющих возможности
электронной почты. Одна из них, набирающая
обороты, — технология протокола доступа к
каталогам облегченного типа Lightweight
Directory Access Protocol (LDAP). Сегодня
многие компании экспериментируют с этой
технологией. Начаты работы по ее реализации
на платформе Linux. Эта технология, наряду с
другими, гарантирует администратору почтовой
системы постоянную рабочую нагрузку.
|