В этой лекции
В этой книге делается попытка помочь администраторам сетей и почтовых систем установить и настроить полнофункциональный сервер электронной почты под управлением ОС Linux для работы в сети Internet. Возможно, эта лекция вызовет у некоторых из вас недоумение: зачем говорить об IP-маршрутизации, когда книга посвящена работе почтового сервера? Выбирая платформу для почтового сервера, необходимо руководствоваться несколькими критериями. Для обеспечения работы сервера электронной почты в настоящее время существует огромное количество программного обеспечения и операционных систем (хотя ни одна из них не сможет сравнится с ОС Linux). Чаще всего при создании локальной вычислительной сети возникает необходимость подключения ее к сети Internet. В некоторых ОС (таких, например, как Windows NT 4.0) уже заложены функции для подключения локальной сети к Internet. Другие ОС (например, Windows 95) требуют дополнительного программного обеспечения для поддержки этих функций.
Если вы остановили свой выбор на ОС Linux в качестве платформы для почтового сервера, то у вас появится вполне закономерное желание использовать его и как маршрутизатор при подключении рабочих станций к сети Internet. Это действительно возможно. В этой лекции описывается, каким образом сервер на базе ОС Linux доставляет электронную почту и обеспечивает доступ к сети Internet для рабочих станции локальной сети, выступая в качестве маршрутизатора.
Подключение отдельных рабочих станций к сети Internet с помощью сервера под управлением ОС Linux вы можете осуществить двумя способами:
В первом случае необходимо, чтобы каждому устройству в сети (каждой рабочей станции) был присвоен реальный 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-адресов, то, естественно, преобразование адресов не потребуется. В этом случае сервер под управлением ОС 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
Для настройки таблицы NAT в ядре
операционной системы имеется два
программных пакета. Наиболее популярным из
них является пакет ipfwadm,
который может работать с ядрами версий от 1.3
до 2.0. В ядро версии 2.1 были добавлены новые
функции для работы NAT. Если в имеющейся у вас
версии ОС Linux применяется ядро версии 2.1 или
выше, то вы можете использовать программный
пакет ipchains. В нем
широко используются новые возможности ядра
версии 2.1 и выше, такие как быстрое
преобразование адресов и возврат пакетов (отправка
отвергнутых ICMP пакетов обратно на
пославший их хост). Оба эти программных
продукта подробно описаны в разделах "Применение
утилиты ipfwadm" и "Применение утилиты ipchains".
При установке брандмауэра вы можете настроить программное обеспечение таким образом, чтобы пресекались любые попытки хакеров установить соединение с устройствами вашей сети. Это не отменяет функции системного администрирования. Вам все равно придется просматривать файлы отчетов системы для выявления попыток несанкционированного доступа. Сам по себе брандмауэр не дает стопроцентную гарантию безопасности.
Как уже отмечалось ранее, применение общедоступных 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.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 позволяет манипулировать
внутренней таблицей 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,
можно разделить на четыре категории:
Каждой категории соответствует
определенный набор правил. Все правила
располагаются в порядке их определения,
поэтому будьте внимательны: некоторые
правила могут противоречить заданным ранее
правилам. Формат команды для запуска ipfwadm
следующий:
ipfwadm category
command parameters [options]
Параметр category
говорит о типе задаваемых правил. В табл.19.1
представлены возможные типы категорий.
| Категория | Описание |
|---|---|
-A |
правила для учета IP-пакетов |
-I |
правила брандмауэра для входящих пакетов |
-O |
правила брандмауэра для исходящих пакетов |
-F |
правила брандмауэра при пересылке IP-пакетов |
-M |
правила для управления преобразованием адресов |
В одной строке можно вводить
только правила одной категории. Каждая
категория описывает отдельный список
правил для ipfwadm.
Категория правил -M
используется для управления
преобразованием адресов.
Команды, с помощью которых
осуществляется добавление, удаление и
изменение значений правил, задаются в
командной строке. В табл.19.2 приведены
команды, доступные для каждой из категорий
правил (кроме категории -M ).
| Команда | Описание |
|---|---|
-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.
| Параметр | Описание |
|---|---|
-P protocol |
Проверяемый протокол |
-S |
Проверяемый адрес(а) отправителя |
-D |
Проверяемый адрес(а) получателя |
-V address |
Дополнительный адрес интерфейса, через который пакет будет принят |
-W address |
Дополнительное имя интерфейса, через который пакет будет принят |
В качестве адреса можно
указывать как IP-адреса отдельных устройств,
так и адрес сети с соответствующей маской.
Маска подсети определяет количество
активных бит. Так, например, значение маски
24 соответствует маске подсети вида 255.255.255.0.
Дополнительные настройки правил
могут выполняться с помощью опций. В табл.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
В строке 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 в
том же порядке, в котором они были введены; в
таком же порядке они и обрабатываются.
После того как вы создали нужный
В ядре ОС 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 правилами четырех
категорий. Эти категории:
В программе ipchains
используется принцип формирования
цепочек правил, которые совместно
регулируют процесс фильтрации пакетов по
мере их прохождения через сервер на базе ОС
Linux. Помните о том, что правила создаются для
облегчения системному администратору
управления таблицей NAT. На рис.19.3
представлена графическая схема цепочки
правил. Все правила хранятся в виде пар IP-адресов
в таблице NAT.
(рис 19.3) Работа правил в программе ipchainsРис.19.3 демонстрирует процессы обработки пакетов на сервере под управлением ОС Linux. В табл.19.5 дается подробное описание этих процессов.
| Процесс | Описание |
|---|---|
chesksum |
Выявляет искаженные пакеты |
sanity1 |
Выявляет неправильно сформированные пакеты |
input chain |
Проверяет входную цепочку правил брандмауэра |
demasquerade |
Для ответа на пакет с преобразованным адресом адрес должен быть сконвертирован в исходный адрес пакета |
routing |
Удаленный хост проверяет, является ли пакет локальным или требуется пересылка на другой хост |
sanity2 |
Выявляет неправильно сформированные пакеты |
|
Проверяет пересылаемую цепочку брандмауэра |
sanity3 |
Выявляет неправильно сформированные пакеты |
output chain |
Проверяет выходную цепочку брандмауэра |
Прежде чем пакет будет принят и
обработан на
С помощью программы 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.
Цепочки, определяемые пользователем, часто
применяются для упрощения сложных правил.
Спецификация правил включает в себя параметры, с помощью которых определяются действия, выполняемые согласно тому или иному правилу. В табл.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 используется
сценарий 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
В строке 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 представлены маски, с помощью которых можно описать сеть с определенным числом хостов.
| Маска | Количество рабочих станций |
|---|---|
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. Эта технология, наряду с другими, гарантирует администратору почтовой системы постоянную рабочую нагрузку.
В этой лекции
В этой книге делается попытка помочь администраторам сетей и почтовых систем установить и настроить полнофункциональный сервер электронной почты под управлением ОС Linux для работы в сети Internet. Возможно, эта лекция вызовет у некоторых из вас недоумение: зачем говорить об IP-маршрутизации, когда книга посвящена работе почтового сервера? Выбирая платформу для почтового сервера, необходимо руководствоваться несколькими критериями. Для обеспечения работы сервера электронной почты в настоящее время существует огромное количество программного обеспечения и операционных систем (хотя ни одна из них не сможет сравнится с ОС Linux). Чаще всего при создании локальной вычислительной сети возникает необходимость подключения ее к сети Internet. В некоторых ОС (таких, например, как Windows NT 4.0) уже заложены функции для подключения локальной сети к Internet. Другие ОС (например, Windows 95) требуют дополнительного программного обеспечения для поддержки этих функций.
Если вы остановили свой выбор на ОС Linux в качестве платформы для почтового сервера, то у вас появится вполне закономерное желание использовать его и как маршрутизатор при подключении рабочих станций к сети Internet. Это действительно возможно. В этой лекции описывается, каким образом сервер на базе ОС Linux доставляет электронную почту и обеспечивает доступ к сети Internet для рабочих станции локальной сети, выступая в качестве маршрутизатора.
Подключение отдельных рабочих станций к сети Internet с помощью сервера под управлением ОС Linux вы можете осуществить двумя способами:
В первом случае необходимо, чтобы каждому устройству в сети (каждой рабочей станции) был присвоен реальный 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-адресов, то, естественно, преобразование адресов не потребуется. В этом случае сервер под управлением ОС 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
Для настройки таблицы NAT в ядре
операционной системы имеется два
программных пакета. Наиболее популярным из
них является пакет ipfwadm,
который может работать с ядрами версий от 1.3
до 2.0. В ядро версии 2.1 были добавлены новые
функции для работы NAT. Если в имеющейся у вас
версии ОС Linux применяется ядро версии 2.1 или
выше, то вы можете использовать программный
пакет ipchains. В нем
широко используются новые возможности ядра
версии 2.1 и выше, такие как быстрое
преобразование адресов и возврат пакетов (отправка
отвергнутых ICMP пакетов обратно на
пославший их хост). Оба эти программных
продукта подробно описаны в разделах "Применение
утилиты ipfwadm" и "Применение утилиты ipchains".
При установке брандмауэра вы можете настроить программное обеспечение таким образом, чтобы пресекались любые попытки хакеров установить соединение с устройствами вашей сети. Это не отменяет функции системного администрирования. Вам все равно придется просматривать файлы отчетов системы для выявления попыток несанкционированного доступа. Сам по себе брандмауэр не дает стопроцентную гарантию безопасности.
Как уже отмечалось ранее, применение общедоступных 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.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 позволяет манипулировать
внутренней таблицей 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,
можно разделить на четыре категории:
Каждой категории соответствует
определенный набор правил. Все правила
располагаются в порядке их определения,
поэтому будьте внимательны: некоторые
правила могут противоречить заданным ранее
правилам. Формат команды для запуска ipfwadm
следующий:
ipfwadm category
command parameters [options]
Параметр category
говорит о типе задаваемых правил. В табл.19.1
представлены возможные типы категорий.
| Категория | Описание |
|---|---|
-A |
правила для учета IP-пакетов |
-I |
правила брандмауэра для входящих пакетов |
-O |
правила брандмауэра для исходящих пакетов |
-F |
правила брандмауэра при пересылке IP-пакетов |
-M |
правила для управления преобразованием адресов |
В одной строке можно вводить
только правила одной категории. Каждая
категория описывает отдельный список
правил для ipfwadm.
Категория правил -M
используется для управления
преобразованием адресов.
Команды, с помощью которых
осуществляется добавление, удаление и
изменение значений правил, задаются в
командной строке. В табл.19.2 приведены
команды, доступные для каждой из категорий
правил (кроме категории -M ).
| Команда | Описание |
|---|---|
-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.
| Параметр | Описание |
|---|---|
-P protocol |
Проверяемый протокол |
-S |
Проверяемый адрес(а) отправителя |
-D |
Проверяемый адрес(а) получателя |
-V address |
Дополнительный адрес интерфейса, через который пакет будет принят |
-W address |
Дополнительное имя интерфейса, через который пакет будет принят |
В качестве адреса можно
указывать как IP-адреса отдельных устройств,
так и адрес сети с соответствующей маской.
Маска подсети определяет количество
активных бит. Так, например, значение маски
24 соответствует маске подсети вида 255.255.255.0.
Дополнительные настройки правил
могут выполняться с помощью опций. В табл.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
В строке 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 в
том же порядке, в котором они были введены; в
таком же порядке они и обрабатываются.
После того как вы создали нужный
В ядре ОС 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 правилами четырех
категорий. Эти категории:
В программе ipchains
используется принцип формирования
цепочек правил, которые совместно
регулируют процесс фильтрации пакетов по
мере их прохождения через сервер на базе ОС
Linux. Помните о том, что правила создаются для
облегчения системному администратору
управления таблицей NAT. На рис.19.3
представлена графическая схема цепочки
правил. Все правила хранятся в виде пар IP-адресов
в таблице NAT.
(рис 19.3) Работа правил в программе ipchainsРис.19.3 демонстрирует процессы обработки пакетов на сервере под управлением ОС Linux. В табл.19.5 дается подробное описание этих процессов.
| Процесс | Описание |
|---|---|
chesksum |
Выявляет искаженные пакеты |
sanity1 |
Выявляет неправильно сформированные пакеты |
input chain |
Проверяет входную цепочку правил брандмауэра |
demasquerade |
Для ответа на пакет с преобразованным адресом адрес должен быть сконвертирован в исходный адрес пакета |
routing |
Удаленный хост проверяет, является ли пакет локальным или требуется пересылка на другой хост |
sanity2 |
Выявляет неправильно сформированные пакеты |
|
Проверяет пересылаемую цепочку брандмауэра |
sanity3 |
Выявляет неправильно сформированные пакеты |
output chain |
Проверяет выходную цепочку брандмауэра |
Прежде чем пакет будет принят и
обработан на
С помощью программы 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.
Цепочки, определяемые пользователем, часто
применяются для упрощения сложных правил.
Спецификация правил включает в себя параметры, с помощью которых определяются действия, выполняемые согласно тому или иному правилу. В табл.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 используется
сценарий 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
В строке 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 представлены маски, с помощью которых можно описать сеть с определенным числом хостов.
| Маска | Количество рабочих станций |
|---|---|
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. Эта технология, наряду с другими, гарантирует администратору почтовой системы постоянную рабочую нагрузку.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.