[daemonix]
6.5. Серверное ПО

В продолжение темы о программном обеспечении UNIX, не могу не отметить, что эта операционная система была, буквально, взращена на коммуникациях. Коммуникации - тот аспект функционирования UNIX, который она умеет делать лучше всего. Пользователю, смотрящему на мир Интернет через окна Windows (простите за каламбур), зачастую невдомек, что подавляющее большинство работы для него делают именно UNIX системы. Развитая сетевая инфраструктура UNIX систем - это именно то, что дало жизнь сети Интернет, создало его.


6.5.1. Apache

Apache Logo

Наиболее популярная часть Интернет - WWW. У нас в России более чем три четвертых этого пространства "контролируется" WWW серверами на базе свободно распространяемого программного пакета Apache, предназначенного для UNIX систем. Статистику на конец 1999 года можно посмотреть здесь, а описание технологии ее сбора и комментарии тут.

Сервер представляет собой программный демон, обслуживающий HTTP (Hyper Text Tranfer Protocol - протокол передачи гипертекста) запросы и выполняющий много сопутствующей работы, как, например, трансляцию кодировки передаваемых документов в соответствии с затребованной клиентом кодировкой, в локализованной русской версии сервера. Самой главной отличительной и, одновременно, положительной особенностью сервера является его модульность. Иными словами, сервер состоит из основного программного модуля (httpd), реализующего базовую функциональность, и дополнительных, подгружаемых по необходимости, модулей, расширяющих его возможности. Такая архитектура позволила построить очень гибкий и мощный программный продукт. Основные возможности сервера включают в себя:

  • гибкую поддержку русского языка, с автоматической перекодировкой по запросу; поддерживаются кодировки: koi8-r, windows-1251, cp866, ISO-8859-5, x-mac-cyrillic;
  • исполнение Java приложений на стороне сервера;
  • поддержку Microsoft Frontpage;
  • SSL/TSL (Secure Sockets Layer/Transport Layer Security) шифрование передаваемых данных;
  • PHP технологию - многоплатформенный язык описания сценариев для генерации HTML документов на основе информации баз данных;
  • встроенный интерпретатор языка Perl;

и многое другое.

Сервер вырос из ранее популярного WWW сервера NCSA (National Center for Supercomputing Applications), разработка которого была заморожена в середине 1994 года. Несколько энтузиастов этого сервера решили продолжить развитие его на основе так называемых "заплат" (a patches - заплаты, на компьютерном сленге означает незначительные модификации исходного кода программы). Сформировав группу из восьми человек и назвав ее по созвучию - Apache, они принялись за работу в начале 1995 года, взяв за основу NCSA httpd версии 1.3, и в апреле месяце была уже выпущена первая, публично доступная, версия сервера. Меньше чем через год Apache превзошел своего родителя, став сервером "номер один" в мире WWW, каковым и является по сей день.

Сейчас Apache существует не только для UNIX платформ, но и для Microsoft Windows 9x/NT. Рекомендую.


6.5.2. Squid

Squid Logo

Уж коль мы начали разговор про WWW, а это, в первую очередь, протокол HTTP, то стоит рассказать еще об одном малозаметном, но очень "шустром" демоне - Squid. Многие пользователи DOS или Windows знают что такое SmartDrive или Norton Cache - программы, предназначенные для ускорения доступа к медленным, по сравнению со скоростью доступа к оперативной памяти, дисковым накопителям, посредством кэширования (временного хранения) передаваемых данных в оперативной памяти. Так вот это головоногое, а именно так переводится название пакета на русский язык, делает тоже самое, но с HTTP трафиком. Разумеется он не хранит кэшируемые данные в оперативной памяти компьютера, на котором функционирует, на это может не хватить даже памяти сегодняшних суперкомпьютеров, а держит кэш на дисковом накопителе, чего, впрочем, вполне хватает, поскольку скорость выборки данных с диска всегда выше, чем пропускная способность канала во внешний мир.

Кэширование не только увеличивает скорость доступа, но и заметно разгружает внешний канал, поскольку однажды полученные данные повторно через него уже не передаются, при условии, что эти данные не изменились на источнике. Если учесть, что содержимое WWW серверов меняется не так уж часто, по сравнению с частотой их посещений, а вы платите за доступ в Интернет, то этот головоногий демон может здорово сэкономить ваши деньги.

На этом умения squid не заканчиваются. Еще одно интересное и очень полезное его свойство - перенаправление запросов, называемое редирекцией, а модуль, выполняющий редирекцию, называется (правильно!) редиректором. Представьте себе ситуацию: вас нет дома, а ваше горячо любимое чадо намеренно или случайно попало на порно-сайт. О, ужас! Спокойствие, только спокойствие! (© Карлсон, который живет на крыше). Если между броузером, которым воспользовалось ваше чадо, и внешним миром находится squid с правильно настроенным редиректором, то вместо порно-сайта он попадет, скажем, на http://www.disney.com.

Кроме подмены одних сайтов другими, причем такая подмена абсолютно незаметна со стороны клиента, в строке ввода URL которого будет именно то, что ввели, а не то, куда его перенаправили, редирекция позволяет очень эффективно блокировать нежелательный трафик. Например, фильтровать рекламные баннеры, которыми сейчас просто наводнен World Wide Web. Вместо баннеров вы будете видеть абсолютно чистое место, будто их там вообще не было. На рисунке показано как выглядит одна из российских поисковых систем "Рэмблер" без баннеров.

Rambler без баннеров

Если учесть еще то, что, представляя собой динамически изменяющийся контекст, баннеры практически не поддаются кэшированию, а значит постоянно прокачиваются через внешний канал, то их блокирование посредством редирекции - это дополнительные сэкономленные деньги в вашем кармане.


