Детали подготовки сервера к выполнению в рамках поддерева chroot зависят от типа сервера и версии Linux, однако общий ход процедуры остается прежним. Возможно, вам придется немного модифицировать среду поддерева chroot, например, изменить права доступа к каталогам или настроить сервер для запуска от имени пользователя, отличного от root.
Поддерево chroot представляет собой чрезвычайно полезный инструмент, однако требует выполнения определенных действий по поддержке. Ниже перечислены вопросы, которым администратор должен уделять внимание при поддержке поддерева chroot.
• Ротация. Во всех версиях Linux реализован механизм ротации файлов протоколов. Если сервер записывает файлы протоколов в каталог поддерева chroot, необходимо настроить средства ротации для работы с файлами, находящимися в этом каталоге. В качестве альтернативного решения при вызове mount можно указать опцию --bind, при этом файл, предназначенный для хранения файлов протоколов, станет доступным из поддерева chroot. Однако такой подход можно применять только в тех системах в которых используется версия ядра не ниже 2.4.x. Если вы не уделите внимания файлам протоколов, они будут неограниченно расти и в конце концов займут все доступное дисковое пространство.
• Обновление программ. При обновлении программного обеспечения дополнительные файлы приходится копировать в каталоги поддерева chroot. Если вы не сделаете этого, на компьютере будет выполняться старый вариант сервера, т.е. в результате установки дополнений ошибки в программе не будут устранены. Необходимо также следить за изменениями в сценариях запуска, иначе может произойти так, что сервер будет выполняться за пределами поддерева chroot.
• Обеспечение доступа к файлам. Если ваш сервер использует файлы с данными, вы должны разместить их в поддереве chroot. Обычно при копировании таких файлов не возникает проблем. Вам необходимо лишь следить за тем, чтобы права доступа к файлам были установлены в соответствии с используемой вами схемой защиты.
• Использование новых программ поддержки. В некоторых случаях может возникнуть необходимость разместить в каталогах поддерева chroot новые программы поддержки. Так, например, если Web-сервер обеспечивает работу сценариев CGI, ему может потребоваться интерпретатор нового языка. Наряду с размещением новых программ поддержки в поддереве chroot необходимо удалять файлы, не используемые сервером. Этим вы устраните неоправданный риск при работе сервера.
Для решения описанных выше вопросов не требуется много времени. Необходимые действия в основном сводятся к однократной установке требуемых значений опций, в остальных случаях приходится обновлять сервер или изменять его конфигурацию.
Ограничение сферы действия сервера поддеревом chroot позволяет уменьшить риск, связанный с работой этого сервера. Такой подход приемлем в основном для серверов, обращающихся в процессе выполнения к ограниченному набору файлов. Для того чтобы обеспечить функционирование сервера в рамках поддерева, надо продублировать в поддереве chroot некоторые каталоги и файлы системы Linux. В ряде случаев приходится копировать в каталог поддерева и исполняемый файл сервера. Некоторые серверы самостоятельно вызывают функцию chroot(), а для запуска других приходится применять программу chroot. Независимо от способа запуска, сервер не может обращаться за пределы поддерева. Корневой каталог поддерева chroot он воспринимает как корневой каталог всей файловой системы. При подготовке сервера к выполнению в рамках поддерева chroot следует выяснить, какие файлы нужны для его выполнения и с какими вспомогательными программами он должен взаимодействовать в работе. Соответствующие файлы надо скопировать в каталоги поддерева chroot. Чтобы сервер мог выполняться в поддереве chroot, необходимо также модифицировать стандартную процедуру его запуска. Среда chroot требует поддержки, но для выполнения соответствующих действий администратору приходится затрачивать не слишком много времени.
Глава 24
Расширенные средства маршрутизации
Несмотря на то что Linux считается операционной системой общего назначения, количество специальных применений Linux постоянно увеличивается. Известны даже случаи использования данной системы в устройствах PDA и видеомагнитофонах. Одним из специальных (хотя и не столь экзотических) применений Linux является маршрутизация. Маршрутизаторы не относятся к числу общеизвестных устройств, многие пользователи даже не знают об их существовании, однако они жизненно необходимы для нормальной работы Internet. К маршрутизаторам относятся как простые и недорогие устройства, предназначенные для подключения небольшой сети к Internet, так и высокопроизводительные средства, обеспечивающие передачу пакетов, поступающих по высокоскоростным магистралям. Linux можно без труда настроить для работы в качестве низкоуровневого маршрутизатора. Если же в сети насчитывается несколько десятков компьютеров, необходимо применять расширенные средства маршрутизации. Эти средства позволяют использовать при доставке пакетов систему приоритетов и взаимодействовать с другими компьютерами.
На заметку
Если вы собираетесь создавать NAT-маршрутизатор на базе Linux, вам следует ознакомиться с материалом, изложенным в следующей главе.
Базовая конфигурация маршрутизатора на базе Linux устанавливается достаточно просто, но при использовании расширенных средств маршрутизации могут возникнуть проблемы. В данной главе приведены лишь общие сведения о способах маршрутизации и об инструментальных средствах, используемых для этого. Дополнительную информацию вы найдете в документации на конкретные инструменты. Кроме того, вопросы, рассматриваемые в данной главе, подробно изложены в книге Лебланка (LeBlanc) и др. Linux Routing (New Riders, 2002).
Использование расширенных средств маршрутизации
Приступая к чтению данной главы, следует иметь в виду, что в ней рассматриваются расширенные средства маршрутизации. Если трафик, связанный с обменом внутренней сети с Internet, невелик и если от маршрутизатора требуется поддержка лишь простых статических маршрутов, вам нет никакой необходимости использовать средства, описанные в данной главе. На компьютере, содержащем две сетевые карты, вы можете реализовать перенаправление пакетов с помощью следующей команды:
# echo "1" > /proc/sys/net/ipv4/ip_forward
При наличии нескольких сетей для организации доставки пакетов достаточно простой таблицы маршрутизации.
На заметку
Для того чтобы обеспечить маршрутизацию на локальном компьютере с несколькими интерфейсами, достаточно лишь правильно заполнить таблицу маршрутизации, а компьютеры, к которым он непосредственно подключен по сети, должны лишь знать о том, что этот компьютер выполняет функции маршрутизатора. В качестве примера рассмотрим компьютер под управлением Linux, который используется для подключения небольшой сети к Internet посредством линии SDSL. Если компьютер не поддерживает NAT, маршрутизатор провайдера, к которому рассматриваемый компьютер подключен посредством сетевого интерфейса, должен знать, что этот компьютер является маршрутизатором для локальной сети. Если маршрутизатор провайдера не имеет таких сведений, он будет передавать по назначению пакеты, отправленные из локальной сети, но не сможет доставить пакеты, переданные в ответ. В большинстве случаев необходимо, чтобы администратор сети, к которой подключена ваша сеть, настроил свой маршрутизатор для взаимодействия с вашим. Кроме того, вам надо сконфигурировать узлы вашей сети так, чтобы они использовали компьютер под управлением Linux в качестве маршрутизатора.
В данной главе рассматриваются вопросы принятия решений о маршрутах пакетов на основании исходного адреса, адреса назначения и типа протокола. От того, насколько правильно приняты такие решения, зависит эффективность работы Internet. Так, например, целесообразно присвоить высокий приоритет пакетам, которые соответствуют интерактивным протоколам, за счет задержки менее важных данных. Конфигурация, позволяющая выполнить подобные действия, обычно устанавливается на выделенных маршрутизаторах, предназначенных для обработки больших объемов информации.
В этой главе также рассматриваются протоколы маршрутизации, которые позволяют организовать взаимодействие с другими маршрутизаторами. Маршрутизаторы, поддерживающие эти протоколы, позволяют динамически заполнять таблицы маршрутизации, обеспечивая наиболее быструю доставку пакетов. Благодаря использованию этих протоколов повышается производительность сети, однако они в основном применяются тогда, когда маршрутизатор подключен к Internet через несколько сетевых интерфейсов. Если же для соединения с Internet используется лишь один интерфейс, применять протоколы маршрутизации бессмысленно, так как они не будут оказывать влияния на содержимое таблицы маршрутизации.