6.5.3. Sendmail

Sendmail Logo

Демона sendmail иногда называют гибелью системного администратора (doom of system administrator). Связано это с тем, что более сложной в конфигурировании и более гибкой и многофункциональной программы в UNIX мире просто не существует. Хотя основной и единственной задачей sendmail, что прямо следует из его названия - "слать почту", является транспорт электронной почты, тем не менее это такой инструмент, который позволяет проделывать с этой почтой поистине волшебные и невероятные вещи.

Возможности, заложенные в эту программу ее разработчиками, не являлись самоцелью создания самой сложной программы в мире, а являются следствием поистине ужасающей неоднородности и нестатичности среды существования называемой Интернет. Такая мощь не могла не отразиться на технологии настройки программы, конфигурационный файл sendmail достаточно велик - десятки килобайт и выглядит на первый взгляд как китайская грамота. Испугались? Теперь, пожалуйста, перечитайте заголовок статьи.

На самом деле существует относительно простой способ настройки, позволяющий получить необходимый результат при минимуме усилий и времени. Это способ основан на использовании макро-процессора m4 и хорошо описан в документации на sendmail. Фактически вы описываете на языке m4, что собственно хотите получить, размер файла описания редко превосходит один килобайт. После этого выполняется трансляция файла макро-процессором, который, используя набор макросов, входящих в комплект sendmail, генерирует конфигурационный файл.

Вообще говоря, sendmail - это тема не абзаца, не главы и не статьи, а целой, весьма увесистой книги. Единственное, что еще хотелось бы добавить по поводу этой программы, так это то, что подавляющее большинство электронной почты в сети Интернет доставляет именно она. Если вы откроете ваш почтовый ящик и внимательно посмотрите на заголовки ваших писем, то наверняка почти в каждом вы увидите строки вида:

Received: from octo.memory.se (octo.memory.se [193.13.247.17]) by mail.infopac.ru (8.9.3/8.9.3) with ESMTP id RAA51022 for <vap@infopac.ru>; Sat, 27 May 2000 17:44:29 +0500 (SAMST)

Такие строки вставляет программа sendmail в каждое почтовое отправление при его доставке.


6.5.4. INN (InterNetNews)

Гостиница (inn - англ. гостиница, постоялый двор) для тех, кто любит пообщаться. Программный пакет сервера службы электронных новостей Usenet, включающий в себя два основных демона: innd - сервера поддержки NNTP (Network News Trasfer Protocol - протокол передачи сетевых новостей) и nntpd - сервера поддержки NNRP (Network News Read Protocol - протокол чтения сетевых новостей). Кроме этих демонов в пакет входит большое количество программ, позволяющих построить мощную и гибкую систему доставки и обработки электронных новостей, отвечающую вашим требованиям.

Очень хорошее описание INN можно найти в документе "InterNetNews: Usenet transport for Internet sites", который написал сам автор INN - Рич Салз (Rich Salz). Для чтения или печати документа вам понадобится программа понимающая формат PostScript.

Сейчас INN поддерживается Internet Software Consortium.


6.5.5. Samba

Samba Logo

Еще одна, на этот раз танцующих танец самбу, группа демонов. Если серьезно, то это сервер поддержки службы CIFS (Common Internet File System), ранее называемой SMB (Server Message Block), что Microsoft называет "Службой доступа к файлам и принтерам сетей Microsoft".

Функционируя на UNIX платформе Samba "разговаривает" с Windows системами на их языке. Это позволяет легко реализовать доступ Windows клиентам к файлам и принтерам на UNIX системе и наоборот. Кроме того, при помощи Samba можно создать сервер контроллер домена (рабочей группы), что фактически означает возможность замены Windows NT на UNIX систему.


6.5.6. PicoBSD

PicoBSD Logo

PicoBSD - это не программный пакет, а специальным образом собранная версия FreeBSD, которая умещается на одной (!!!) трехдюймовой дискете. Она может использоваться как сетевой маршрутизатор, сетевой шлюз, сервер доступа осуществляющий поддержку входящей или исходящей дозвонки. Все это будет замечательно работать даже на машине с процессором i386SX, 8 МБ оперативной памяти и без жесткого диска.


6.5.7. ipfw

Сетевой экран ipfw представляет собой не программный пакет, а специальный компонент интегрируемый непосредственно в ядро операционной системы, что обеспечивает его высокую эффективность. Функционируя на уровне ядра системы ipfw контролирует прохождение IP пакетов на основе так называемых правил. Эти правила описывают как экран должен действовать при прохождении через него тех или иных пакетов. Если обрабатываемый пакет соответствует условию описанному в правиле, то экран выполняет задаваемую правилом операцию либо пропуская пакет дальше, либо удаляя его с уведомлением источника пакета об отказе в доступе, либо удаляя без уведомления.

Язык описания правил функционирования ipfw достаточно прост и тем не менее гибок. Это позволяет строить на базе ipfw эффективные системы сетевого экранирования способные, в первую очередь, качественно защитить, как сам хост, на котором функционирует ipfw и называемый в силу своей функциональности бастионом, так и сеть находящуюся за ним от несанкционированного доступа. Кроме того, не менее эффективно возможно ограничивать доступ из локальной сети через бастион во внешние сети. На этом не заканчиваются возможности ipfw. При помощи его можно вести учет проходящего трафика, управлять скоростью передачи данных для определенных соединений и многое другое.

Если говорить об ipfw в сравнении с системами аналогичного назначения, то можно сказать, что по своим возможностям и эффективности ipfw практически не уступает сетевому экрану используемому в маршрутизаторах фирмы Cisco Systems, которые давно зарекомендовали себя как лучшее оборудование на поприще передачи данных.


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


Обновлено: 12.03.2015