Page 1

2 октября 2007 12.00-17.00 №7(56) июль 2007 подписной индекс 20780 www.samag.ru

Москва, ВВЦ, Павильон №69 Малый конференц-зал

Приглашаем читателей на День рождения журнала! В программе* nginx, его возможности и использование для повышения скорости работы Web-сервера

Что нового в PostgreSQL 8.3?

Филипп Торчинский, Sun Microsystems

* в программе возможны изменения

Групповые политики в доменах Active Directory MOSS 2007: оцените удобство! OpenWRT – Linux-дистрибутив для встраиваемых систем

Иван Золотухин, Постгресмен

Игорь Сысоев, Рамблер

Передовые технологии OpenSolaris для системных администраторов

№7(56) июль 2007

Выставка «Softool»

Новые возможности Windows Server 2008 Данила Корнев, Microsoft

Централизованная настройка UNIX-систем с помощью Puppet Как работает служба Network Load Balancing Особенности инсталляции ОС Solaris Библиотека Prototype – ваш путь в Web 2.0 MySQL vs PostgreSQL


в номере 3 ТЕНДЕНЦИИ АДМИНИСТРИРОВАНИЕ 4 Групповые политики в доменах AD

Администратору локальной сети не приходится надеяться на сознательность пользователей при работе в сети предприятия, поэтому работы по созданию эффективной и безопасной рабочей среды – дело непростое. На помощь приходят групповые политики, использование которых как нельзя лучше подходит для выполнения административных задач. Александр Емельянов numb13@mail.ru

10 Знакомимся с Windows Server 2008 Beta 3

Весной этого года корпорация Microsoft выпустила Beta 3 версию новой серверной операционной системы Windows Server 2008. Посмотрим, какие новые функции и приложения появились в этом программном продукте. Андрей Бирюков mex_inet@rambler.ru

18 MOSS 2007: быстрая настройка и самые интересные возможности

Новая линейка продуктов Sharepoint удивляет приятными сюрпризами администраторов, хорошо знакомых с предыдущими версиями, и привлекает интересными возможностями тех, кто только подумывает о развертывании корпоративного портала с помощью Sharepoint. Нелли Садретдинова nelly@ufanipi.ru

32 Технология NLB – отказоустойчивость без лишних затрат

Решение задачи распределения нагрузки является одной из важнейших на сегодня. Предлагаем рассмотреть одно из таких решений, построенных на основе службы Network Load Balancing, входящей в состав Windows Server 2003. Андрей Бирюков mex_inet@rambler.ru

38 MySQL vs PostgreSQL

Какую СУБД выбрать, как спроектировать схему данных и где узкие места при использовании той или иной СУБД? Тестируем производительность СУБД MySQL и PostgreSQL на примере блогохостинга. Андрей Шетухин reki@reki.ru

42 OpenWRT – Linux для встраиваемых систем

Если вы сталкиваетесь с постоянными зависаниями, неудобством управления или нехваткой функционала вашего роутера, и именно поэтому он вам не нравится – возможно, стоит попробовать установить OpenWRT. Дмитрий Столяров _@mrms-dos.ru

54 BusyBox: швейцарский нож для встраиваемых Linux-систем

Системные администраторы и пользователи UNIX и Linux-систем, несомненно, привыкли к работе со своей любимой командной оболочкой и к стандартным программным средствам. Но их повсеместное использование не всегда возможно. И тогда на помощь приходит BusyBox – упрощенный shell с набором компактных системных средств. Дмитрий Шурупов osa@samag.ru

№7, июль 2007

58 Централизованная настройка UNIX‑систем с помощью Puppet

Изучаем возможности Puppet – функционального и гибкого инструмента, который позволяет решить большую часть задач по одновременному администрированию большого числа UNIX-систем. Сергей Яремчук grinder@ua.fm

62 Особенности инсталляции Solaris

Как подружиться с «динозавром»? Бывает, так ласково называют одну из старейших операционных систем семейства UNIX – Solaris. С чего же можно начать знакомство? Как вариант – с первоначальной установки. Посмотрим, в чем заключаются особенности первой встречи с Solaris 10. Владимир Василькин vasil1979@mail.ru

68 Построение отказоустойчивой системы с помощью Oracle Physical Standby

Развернув информационную систему на базе Oracle и организовав надёжную стратегию резервного копирования-восстановления, можно приступать к производственной эксплуатации системы. В случае аварии мы сможем восстановить данные на требуемый момент времени. Но что делать, если допустимое время простоя не должно превышать нескольких минут? Тогда не обойтись без различных способов дублирования данных в режиме реального времени. Сергей Косько sergkosko@ua.fm

ЧЕЛОВЕК НОМЕРА 74 Капитан корабля

Наброски к документальному фильму о директоре Softline Игоре Боровикове. Оксана Родионова rodion@dol.ru

WEB-ПРОГРАММИРОВАНИЕ 78 Библиотека Prototype – ваш путь в Web 2.0

Работа, направленная на повышение удобства и практичности пользовательского интерфейса зачастую отнимает много времени, которое хотелось бы потратить на разработку бизнес-логики приложения. Разработчики настольных систем имеют в своём арсенале такие средства, как MFC, Gtk, Qt и другие библиотеки. Чем же может воспользоваться веб-программист? Кирилл Сухов suckhov@planetashop.ru

РЕТРОСПЕКТИВА 84 История компании Intergraph

Уже полвека корпорация IBM считается лидером по производству мэйнфреймов и суперкомпьютеров. За компанией Apple прочно укрепился статус де-факто поставщика техники для вёрстки и дизайна. Подобный список можно продолжить. Что же касается систем автоматизированного проектирования, здесь на протяжении нескольких десятилетий лидирует компания Intergraph, истории которой и посвящена статья. Дмитрий Мороз akuji@list.ru

92 КНИЖНАЯ ПОЛКА 37, 57, 73

BUGTRAQ




тенденции Лицензия GPLv3 вызвала смешанные чувства Обнародованная в конце июня Организацией свободного ПО лицензия GNU GPLv3 стала причиной противоречивой реакции со стороны и компаний, и сообщества. Так, например, Samba Team сразу же объявила о своем намерении перейти на GPLv3. Все версии Samba начиная с релиза 3.2 будут распространяться под этой новой лицензией (а версии Samba 3.0.x и более ранние останутся под GPLv2). Участники проекта выразили благодарность лично Ричарду Столлману (Richard Stallman) и Эбену Моглену (Eben Moglen), а также и всей организации FSF за GPLv3, выразив свою уверенность в том, что лицензия будет способствовать продвижению свободного ПО. Тем временем корпорация Microsoft обнародовала уведомление о том, что клиенты ее альянса с Linux-поставщиком Novell не смогут покупать продукты, распространяемые под лицензией GPLv3, и получать поддержку по ним. Это решение было принято в Microsoft несмотря на убежденность представителей корпорации в том, что никаких проблем с лицензированными под GPLv3 продуктами у них возникнуть не может. Цель инициативы – развеять любые сомнения и предотвратить возможные дебаты по этому вопросу. Однако руководству Novell данную позицию Microsoft пришлось комментировать, пообещав всем клиентам, что они будут защищены от патентных притязаний и в случае использования ПО, лицензированного по GPLv3. Джеймс Боттомли (James Bottomley), занимающийся поддержкой подсистемы SCSI в ядре Linux, сообщил, что потенциальный переход Linux-ядра на GPLv3 серьезно затруднен. Он пояснил это тем, что для подобной лицензионной миграции разработчикам потребуется связаться со всеми авторами кода, содержащегося в Linux-ядре, а таковых – от 3,5 до 10 тысяч человек. Учитывая же тот факт, что в GPLv3, по мнению разработчиков Linux-ядра, нет принципиальных преимуществ перед GPLv2, начинать такую инициативу никто не собирается. Также стоит отметить, что за первую неделю после выхода финальной версии лицензии GPLv3 на нее перешли 116 проектов.

компонентов дистрибутива, ратующей за «свободу» в контексте Free Software. В Gobuntu не будет никакого firmware, драйверов, графических изображений, звуков, приложений и другого содержимого, не включающего в себя полного исходного кода материала или не сопровождающегося полными правами на модификацию и распространение. Первый релиз Gobuntu запланирован на время выпуска следующей версии Ubuntu 7.10, то есть в октябре этого года.

Intel запустила Open Source-инициативу Компания Intel запустила новый проект Moblin (Mobile & Internet Linux Project), направленный на продвижение разработки программного обеспечения с открытым кодом для мобильных устройств. Moblin охватывает широкий спектр программного обеспечения для мобильных устройств, среди которого: специфичные для различных платформ патчи к Linux-ядру, фреймворк для пользовательского интерфейса на базе GTK+, управление питанием, сетевой менеджер, веб-браузер на базе Mozilla, мультимедийный плеер «Moblin Media Artist», утилиты для работы с изображениями, основанный на Telepathy клиент обмена сообщениями. Помимо программных разработок проект Moblin включает в себя такие дополнительные ресурсы, как документация, почтовые рассылки и IRC-канал для общения. Подробности об инициативе Intel доступны на www.moblin.org.

Составил Дмитрий Шурупов по материалам www.nixp.ru

Apple купила права на CUPS На официальном сайте проекта по разработке системы печати CUPS появилось сообщение о том, что компания Apple стала правообладателем исходного кода CUPS. В новости от 11 июля 2007 года автор проекта объявил следующее: «В феврале 2007 года Apple Inc. приобрела права на исходный код CUPS и взяла на работу меня (Майкла Свита [Michael R Sweet]), создателя CUPS. CUPS по-прежнему будет распространяться по существующим условиям лицензий GPL2/LGPL2, а я продолжу разработку и поддержку CUPS в Apple».

Запущен проект «свободной» версии Ubuntu Марк Шаттлворт (Mark Shuttleworth), отец Ubuntu, в своем блоге представил старт проекта новой редакции популярного Linux-дистрибутива – Gobuntu. Особенность очередной редакции Ubuntu заключается в радикальной политике в отношении лицензирования всех

№7, июль 2007




администрирование

Групповые политики в доменах AD

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


администрирование

П

остараемся обобщить информацию по технологии разворачивания и применения групповых политик (ГП) в службе каталогов. В частности: n в чем выгода для администратора при использовании ГП; n сущность объектов ГП и их место в каталоге AD; n отличие ГП домена от локальных политик рабочих станций; n как создаются, назначаются и применяются ГП в домене; n наследование и приоритеты для ГП; n утилиты gpupdate, gpresult и RSoP; n другие утилиты для управления и диагностики неисправностей в применении ГП; n будущее ГП – что нового в плане групповых политик в Windows Vista.

Для чего нужны групповые политики в домене

Рисунок 1. Редактор групповых политик gpedit.msc

источникам от 60 до 80% пользователей во всем мире используют для просмотра веб-страниц именно этот браузер); n настраивать перенаправление определенных папок из профиля пользователя; n накладывать ограничения на рабочий стол; n определять настройки таких категорий, как автономные папки, дисковые квоты и др., не исключением являются настройки самих групповых политик.

В предыдущей статье [1] я говорил об управлении пользователями в среде Active Directory. Cлужба каталогов облегчает работу IT-подразделения по администрированию информационных ресурсов предприятия. ТехноВсе настройки администратор мологии Intellimirror и CCM (Change and Configuration Management – управле- жет сделать при помощи редактора ние изменениями и конфигурация- системного реестра, но интуитивно ми) позволяют управлять рабочими понятный интерфейс редактора объместами, используя перемещаемые ектов групповой политики во многом профили и перенаправление ката- упрощает эту задачу. логов, автономные папки и распространение программ. Многие из этих Структура объектов задач легко выполняются при помо- групповой политики щи групповых политик, обеспечивая и их место в службе при этом централизованное управ- каталогов ление, а также гибкий механизм на- Объект групповой политики (GPO, стройки и отладки. Групповые поли- Group Policy Object) состоит из двух частей: конфигурация компьютера тики позволяют: n назначать сценарии запуска, вхо- (Computer Configuration) и конфигурация пользователя (User Configuration) да и выхода; n распространять программное обес- (см. рис. 1). Он является контейнером печение в сети при помощи публи- для групп политик, применяемых соответственно к машинам и пользовакации или назначения; n однозначно определять набор на- телям сети. В «Конфигурации компьютера» адстроек безопасности для удаленминистратор может настроить параных машин; n определять политики паролей метры безопасности, политики паролей пользователей, параметры аудидля пользователей домена; n ко н ф и г у р и р о в ат ь п а р а м ет р ы та, использование групп с ограниченInternet Explorer (даже несмотря ным доступом (Restricted Groups), пана всю его «дырявость», по разным раметры реестра и так далее.

№7, июль 2007

В разделе «Конфигурация пользователя» настраиваются параметры рабочего окружения пользователя (настройки рабочего стола, вид и ограничения для панели задач и меню «Пуск»), перенаправление папок, а также параметры Internet Explorer. Каждый объект GPO создается с помощью редактора групповых политик (Group Policy Object Editor). Запустить его можно из вкладки Group Policy свойств контейнера. Как уже говорилось, GPO содержит в себе два узла, в которых определяются специфичные для компьютеров и пользователей настройки. Однако бывает, что существуют идентичные настройки для компьютеров и пользователей. Как система «разруливает» их применение, будет рассказано далее. Каждая политика в объекте GPO может быть сконфигурирована и нет. В первом случае она воздействует на объект и может быть в состоянии включено/отключено, а также принимать значения с указанием дополнительных параметров. Во втором – политика на объект не воздействует. Объекты групповых политик хранятся двумя частями: контейнер групповой политики (GPC, Group Policy Container) и шаблон групповой политики (GPT, Group Policy Template). Контейнер хранится непосредственно в службе каталогов и содержит информацию о свойствах, версии, статусе и список компонентов. Шаблоны GPT находятся в каталоге \Windows\SYSVOL\sysvol\ Domain_Name\Policies\GUID (см. рис. 2), где GUID – глобальный уникальный идентификатор объекта GPO. В этой




администрирование

Рисунок 2. Папка, содержащая шаблоны групповых политик на контроллере домена

папке содержатся административные шаблоны (ADM – файлы), настройки безопасности, информация о доступных приложениях и имена сценариев с командными строками.

Локальные политики рабочей станции Каждая рабочая станция под управлением операционных систем семейства Windows 2000 имеет свои локальные политики, и администратор домена имеет возможность редактировать их. Они схожи с групповыми политиками домена, но применяются для всех локальных пользователей компьютера без исключения. Также невозможно настроить ряд установок, таких, например, как перенаправление каталогов и установка приложений. Несмотря на это, структура объекта локальных групповых политик такая же, как и GPO домена. Размещается он в папке \Windows\system32\GroupPolicy. При помощи команды gpedit.msc вы можете редактировать локальные политики рабочей станции. Синтаксис строки для запуска gpedit.msc для просмотра локальной политики удаленной машины будет выглядеть следующим образом: Gpedit.msc /gpcomputer: Имя_Компьютера

Однако стоить заметить, что вы не сможете посмотреть локальные настройки безопасности удаленной ма-



шины (видимо, Microsoft сделала это из‑за соображений безопасности).

Групповые политики по умолчанию После создания первого контроллера домена формируются политики по умолчанию: Default Domain Controller Policy (привязывается к контейнеру Domain Controllers, применяется исключительно для контроллеров домена и содержит настройки безопасности) и Default Domain Policy (политика безопасности для домена, привязывается к контейнеру домена и распространяется на весь домен). Вы легко их можете заменить своими политиками, либо использовать в сочетании с другими. Еще один нюанс, который стоит отметить – если вы попытаетесь открыть Default Domain Controller Policy из меню «Администрирование», вам будут доступны только настройки безопасности. Полностью увидеть и изменить все настройки этого GPO можно из оснастки Active Directory – Users and Computers (DSA.MSC) в свойствах контейнера Domain Controllers.

Создание объектов GPO Несмотря на название, GPO не имеют ничего общего с группами. Объекты групповых политик могут быть связаны с контейнерами сайта, домена и OU (организационной единицы). Таким образом, для создания объекта GPO мы можем воспользоваться консолями

Active Directory – Users and Computers или Active Directory Sites and Services, все зависит от того, для какого контейнера мы создаем GPO. Итак, запускаем DSA.MSC либо DSSITE.MSC. Далее заходим в свойства контейнера и открываем вкладку «Групповая политика» (Group Policy), как это показано на рис. 3. Здесь мы можем создать или изменить GPO, а также добавить и привязать к объекту уже существующий GPO. В этих настройках можно удалить как ссылку на GPO, и тогда пропадет всего лишь привязка GPO к контейнеру, так и сам объект групповой политики. В параметрах (Options) устанавливается, разрешено ли перекрытие для этого объекта. При включенной опции «Не перекрывать» (No Override) другие политики не могут наложить свои настройки на установки данной. Если включена опция «Отключить» (Disabled), это значит, что GPO не будет применяться на этом уровне (к этому контейнеру). При установленном флажке «Блокировать наследование политики» (Block Inheritance) политики верхних уровней иерархии службы каталогов применяться не будут. Однако, если для политики более высокого уровня включена опция «No Override», блокировать наследование не удастся. В свойствах групповых политик можно увидеть дату создания, последнего изменения объекта GPO, его версию, GUID (Globally Unique Identifier, глобальный уникальный идентификатор) и домен, в котором располагается объект GPO. Здесь же есть возможность отключить настройки конфигурации компьютера или пользователя. На вкладке «Связи» (Links) можно посмотреть, с какими объектами службы каталогов GPO имеет связь. В настройках безопасности указывается, каким группам пользователей предоставляются права на чтение политики, изменение, применение и т. д. Напомню, что связывание и наследование объектов GPO происходит на уровне контейнеров. Но администратор может явно указать, будет ли той или иной группе пользователей, принадлежащих какому-либо контейнеру, разрешено чтение и применение групповых политик из объекта GPO, связанного с этим контейнером. Таким образом, при использовании ACL (Access Control List, список контроля доступа), определяются области действия политики


администрирование на основе групп. На вкладке «Фильтр WMI» (WMI Filter) вы можете выбрать, будет ли применяться к объекту политик фильтр WMI (Windows Management Instrumentation), и если да, то какой. При создании объект групповой политики привязывается к контейнеру, для которого вы его создали. Этот GPO будет храниться в Active Directory и может быть применен к другим контейнерам – сайтам, доменам и организационным единицам. Одновременно с этим вы можете удалить привязку GPO к контейнеру, не удаляя сам объект GPO. Групповые политики данного GPO к этому контейнеру применяться не будут, но сам объект все еще будет существовать в службе каталогов. Таким образом, может возникнуть ситуация, когда какой-либо объект групповой политики не будет связан ни с одним контейнером, но он все еще будет существовать в службе каталогов, и вы в любой момент сможете привязать его к сайту, домену или OU. Каждый контейнер может иметь связь с несколькими GPO, которые будут отображены в списке на вкладке «Групповая политики». И, чем выше политика, тем выше ее приоритетность. Выигрывающей является самая верхняя в списке политика. Изменить приоритетность вы можете, передвигая объекты вверх-вниз и меняя тем самым очередность. Важно понимать, что применение параметров при воздействии многих политик происходит снизу вверх, и, если политика в объекте GPO не сконфигурирована, она не будет воздействовать на параметр. Таким образом, для параметра будет установлено значение, определенное самым верхним в списке объектом GPO, в котором политика сконфигурирована.

Применение групповых политик пользователя и компьютера в системах Windows NT 5 Операционная система

Загрузка

Вход в систему

Обновление политик

Windows 2000

Синхронно

Синхронно

Асинхронно

Windows XP

Асинхронно

Асинхронно

Асинхронно

Windows 2003 Server

Синхронно

Синхронно

Асинхронно

жащая в интервале 60‑120 минут. Эту де в систему он сразу же видит рабовеличину можно изменить при помо- чий стол, не дожидаясь применения щи групповых политик, но не рекомен- всех политик. Для повышения безопасдуется делать ее очень маленькой, по- ности такое поведение можно изметому что это повлечет за собой затраты нить с помощью параметра Computer системных ресурсов из-за постоянного Configuration/Administrative Templates/ обращения к контроллеру домена. Для System/Logon/Always wait for the network контроллеров домена групповые поли- at computer startup and logon. тики обновляются каждые 5 минут. По умолчанию политики пользоваЗа обработку групповых политик теля применяются после политик комна компьютерах клиентов отвечает пьютера. Но может возникнуть ситуанабор динамических библиотек – кли- ция, когда встречаются политики, возентских расширений групповых поли- действующие на один и тот же паратик. И, к слову говоря, если на локаль- метр. В случае такого конфликта, поной машине не будет файла scecli.dll литики пользователя берут верх. Од(на компьютерах часто можно видеть нако такое поведение не всегда приемсобытие с источником SceCli и описа- лемо. Включение Loopback Processing нием «Политика безопасности в объ- (режим обратной обработки) позволяектах групповой политики успешно ет выйти из этой ситуации: применена»), то групповые политики n при установленной опции Merge на нем и вовсе выполняться не будут. (слияние) происходит объединеПрименение групповых политик ние двух одинаковых для конфипользователя и компьютера в систегурации компьютера и пользоватемах Windows NT 5 происходит по-разля политик: в случае, если политиному. В таблице показано, как это ка для компьютера не определена, происходит в различных системах а для пользователя задана, выигпо умолчанию. Попросту говоря, в сисрывает пользовательская полититеме Windows XP политики применяютка; в случае же, если политики конся после того, как пользователь уже фликтуют – выигрывает политика видит экран входа в систему. При вхокомпьютера;

Порядок применения групповых политик При загрузке компьютер получает от контроллера домена своего сайта список групповых политик в том порядке, в котором он должен их применить. Аналогично при входе пользователя в систему происходит запрос групповых политик, определенных для контейнера, которому этот пользователь принадлежит, и дальнейшее их применение. Далее в процессе работы групповые политики обновляются в фоновом режиме каждые X минут, где X – величина, ле-

№7, июль 2007

Рисунок 3. Открытие редактора групповых политик в DSA.MSC




администрирование

Рисунок 4. Открытие инструмента RSoP в DSA.MSC

n при установленной опции Replace

n использование списков контроля до-

(замена) пользовательские политики не обрабатываются.

ступа (ACL) и инструментария WMI.

Наследование и порядок применения групповых политик в иерархии службы каталогов Главная формула применения объектов GPO в доменах Active Directory такова – LSDOU, что означает следующий порядок применения (последние имеют наивысший приоритет): n локальные политики компьютера (Local Policies); n групповые политики уровня сайта (Site); n групповые политики уровня домена (Domain); n групповые политики уровня организационного подразделения (Organizational Unit). Однако, зная о том, что иерархия службы каталогов может иметь приличную вложенность OU друг в друга, можно продолжить это правило: групповые политики OU уровня 2, уровня 3 и т. д. Существует несколько способов, чтобы переопределить такой порядок применения ГП (все параметры можно задать в свойствах целевого контейнера на вкладке Group Policy либо в системном реестре): n включить блокирование наследования групповой политики с более высокого уровня (опция «Block Inheritance»); n запретить перекрытие политик более высоких уровней политиками нижестоящих уровней (опция «No Override»); n отключение применения групповой политики на заданном уровне иерархии (опция «Disabled»);



Напомню, что при включенном перекрытии групповых политик блокирование наследования не обрабатывается.

Поиск и устранение неисправностей при работе с групповыми политиками Нетрудно понять, что групповые политики в доменах Active Directory – инструмент насколько гибкий, настолько и сложный. И, казалось бы, все вам понятно и как на ладони весь домен. Вы создаете групповые политики, привязываете их к контейнерам, включаете дополнительные опции по перекрытию и наследованию, и ждете, когда настроенный вами механизм наконец заработает. Но что-то идет не так, либо вообще ничего не происходит. Вы в замешательстве, но расстраиваться рано. В составе Windows XP и Windows Server 2003 существует ряд утилит, которые помогут администратору в устранении проблем с групповыми политиками. Рассмотрим их подробнее. Очень часто на форумах приходится видеть жалобы о том, что у кого-то не применяется групповая политика, хотя все параметры выставлены. Как уже говорилось, в процессе работы политики применяются в фоновом режиме через заданный интервал времени. А некоторые из них вообще требуют перезагрузки компьютера. Однако существует возможность принудительного применения групповых политик на конкретной машине. Ее обеспечивает утилита командной строки gpupdate. Она имеет несколько параметров, при помощи которых можно определить, как будет

проведено обновление политик. Например, используя параметр /Target, можно указать, какие политики должны быть обновлены: пользователя, компьютера или и те и другие. Для того чтобы посмотреть, какие политики применяются на конкретной машине, используется утилита gpresult. Без заданных параметров она выдает следующую информацию для текущего пользователя на данной машине: n контроллер домена, с которого получены объекты групповой политики; n когда и какие политики применялись; n какие политики не применялись из‑за фильтрации; n членство в группах. RSoP (Resultant Set of Policy, результирующие установки групповых политик) – это графический аналог утилиты gpresult с более широкими возможностями. RSoP – это инструмент составления запросов, с помощью которого администратор может получать информацию об отдельных системах, какие политики на них были применены, в каком порядке и с каким старшинством. RSoP работает в двух режимах: режиме регистрации и режиме моделирования. В первом случае она берет информацию из базы CIMOM (Common Information Management Object Model, объектная модель управления общей информацией), используя WMI запросы. Это возможно, потому что при входе компьютера в сеть и применения к нему групповых политик все настройки и изменения записываются в CIMOM. В режиме моделирования вы можете построить запрос и получить информацию о гипотетическом результате применения групповых политик. Режимы регистрации и моделирования могут применяться для отдельных пользователей и компьютеров. Для сайтов, доменов и OU возможно выполнить только моделирующие запросы. Для групп безопасности запросы RSoP не могут быть выполнены. Хотя членство в определенной группе может повлиять на конечный результат применения политик. Запустить выполнение запроса вы можете на контроллере домена из оснастки Active Directory Users and Computers (см. рис. 4). Утилита GPOTOOL проверяет целостность объектов GPO. Как вы пом-


администрирование ните, каждый такой объект состоит из двух частей: GPT – шаблон групповой политики, и GPC – контейнер групповой политики. Если одной из частей нет, политика работать не будет. Одна из неприятных особенностей данной утилиты (хотя эта особенность свойственна многим утилитам для работы с групповыми политиками) – она не показывает дружественные имена политик. Вместо этого она выводит их GUID. В статье Q216359 можно посмотреть способ, как сопоставить GUID имени политики. Аналогично для просмотра понятного имени политик можно воспользоваться инструментом ADSI Edit. Утилита Dcgpofix поможет восстановить начальные настройки для групповых политик по умолчанию домена и контроллера домена.

Рисунок 5. Консоль управления групповыми политиками GPMC.MSC

тик, для этого вам придется прибегКонсоль GPMC.MSC Мы рассмотрели большинство средств нуть к gpupdate. по созданию, настройке и отладке групповых политик. Но из-за их раз- Будущее групповых розненности существуют определен- политик ные неудобства для администрато- Ну и напоследок нельзя не сказать нера. Поэтому компания Microsoft вы- сколько слов о реализации механизма пустила единый инструмент управ- групповых политик в вышедшей сравления групповыми политиками – кон- нительно недавно Windows Vista. Насоль GPMC.MSC (см. рис. 5), который чну с того, что в предыдущих версипозволяет выполнять все основные ях операционных систем за обработоперации по администрированию ГП. ку групповых политик отвечал процесс Он не входит в состав ни одной из опе- Winlogon, тогда как в Vista они предрационных систем, но доступен для ставляют собой целую службу, которую свободного скачивания на официаль- из соображений безопасности нельзя остановить. Консоль GPMC.MSC теном сайте Microsoft. GPMC.MSC является незамени- перь является встроенным компоненмым инструментом администратора том операционной системы. Vista имеет несколько локальных по управлению групповыми политиками в рамках домена, который интегри- объектов GPO, что позволяет по-разрует в себе функционал вышеописан- ному настроить параметры локальных ных утилит. В дополнение к этому вы рабочих станций для администраторов и обычных пользователей. Однако можете: n создавать резервные копии объек- в рамках домена групповые политики тов GPO и осуществлять их восста- Active Directory имеют более высокий приоритет над локальными. Помимо новление; n составлять отчеты в формате HTML; этого, администраторы домена могут n смотреть сконфигурированные на- выключить локальные политики. Сам факт того, что в Vista добавистройки политик; n копировать политики и импортиро- лось около 800 новых параметров политик, говорит о том, насколько повывать настройки политик; n использовать функцию Drug’n’Drop сится управляемость пользовательдля назначения привязки объектов ским окружением. Но заработает этот механизм на полную только после выGPO к контейнерам. хода новой серверной версии операС помощью GPMC.MSC нельзя вы- ционной системы от Microsoft, так как полнить обновление групповых поли- текущие серверные ОС не поддержи-

№7, июль 2007

вают управление новыми параметрами групповых политик в рамках домена. В заключение хотелось бы дать несколько советов по работе с групповыми политиками: n не стройте слишком сложных стратегий по развертыванию ГП в домене; чем сложнее схема, тем труднее потом будет найти и устранить причину неполадки; n избегайте применения большого количества GPO с конфликтующими параметрами; n старайтесь не увлекаться использованием режимов запрета перекрытия и блокировки наследования; n по возможности документируйте изменения, это позволит быстрее отследить причину возникновения конфликта или неполадки; n не экспериментируйте на функционирующем домене, лучше используйте моделирование. Многие тонкости работы с групповыми политиками остались за рамками статьи. Используйте статьи базы знаний Microsoft и специальную литературу в качестве теоретической базы для овладения лучшими навыками управления сетевой инфраструктурой при помощи групповых политик. 1. Александр Емельянов. Администрирование пользователей в домене Active Directory. //«Системный администратор», №4, 2007 г.




администрирование

Знакомимся с Windows Server 2008 Beta 3

Андрей Бирюков Весной этого года корпорация Microsoft выпустила Beta 3 версию новой серверной операционной системы Windows Server 2008. Посмотрим, какие новые функции и приложения появились в этом программном продукте.

Т

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

10

пуске операционной системы. Примером тому может служить Windows Vista. Во многих блогах и форумах системные администраторы и просто пользователи делятся впечатлениями от различных функций и приложений, вошедших в состав новой ОС, критикуют появившиеся возможности и инструменты. Серверная операционная система Windows Server 2008 Code Name

Longhorn также не стала исключением. Система анонсировалась Microsoft задолго до ее выхода. Собственно та версия, о которой пойдет речь сегодня также не является финальной, это лишь Beta 3. Так что тот функционал, который я буду описывать, не является окончательным, и возможно, с выходом финальной версии будет дополнен новыми возможностями.


администрирование Быстрая установка Несколько слов об установке операционной системы. Надо сказать, что разработчики существенно упростили процесс установки. Теперь некоторые шаги удалены из процесса установки, что позволяет немного сократить затрачиваемое время на неё. Не берусь судить, насколько это удобно, но думаю, многим начинающим администраторам такая упрощенная процедура установки понравится. После установки операционной системы мы попадаем в новую рабочую среду. Конечно, внешних отличий от предыдущих версий не так много, никаких Aero, как в Windows Vista, здесь не загружается. Однако я хотел бы обратить внимание на некоторые моменты, связанные со структурой каталогов в новой операционной системе. В Windows 2008 вы не найдете на основном диске каталога Documents and Settings, вместо него появился каталог Users. Это небольшое изменение может запутать администраторов, привыкших к стандартной структуре каталогов. Каталог Users содержит пользовательские каталоги. Как видно из рис. 1, содержимое пользовательского каталога также немного отличается от существовавшего в предыдущих версиях Windows. Как видно, теперь у пользователя есть отдельный каталог для сохраненных игр, скачанных программ и т. д. Однако все эти нововведения носят скорее косметический характер и не несут в себе глубокой функциональной нагрузки, так что перейдем к рассмотрению других элементов новой операционной системы.

Панель управления

Рисунок 1. Пользовательские каталоги

Рисунок 2. Панель управления

Посмотрим, какие функции появились щью Windows Explorer, не выполнять в Control Panel (см. рис. 2). В разделе Auto Play можно указать, никаких действий или спросить полькакое действие выполнять при под- зователя. В разделе Default Programs можно ключении к системе того или иного носителя. Зачастую бывает край- указать, какие приложения должны не нежелательно, когда при установ- по умолчанию использоваться для выке компакт-диска в привод начинает полнения определенных типов файлов. выполняться какое-либо приложение Также здесь можно указать, какая про(autoplay). Это нежелательно с точки грамма должна по умолчанию обрабазрения безопасности, к тому же мо- тывать трафик, приходящий по опрежет отнимать дополнительные ресур- деленному протоколу уровня приложесы системы. Здесь можно запретить ний (например ftp или https). Немного другую форму принял выполнение autoplay и указать, какое действие выполнять: открыть с помо- раздел, содержащий настройки се-

№7, июль 2007

ти. Теперь он называется Network and Sharing Center (см. рис. 3). Изменением названия все не ограничивается. В данном разделе также можно указать, используется ли общий доступ к файлам, папкам и принтерам, защита общих ресурсов паролем, а также Network Discovery, позволяющий данной машине быть видимой в сетевом окружении других компьютеров сети. Заглянем в настройки сетевого интерфейса (Manage network connections), там тоже появились новые возможнос-

11


администрирование

Рисунок 3. Network and Sharing Center

ти. На рис. 4 показан список свойств, В общем, реализация стека TCP/IP доступных для сетевого интерфейса и средств настройки сети в новой верпосле установки по умолчанию. сии операционной системы претерпела Кроме стандартного IP версии 4, существенные изменения, что не мотеперь имеется поддержка IP версии 6. жет не радовать. Правда, хочется надеМногие Linux- и BSD-системы уже до- яться, что новые сетевые службы и сервольно давно поддерживают шестую висы не будут содержать такого коливерсию протокола IP, однако сервер- чества уязвимостей, как предыдущие ная Windows впервые включила эту версии, в особенности Windows 2000. поддержку в установку по умолчанию. Компонента Link-Layer Topology Инструменты Discovery Mapper предназначена администратора для поиска компьютеров и устройств Много нововведений ожидает адмив сети, а также для определения про- нистратора в Administrative Tools. В этой пускной способности сети. Responder статье я не буду описывать работу позволяет другим узлам сети видеть в Active Directory в качестве контроллера домена для данной операционной данную машину. системы, так как там тоже есть нововведения, и это будет отдельной темой. А в рамках этой статьи мы будем рассматривать функционал сервера, не являющегося контроллером домена. Журнал событий Event Viewer – с его просмотра начинают свой рабочий день многие системные администраторы, ведь информация о сбоях, возможных проблемах с операционной системой, неудачных попыткой войти в систему сохраняется в данном журнале. Открыв консоль Event Viewer, мы сразу же получаем статистику по событиям различного вида (см. рис. 5). Немного напоминает Microsoft Operations Manager в упрощенном виде. Однако на этом сходство с систеРисунок 4. Свойства сетевого мами промышленного мониторинга интерфейса

12

не заканчивается. Если вас интересуют, к примеру, события Error, то вам достаточно два раза кликнуть на крестике слева от названия журнала, и вы получаете список всех источников сообщений данного типа, а также статистические данные по тому, сколько раз то или иное событие происходило. Нажав на интересующее событие, вы получите не только содержимое сообщения об ошибке, но также и список всех аналогичных сообщений, происходивших в другие дни. В небольших сетях, где не используются другие решения для мониторинга, средства, предлагаемые Windows Server 2008, могут оказаться очень полезными. Однако кроме средств мониторинга событий можно также и реагировать на них. В разделе «Actions» выбираем «Attach Task To This Event…». Запускается соответствующий мастер. Есть три варианта ответных действий: запуск приложения/сценария, отправка письма по электронной почте и сообщение на экран. Наиболее интересен первый вариант – запуск приложения (см. рис. 6). При наличии хотя бы элементарных знаний в области программирования сценариев Windows Script Host можно построить систему реакции на различные события, которая позволит существенно автоматизировать работу с журналами событий и сэкономить время системных администраторов. Еще одно важное нововведение в журналах событий – это Subscriptions. Здесь вы можете указать, с каких машин и о каких событиях вы хотите получать информацию, а также в какой именно журнал событий сохранять данные сообщения. Да и само количество журналов событий, представленных в Event Log, по умолчанию намного больше, чем это было в предыдущих версиях (рис. 7). Так что теперь все события не будут сыпаться в одну кучу и не надо будет тратить время на поиск нужного. В целом Event Log в новой операционной системе претерпел значительные изменения, причем в лучшую сторону.

Контроль доступа с помощью NAP Следующим интересным нововведением является Network Policy Server. Так


администрирование

Рисунок 5. Консоль Event Viewer

как служба содержит реализацию принципиально новых чанию, поэтому ее ну жно добавить дополнительно (см. рис. 8). технологий, мне хотелось бы описать NPS подробнее. Прежде всего NPS пришел на смену IAS (Internet Действия, которые необходимо применять к подключаюAuthentication Server) RADIUS-серверу, входившему в состав щемуся узлу, определяются с помощью политик Connection Windows. Однако функционал NPS не ограничивается толь- Request Policies. Данные политики определяют набор правил, ко поддержкой аутентификации по протоколу RADIUS. которые использует NPS для проверки попыток соединений. Одним из основных элементов Network Policy Server Для того чтобы определить состояние узла, используются спеявляется поддержка технологии NAP (Network Access циальные маркеры System Health Validators (SHV), которые соProtection). Она позволяет ограничить доступ к сети, раз- общают NPS о состоянии системы машины, запрашивающей решая его только хостам, удовлетворяющим требованиям безопасности. Фактически это некоторый аналог проактивной системы защиты. С помощью NAP можно создавать различные политики для проверки состояния компьютера, перед тем как разрешить ему доступ в сеть. Компьютерам, не удовлетворяющим этим требованиям, можно, к примеру, разрешить доступ только в карантинную зону, где они смогут установить необходимые обновления, или же запретить доступ совсем. Технология NAP аналогична Cisco Network Admission Control (NAC) – программно-аппаратному комплексу по контролю за доступом в сеть. Однако Cisco NAC поддерживается только оборудованием Cisco, что существенно усложняет ее внедрение. NAP не имеет таких жестких аппаратных привязок. Основным элементом NAP является как раз Network Policy Server. NPS не входит в состав установки по умолРисунок 6. Запуск приложения

№7, июль 2007

13


администрирование n Client fails all SHV checks – ни од-

Рисунок 8. Установка Network Policy Server

подключение (NAP клиента). Определить состояния данного маркера можно следующим образом (см. рис. 9). В зависимости от того, в каком состоянии находятся различные службы и приложения на подключающейся машине (обновлены ли антивирусы, установлены ли последние заплатки и т. д.),

Рисунок 7. Список журналов событий

14

маркер будет иметь одно из следующих состояний: n Client passes all SHV checks – проверки всех маркеров прошли успешно. В таком случае, как правило, пользователь получает полный доступ к сети (естественно, в рамках своих полномочий).

на проверка не пройдена. Как правило, таких пользователей лучше не пускать в сеть вообще. n Client passes one or more SHV checks – к лиент прошел одну или несколько проверок. Здесь все определяет то, какие проверки прошел пользователь. Как правило, в такой ситуации лучше всего разрешить доступ только в карантинную сеть, где он сможет установить недостающие обновления и патчи. n Client fails one or more SHV checks – клиент не прошел одну или несколько проверок. Случай аналогичный предыдущему. Разница лишь в том, что для вас приоритетнее. n Client reported as transitional by one or more SHV’s – транзитный маркер возвращается, когда машина только подключилась к сети и состояние SHV еще не определено.


администрирование n Client reported as infected by one

Настраиваем защиту

or more SHV’s – состояние Infected. Антивирусные продукты, интегрированные с NAP, могут возвращать такое состояние SHV. n Client reported as unknown by one or more SHV’s – состояние «неизвестен» обычно бывает на тех машинах, которые несовместимы, либо на них не установлен клиент NAP. Понятно, что такие машины тоже лучше в сеть не пускать.

Но вернемся к обсуждению непосредственно Windows Server 2008. Еще одной новой компонентой является Security Configuration Wizard. В отличие от присутствовавшей в предыдущих версиях утилиты secedit, здесь для работы с шаблонами безопасности имеется специальный мастер, позволяющий быстро и без лишних усилий настроить или откатить политику безопасности. Работа мастера разделена на несколько этапов. Прежде всего мастер проверяет текущее состояние системы, в частности какие службы запущены на сервере. Затем администратору предлагается добавить или удалить службы или их компоненты на основе тех ролей, которые выполняет данный сервер (например, файл-сервер или DNS-сервер). При этом для каждой службы можно получить ее краткое описание. Далее мастер предлагает настроить состояние служб, режим запуска (Disabled/Manual/Automatic). Следующим этапом в настройке Security Configuration является Network Security. Здесь предлагается настроить политики межсетевого экрана Windows (о котором мы подробно поговорим чуть позже) в соответствии со специальными шаблонами (например, клиент DHCP или DNS). После настроек безопасности се-

Далее, в NPS можно определить различные действия, которые применяются к рабочим станциям, соответствующим тем или иным состояниям SHV. В частности, можно определить политики, позволяющие доступ в сеть только в определенные промежутки времени, или ограничить доступ только определенными ресурсами (см. рис. 10). Теперь необходимо немного пояснить, как все это работает. Клиентская машина, на которой установлена Windows XP SP2 или Vista, пытается установить соединение. Это выражается в RADIUS AccessRequest-запросе к серверу NPS. Сервер NPS сравнивает содержимое Access-Request-сообщения с политиками, которые мы определили. В зависимости от того, соответствует или нет данная информация политикам, NPS применяет к пользовательской станции то или иное действие, определенное в Network Policy. Да лее слу жба NPS отправляет RADIUS Access-Accept-сообщение с информацией об уровне доступа пользователя. Далее это сообщение уже может обрабатываться сетевым устройством, которое отвечает за непосредственное подключение узла (например, коммутатор). В завершении рассказа о NAP хочу порекомендовать дополнительную информацию тем, кто заинтересовался данной технологией. На сайте Microsoft по адресу http://www.microsoft.com/ technet/network/nap/default.mspx вы можете прочесть полезные статьи по данной технологии, а по адресам [1-4] вы найдете подробное описание лабораторных работ с использованием NAP для различных реализаций.

№7, июль 2007

Рисунок 9. Настройки SHV

ти выполняются настройки Registry Settings (см. рис. 11). Здесь определяются политики доступа к данному серверу на уровне приложений и протоколов. То есть можно определить те требования, которые предъявляются к подключающимся хостам. Например, можно ли подключаться машинам с операционной системой Windows 98 или Windows CE. Далее описываются способы аутентификации для удаленных машин (Domain Accounts, Local Accounts on the Remote Computers, File Sharing Passwords) и способы аутентификации для локальных пользователей.

Рисунок 10. Настройки политик NAP

15


администрирование Увеличилось количество возможных условий, при которых выполняется та или иная задача. В целом можно сказать, что диспетчер задач стал более интеллектуальным.

Межсетевой экран И, наконец, поговорим о межсетевом экране, встроенном в Windows Server 2008. Различий с firewall, использовавшимся в Windows 2003, довольно много, я бы даже сказал, что межсетевой экран в Windows 2008 – это совершенно новый продукт. Теперь в межсетевом экране можно создавать правила как для входящего, так и для исходящего трафика. (см. рис. 13). При этом сразу появляется возможность редактирования отдельно для доменных (Domain) профилей и отдельно для частных (Private) профилей пользователей. В каждом правиле можно определить не только какое приложение, какой порт и по какому протоколу использует. ТакРисунок 11. Настройки Registry Settings же можно определить, какие пользователи и какие машиНа следующем этапе можно настроить политики аудита, ны могут устанавливать соединения с данным сервером. аналогично тому, что обычно делается через Group Policy, Ещё можно определить интерфейсы, к которым применяно только с помощью более удобного интерфейса. ется то или иное правило. По завершении работы мастера вам предлагается соОтдельно присутствует набор правил для защищенных хранить созданную политику. Применить созданную поли- соединений (см. рис. 14). тику можно как сразу, так и позже. Как видно, имеется четыре готовых шаблона: n Isolation – ограничивает соединение, основываясь Новый диспетчер задач на аутентификации пользователя, членстве в домене. Среди прочих компонент, входящих в состав Administrative n Authentication exemption – запрещает соединения Tools в Windows Server 2008, можно отметить Server Manager, от определенных компьютеров. в консоли которого можно оперативно получить все сведе- n Server-toServer – создает соединения между компьюния о системе: версию, IP-адрес, используемые сетевые терами. протоколы, установленные обновления, роли. n Tunnel – туннельные соединения с авторизацией межТак же нововведения появились в Task Scheduler ду шлюзами. (см. рис. 12). Теперь задачи можно привязывать к установленным на сервере приложениям. Режим Custom позволяет самостоятельно определить правила защищенного соединения. Для каждого шаблона требуются свои, заранее заданные настройки. Шаблон Custom позволяет самостоятельно задать нужные настройки. Думаю, встроенный межсетевой экран в Windows Server 2008 вполне способен выполнять задачи по защите ресурсов сервера без помощи каких-либо сторонних программных и аппаратных средств.

Заключение

Рисунок 12. Настройки Task Scheduler

16

За кадром остались новая реализация службы Active Directory, групповые политики GPO и многое другое. Однако подведем некоторый итог, резюмируя все описанное в этой статье. В новой операционной системе сделан акцент на улучшении средств безопас нос ти, добав лены так ие средства, как NPS, межсетевой экран и другие. Улучшен функционал, связанный


администрирование с мониторингом событий и уведомлением администраторов. Несколько упрощен и ускорен процесс установки самой операционной системы. Это новшество может оказаться весьма полезным при развертывании нескольких серверов с различными конфигурациями, когда использование образов и файлов ответов затруднено или невозможно. Что касается недостатков, то они, конечно, тоже присутствуют. Во-первых, очень жаль, что мы так и не увидели существенных изменений в средствах работы с файловой системой. Конечно, Microsoft уже который год обещает новую файловую систему, однако ее выпуск все время откладывается. Также уже есть некоторые проблемы с совместимостью, в частности, не удалось установить Microsoft Forefront Security, антивирусный продукт от той же компании Microsoft. Также жаль, что в локальных политиках безопасности не появилось новых опций. Но будем надеяться, что когда выйдет полная версия (всетаки сейчас мы обсуждаем бета-релиз), многие из этих недостатков будут устранены. Напоследок несколько слов о дополнительных источниках информации. Помимо основной страницы, посвященной этому продук т у, http:// www.microsoft.com/windowsserver2008 вы также можете многое узнать из форума TechNet, который можно найти по адресу [5]. И наконец, самое главное, Windows Server 2008 Beta 3, как и любой бетапродукт, доступен для свободного скачивания. Так что, если вас заинтересовала новая операционная система, то установить ее можно с диска, прилагающегося к журналу. Также любую из существующих редакций можно получить по следующему адресу [6]. 1. http://www.microsoft.com/downloads/ details.aspx?FamilyID=298ff9561e6c- 4d97-a3ed-7e7f fc 4bed32& displaylang=en – Step-by-Step Guide: Demonstrate IPsec NAP Enforcement in a Test Lab. 2. http://www.microsoft.com/downloads/ details.aspx?FamilyID=8a0925ee-

№7, июль 2007

Рисунок 13. Настройки межсетевого экрана в Windows Server 2008

Рисунок 14. Настройки защищенных соединений

ee06 - 4dfb-bba2- 07605eff0608& displaylang=en – Step By Step Guide: Demonstrate 802.1X NAP Enforcement in a Test Lab. 3. http://www.microsoft.com/downloads/ details.aspx?FamilyID=729bba0055ad-4199-b441-378cc3d900a7& displaylang=en – Step-by-Step Guide: Demonstrate VPN NAP Enforcement in a Test Lab. 4. http://www.microsoft.com/downloads/ details.aspx?FamilyID=ac38e5bb-

18ce- 40cb-8e59-188f7a198897& displaylang=en – Step-by-Step Guide: Demonstrate DHCP NAP Enforcement in a Test Lab. 5. http://forums.microsoft.com/TechNet/ default.aspx?ForumGroupID=161& S i t e I D =17 – ф о р у м Te c h N e t по Windows Server 2008. 6. http://www.microsoft.com/technet/ prodtechnol/beta/lhs/default.mspx – здесь можно скачать дистрибутив Windows Server 2008 Beta 3.

17


администрирование

MOSS 2007: быстрая настройка и самые интересные возможности

Нелли Садретдинова Новая линейка продуктов Sharepoint удивляет приятными сюрпризами администраторов, хорошо знакомых с предыдущими версиями, и привлекает интересными возможностями тех, кто только подумывает о развертывании корпоративного портала с помощью Sharepoint. 18


администрирование

В

начале 2007 года вышла новая линейка продуктов Microsoft Sharepoint, которая вк лючает в себя новую версию Windows Sharepoint Services (WSS 3.0) и Microsoft Office Sharepoint Server (MOSS) 2007 на замену Sharepoint Portal Server (SPS) 2003. Системные администраторы и разработчики уже успели оценить удобство и быстроту развертывания внутрикорпоративных сайтов с помощью Sharepoint. Новая версия обладает более широкими возможностями прежде всего в области совместной работы и интеграции с самыми разнообразными источниками информации. Наиболее интересные из этих возможностей входят в состав корпоративного выпуска (Enterprise Edition) MOSS 2007. Средства настройки и администрирования новых версий Sharepoint претерпели значительные изменения. С одной стороны, настроек стало гораздо больше, с другой стороны, они лучше документированы, логично сгруппированы и интуитивно более понятны. Сегодня мы остановимся на некоторых аспектах администрирования MOSS 2007. Будет рассказано о том, как быстро настроить и запустить в действие наиболее интересные из новых функций портала.

Установка и первоначальная настройка Пробную версию MOSS 2007 можно скачать на сайте Microsoft (http:// download.microsoft.com). Если установка предыдущей версии портала представляла некоторые сложности для человека неподготовленного, то MOSS 2007 устанавливается легким движением руки. Внимание! Если Sharepoint устанавливается на сервер, где IIS уже используется другими веб-приложениями, настоятельно рекомендуется предварительно провести установку в тестовой среде, а перед установкой на рабочий сервер выполнить полное резервное копирование. В случае установки всех служб MOSS в комплекте с SQL Server 2005 Express Edition (входит в поставку) автономно на один сервер от адми-

№7, июль 2007

нистратора потребуется минимум О требованиях и рекомендациях к этим учетным записям также можно действий. Полностью автоматически бу- узнать в 2007 Office Resource Kit [1]. дут развернуты «Центр администриВ тестовом варианте вы можете рования Sharepoint», семейство уз- назначить для всех этих целей одну лов и главный узел портала, доступ- и ту же учетную запись, но по требоный по стандартному для http 80-му ваниям безопасности на рабочем порпорту. тале рекомендуется все же использоЕ д и н с т в е н н о е, п о н а д о б и т с я вать разные учетные записи с разным предварительно установить – .NET уровнем безопасности на сервере. Framework 3.0 (также можно скачать Что приятно, в процессе конфис сайта Microsoft). гурации можно указать порт для узЕсли установка производится ла центрального администрирована ферму серверов с использованием ния (раньше он выбирался случайполноценной версии SQL-сервера, по- ным образом, и запомнить его бытребуется некоторая настройка. Наибо- ло нелегко). После завершения раболее распространенный сценарий раз- ты мастера должна открыться страмещения для средней фермы – это два ница центрального администрировасервера, на одном из которых развер- ния Sharepoint. нут сервер баз данных, а на другом – Возможные проблемы: если стравсе приложения Sharepoint. О других ница администрирования не открывасценариях можно узнать в 2007 Office ется или выдает ошибку, чаще всего Resource Kit [1]. это связано с неправильной регистраДля понимания дальнейших дейс- цией ASP .NET 2.0. Чтобы исправить твий следует упомянуть, что в новой ошибку, нужно заново зарегистрироверсии Sharepoint появилось такое по- вать .NET 2.0, выполнив команду: нятие, как «поставщик общих служб» aspnet –regiis –r (Shared Services Provider или SSP), существенное расширившее возможности «Управления общими служба- из директории «%windir%\Microsoft.NET\ ми» в предыдущей версии. SSP пред- Framework\v2.0.xxxx»), проверить, праставляет собой набор служб, которые вильно ли указана ли версия .NET в наявляются общими для целого набора стройках сайта IIS «Центр администриузлов и семейств узлов, и, соответс- рования Sharepoint» (или другого вебтвенно, имеют общие настройки безо- приложения, с которым возникли пропасности, поиска, личных узлов и дру- блемы), и перезапустить IIS. гих параметров. Центр администрироКогда а дминистратор первый вания поставщика общих служб пред- раз открывал страницу управления ставляет собой отдельное веб-прило- SPS 2003, у него сразу же возникал жение с собственными настройками вопрос: что делать дальше? В новой безопасности. версии продукта эту проблему разПосле окончания установки будет работчики учли. Теперь на главной запущен «Мастер настройки и конфи- странице администрирования сразу гурирования продуктов и технологий же открывается список задач, котоSharepoint». Потребуется указать сер- рые необходимо выполнить для первер баз данных и доменную учетную воначальной настройки портала, призапись для служб Sharepoint. чем каждая задача содержит ссылку Вообще говоря, учетные записи до- на подробную справку на русском язымена понадобятся для выполнения как ке (см. рис .1). минимум следующих ролей: Из предложенного списка для бысn для запуска служб Sharepoint; трого запуска портала с минимальным n для запуска служб поиска; набором возможностей на ферме серn для индексации и обхода содержи- веров понадобится выполнить всего мого; четыре задачи: 1) Включить службы «Веб-приложеn для пула веб-приложений; n для пула приложения поставщика ние Windows SharePoint Services» общих служб; и «Поиск Office SharePoint Server» n для запуска поставщика общих в разделе «Операции/Топология и службы/Службы на сервере». служб.

19


администрирование

Рисунок 1. Список задач для администратора после установки портала

Рисунок 2. Начальная страница главного узла портала

20


администрирование 2) Создать три веб-приложения: для поставщика общих служб, личных узлов и семейства узлов основного портала. Теперь для этого не нужно открывать консоль управления IIS, достаточно воспользоваться разделом «Управление приложениями/Создание или расширение веб-приложения». 3) Следующий этап – создание поставщика общих служб в разделе «Управление приложениями/Создание или настройка общих служб данной фермы». 4) Последним создается семейство узлов основного портала: на странице «Управление приложениями» нужно выбрать из списка веб-приложение, которое вы ранее создали для семейства узлов, и перейти к разделу «Создание семейства веб-узлов». Ну вот, теперь можно открыть главный узел семейства узлов. Настройки узла, управление пользователями и группами, редактирование текущей страницы и создание новых страниц доступны в меню «Действия узла» (см. рис. 2). Обратите внимание, что одни параметры изменяются для отдельного узла, другие – только для всего семейства узлов, и некоторые настраиваются на обоих уровнях (см. рис. 3). Настройка и разработка узлов в новом портале, в частности, с использованием нового продукта Microsoft Sharepoint Designer, пришедшем на смену Frontpage, тоже во многом отличается от предыдущей версии, и описание всех интересных возможностей – тема для отдельной статьи. Скажу лишь, что многие элементы стало возможным легко редактировать с помощью веб-интерфейса, например, это верхняя и левая панели ссылок и логотип. Миграция со старой версии портала на MOSS 2007 – также достаточно широкая тема. Она (миграция) может быть проведена легко и быстро, если в портале не производилось никаких серьезных модификаций, и может представлять собой достаточно сложную задачу в противном случае – если узлы и темы подвергались редизайну, использовались собственные веб-части и т. п.

№7, июль 2007

Совет: в комплекте с MOSS 2007 поставляется очень неплохая русскоязычная справка, в том числе для администратора. Не забывайте и о комплекте SDK, который можно скачать на сайте Microsoft [2].

Центр администрирования и принципы управления MOSS 2007 Настройка различных служб и параметров работы MOSS 2007 производится на пяти уровнях: n ферма серверов (вкладка «Операции» центра администрирования); n п о с т а в щ и к о б щ и х с л у ж б (центр администрирования общих слу жб, по умолчанию это «SharedServices1»); n веб-приложение (вкладка «Управление приложениями» центра администрирования); n семейство узлов («Действия узла → Параметры узла → Изменение параметров узла» на главном узле семейства); n узел («Действия узла → «Параметры узла → Изменение параметров узла» на текущем узле). В разделе «Операции» помимо настройки общих для фермы серверов параметров можно также выполнить некоторые разовые операции, в частности, резервное копирование и восстановление, а также обновление и перенос (см. рис. 4). При первоначальной настройке следует обратить внимание на ведение журналов, в частности, журнала трассировки (раздел «Сбор данных диагностики»). По умолчанию ведение журналов и сбор всех ошибок включены, логи находятся на системном диске, а растут они иногда не по дням, а по часам. Обратите внимание на эти журналы и настройте систему так, чтобы не возникло нехватки места на жестком диске. Еще одна возможность, на которую стоит обратить внимание, – «Сопоставления для альтернативного доступа». Здесь можно настроить альтернативные адреса для одного и того же веб-приложения, например, для доступа изнутри локальной сети и извне.

В разделе «Управление приложениями» каждая группа настроек относится к одному конкретному веб-приложению. Поэтому, прежде чем выполнять планируемую операцию, не забудьте выбрать нужное приложение. Это можно сделать в пункте меню «Список веб-приложений» или вверху страницы с каждой конкретной настройкой (см. рис. 5). Обратите внимание! После создания нового веб-приложения нужно перейти к разделу «Общие параметры веб-приложений» и настроить как минимум два важных параметра: «Часовой пояс» и «Максимальный объем отправляемых данных» . Еще один значимый набор параметров – «Управление возможностями». Для безопасности и повышения быстродействия отдельные компоненты Sharepoint (службы работы с бизнес-данными, поиск и др.) можно включать/отключать на четырех уровнях: n уровень фермы серверов; n уровень веб-приложения; n уровень семейства узлов; n уровень отдельного узла. Если на конкретном узле у вас не работает какой-либо из компонентов или отсутствуют нужные веб-части, проверьте, включены ли соответствующие возможности на всех нужных уровнях. На странице управления поставщиком общих служб можно управлять такими настройками, как профили пользователей, поиск, определения бизнес-приложений, параметры служб Excel. В некоторых случаях вам понадобится создать несколько поставщиков общих служб, например, если у вас есть несколько различных поставщиков подлинности (к примеру, пользователи домена и внешние пользователи) и для каждого нужны отдельные настройки профилей пользователей и настройки безопасности (см. рис. 6). Некоторые настройки по-прежнему придется вручную делать в файле web.config. Для каждого приложения они располагаются по адресу «системный_диск:\Inetpub\wwwroot\wss\ VirtualDirectories\порт_приложения». Например, если вы используете новую

21


администрирование очень популярную веб-часть «Средство просмотра RSS» или «Просмотр веб-страниц» из Интернета вам, возможно, потребуется настроить прокси-сервер. Для этого в файл web.config достаточно вставить строки: <system.net> <defaultProxy> <proxy usesystemdefault="true" />

или: <proxy proxyaddress= ↵ "http://proxyserver:80" ↵ bypassonlocal = "true" /> </defaultProxy> </system.net>

Наконец не забывайте об утилите командной строки stsadm. Она претерпела существенные изменения, и теперь позволяет выполнять гораздо большее количество операций. Во‑первых, это облегчает задачу автоматизации ряда операций, во-вторых, некоторые операции можно выполнить только из командной строки (например, изменение учетной записи центра администрирования).

Управление доступом В MOSS 2007 для каждого веб-приложения необходимо определить поставщика проверки подлинности («Управление приложениями/Безопасность приложений/Поставщики проверки подлинности»). В этой роли могут выступать встроенная проверка подлинности Windows, формы или служба единого входа. Обратите внимание! При создании или расширении веб-приложения вам доступен только вариант аутентификации средствами Windows. Изменить поставщика проверки подлинности можно позднее, в разделе «Управление приложениями/Поставщики проверки подлинности». После изменения поставщика не забудьте изменить учетную запись администратора соответствующего семейства узлов или разрешить хотя бы временно анонимный доступ, иначе доступа к главному узлу не будет иметь никто (см. рис. 7). Если в вашей сети уже поддерживается Kerberos, то это рекомендуемый выбор с точки зрения возможностей делегирования аутентификации. Например, проверка подлин-

22

ности Kerberos может понадобиться менов, возможно, понадобится дать для чтения RSS-потоков внутри са- доступ пользователям только одномого Sharepoint. В MOSS 2007 каждая го из них. В этом случае нужно добабиблиотека документов или список мо- вить группу «yourdomain\domain users» гут транслироваться в виде RSS-пото- (см. рис. 8). ка. Это удобно, когда нужно собрать в одном месте информацию из раз- Авторизация на основе ных узлов и веб-приложений. Как раз форм для чтения такого потока с учетом прав О возможности авторизации незавидоступа пользователей и потребуется симо от домена давно мечтали мноKerberos (за исключением случая, ког- гие администраторы и разработчики да к библиотеке или списку, выступаю- Sharepoint. В новой версии Sharepoint щим в качестве источника, разрешен сделать вариант авторизации на баанонимный доступ). зе форм достаточно просто, приКроме того, Kerberos потребует- чем, если воспользоваться стандартся и для работы с каталогами бизнес- ным SQL Membership провайдером данных, если эти данные не находят- ASP.NET, для этого не придется пися на том же сервере, что и сам MOSS. сать ни единой строчки кода. Можно Правда, в этом случае возможен аль- также создать Role Manager (менедтернативный вариант – использование жер ролей), в этом случае «Роль» буслужбы единого входа. дет аналогична группе пользоватеЕсли эти возможности для вас не- лей домена. актуальны, можно использовать проК сожалению, для подробного расверку подлинности NTLM. смотрения развертывания аутентиКроме того, изменилась схема до- фикации с помощью форм в этой стаступа к данным. Администратор пор- тье места не найдется, однако для тех, тала теперь не имеет по умолчанию кто хорошо знаком с администрировадоступа ко всем узлам и семействам нием IIS и ASP.NET приведу сокращенузлов. Для каждого семейства узлов ный алгоритм: и для каждого узла нужно явно ука- 1) Создать стандартную базу данзать основного и дополнительного адных для Membership и Role Manager с помощью утилиты aspnet_regsql министратора. Чтобы сделать все узлы веб-приложения доступными для ад(из папки «windir\Microsoft.NET\ министратора (или наоборот, недоFramework\v2.0.xxxx»). ступными для какого-либо пользова- 2) С помощью Visual Studio или компотеля), можно воспользоваться «Полинентов ASP.NET создать в Memberтикой для веб-приложения» («Управлеship пользователей и роли. ние приложениями/Безопасность при- 3) Указать созданные Membership и Role Manager в web.config выбранложений»). Кроме того, разрешениями для ного веб-приложения, при необхопользователей теперь можно упдимости – в web.config поставщиравлять не только на уровне узла, ка общих служб и узла центральбиблиотеки документов или списка, ного администрирования, пример но и на уровне отдельных элементов конфигурации можно найти в 2007 или документов. В случае интеграOffice Resource Kit [1]. ции с Rights Management Server (RMS) 4) Указать созданные Membership и Role Manager в качестве поставможно разграничивать доступ внутри документа. щика проверки подлинности и упВнимание! При создании узла доравляющего ролями для выбранноступ на чтение не предоставляется го веб-приложения в разделе «Упвсем пользователями автоматически. равление приложениями» центра Для этого нужно в разделе «Параметадминистрирования. 5) Создать семейство узлов Sharepoint, ры узла/Разрешения» выбрать пункт меню «Добавить пользователя», дауказать в качестве администратора лее «Добавить всех пользователей, пользователя из Membership. имеющих учетные записи» или же яв- 6) Открыть семейство узлов и доным образом добавить к читателям бавить разрешения для достугруппу «NT AUTHORITY\Authenticated па к сайту нужных пользователей из Membership. Users». Если доступны несколько до-


администрирование

Рисунок 3. Настройка параметров узла и семейства узлов

Рисунок 4. Раздел «Операции» центра администрирования

№7, июль 2007

23


администрирование

Рисунок 5. Раздел «Управление приложениями» центра администрирования

Рисунок 6. Центр администрирования поставщика общих служб

24


администрирование В первую очередь такой способ n по адресу http://moss_server из лоавторизации актуален для сайтов, кальной сети со стандартной аутенпредназначенных для работы через тификацией Windows; Интернет, например, для заказчиков n по адресу http://www.mycompany.ru или партнеров. из Интернета с аутентификацией на основе форм. Ин тер н ет- с ай т л е гко с оз д ать средствами нового портала, достаточно выбрать шаблон «Публикация/ Синхронизация с AD Портал публикации» при создании но- и профили пользователей вого семейства узлов. Однако следу- Еще одна исполненная мечта адет обратить внимание, что для этого министраторов. В WSS 3.0 можно потребуется дополнительное лицен- не только легко импортировать прозирование. фили пользователей из Active Directory, Внимание! Вопреки распростра- но и настроить синхронизацию по расненному в Интернете мнению, все веб- писанию. части бизнес-компонентов на интернетСделать это можно в настройузлах работают, нужно только вклю- ках поставщика общих служб, разчить корпоративные компоненты в «Уп- дел «Свойства и профили пользоравлении возможностями» семейства вателей». Как и в предыдущей верузлов и конкретного узла, т.к. по умол- сии, можно также настроить сопосчанию они отключены. тавление свойств Active Directory В н е ш н и й с а й т, с о з д а в ае м ы й и профиля пользователя в Sharepoint (см. рис. 10). по умолчанию, смотрите на рис .9. Но это еще не самое интересное. Более того, в профили пользоватеЗамечателен факт, что для каждого лей теперь можно включить информавеб-приложения можно настроить од- цию не только из Active Directory, но и из новременно до пяти (!) способов аутен- других кадровых систем предприятия. тификации в зависимости от так назы- Для этого необходимо воспользоватьваемой «зоны». ся каталогами бизнес-данных. «Зоны» различаются по адресу URL. Допустим, у вас есть веб-при- Интеграция ложение с внутренним адресом http:// с почтовой системой moss_server и стандартной аутентифи- Параметры почтового сервера для искацией Windows. А вы хотите сделать ходящей почты и входящей почты наего доступным для партнеров через страиваются в разделе «Операции/ Интернет и использовать для них ав- Топология и службы». Если отправторизацию на основе форм. кой уведомлений по электронной почВ этом случае вам нужно расши- те администратора Sharepoint не удирить это веб-приложение со стра- вишь, то прием входящей электронницы «Управление приложениями» ной почты – весьма полезная вози указать в поле«URL‑адрес доме- можность. на со сбалансированной нагрузкой» Для включения этой возможносURL, который будет использоваться ти не понадобится почтовый сервер, для доступа через Интернет, напри- достаточно установить виртуальный мер, http://www.mycompany.ru. Зна- SMTP-сервер IIS и настроить параметчение в поле «Зона» означает все- ры входящей почты в разделе центра го лишь название зоны и ни на что администрирования «Операции». не влияет. Можно выбрать, например, После этого можно использовать «Интернет». любую библиотеку документов портаПосле этого на странице «Пос- ла для автоматического сбора входятавщики проверки подлинности» для щей электронной почты. Адрес, с которого будет собиратьприложения http://moss_server вы найдете две зоны – «По умолчанию» ся почта, в этом случае выглядит как и «Интернет». Для зоны «Интернет» «name@server», где name – имя, укаможно настроить отдельного постав- занное в параметрах библиотеки докущика проверки подлинности на ос- ментов Sharepoint, а server – имя frontнове форм. end сервера Sharepoint. В результате одно и то же веб-приЭта возможность весьма удобна ложение будет доступно: для сбора отзывов или заявок в служ-

№7, июль 2007

бу поддержки. Достаточно установить на почтовом сервере пересылку с внешнего адреса службы поддержки на внутренний адрес библиотеки документов. Можно также настроить оповещение специалистов о поступлении новой входящей почты. Внимание! Имя почтового сервера и обратный адрес необходимо настроить в двух местах: в разделе «Топология и службы» страницы «Операции» для фермы серверов и «Управление веб-приложениями Sharepoint» страницы «Управление приложениями» для каждого приложения.

Backup и базы данных Если SPS 2003 хранил всю необходимую информацию в трех базах данных, то MOSS 2007 использует их множество. Это база данных конфигурации портала, отдельная база данных для поставщика общих служб, отдельная база для каждого веб-приложения, база для хранения результатов индексации и некоторые другие. Вместо отдельной утилиты для резервного копирования портала теперь нам доступен раздел «Резервное копирование и восстановление» на странице «Операции». Здесь же можно просмотреть полный список всех баз данных (см. рис. 11). Эти средства позволят выполнить однократное сохранение данных портала, однако настроить регулярное копирование по расписанию невозможно. Рекомендуется сохранить полный список баз данных и воспользоваться стандартными средствами резервного копирования Microsoft SQL Server или выполнять копирование с помощью стандартного планировщика заданий и утилиты командной строки stsadm. Позволяют выполнять резервные копии портала и некоторые специализированные программные продукты, например, ArcServ. Внимание! Стандартные средства резервного копирования по-прежнему не включают директорию, где хранятся схемы, шаблоны, иконки, стилевые таблицы и др. Если вы или ваши разработчики вносите изменения в эти файлы, директорию нужно копировать отдельно. Для MOSS 2007 и WSS 3.0 она находится по адресу: «системный диск:\Program Files\

25


администрирование

Рисунок 7. Настройка поставщика проверки подлинности

Рисунок 8. Добавление доступа к узлу для всех авторизованных пользователей

26


администрирование Common Files\Microsoft Shared\web server extensions\12».

Корпоративная лицензия MOSS и работа с бизнес‑данными Наиболее интересные возможности MOSS 2007 предоставляет для работы с бизнес-данными, однако они потребуют для использования корпоративной лицензии. Это, в частности: n службы Excel; n каталоги бизнес-данных; n работа с формами (на клиентских машинах для этого более не требуется установка InfoPath); n цифровые панели и ключевые показатели эффективности (KPI).

Службы Excel Теперь графики, диаграммы и таблицы можно публиковать прямо на страницах Sharepoint. Совместную работу в режиме онлайн над одной и той же таблицей веб-клиент Excel, как бы этого не хотелось, не поддерживает. Однако веб-клиент Excel – это не только средство отображения, но и возможный источник данных, например, для подсчета KPI (ключевых показателей эффективности) или составления других отчетов (см. рис. 12). Внимание! Веб-клиент Excel работает только с файлами в формате Microsoft Office 2007, а именно – .xlsx. В веб-браузере клиент будет корректно отображаться у всех пользователей. Если пользователь хочет скачивать таблицу к себе на машину и работать с ней локально, но у него нет новой версии Office, можно установить ему Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint 2007 File Formats, доступный на сайте Microsoft. Чтобы настроить отображение вебчастей клиента Excel, необходимо выполнить следующие действия: n Создать на узле библиотеку документов, где будут храниться файлы Excel. n Настроить надежное расположение данных: на странице управления поставщиком общих служб в раз деле «Параметры слу жб Excel/Надежные расположения данных» указать адрес этой библиотеки.

№7, июль 2007

Рисунок 9. Внешний сайт, создаваемый Sharepoint по шаблону «Портал публикации»

n Проверить, включены ли компо-

n с помощью BDC можно отображать

ненты корпоративного выпуска Sharepoint на всех необходимых уровнях в «Управлении возможностями».

бизнес-данные в одном из столбцов обычного списка или библиотеки Sharepoint; n бизнес-данные можно легко вставлять на страницы посредством вебинтерфейса и связывать между собой; n BDC под держивают действия, т.е. можно не только получить информацию из внешних источников данных, но и выполнить в них какоелибо действие, например, обновить какое-либо поле, отправить сообщение и т. п.; n BDC позволяют дополнять профили пользователей данными из внешних систем, например, кадровых; n BDC позволяют осуществлять поиск средствами Sharepoint во внешних источниках; n BDC имеют встроенные средства разграничения доступа и их проще персонализировать, особенно с помощью службы единого входа; n BDC более надежны и безопасны, т.к. параметры подключения не хранятся в открытом виде на странице, а определены в настройках приложения на сервере, кроме того, через BDC можно получить доступ строго к определенным таблицам и данным.

Некоторые виды документов Excel невозможно отобразить в веб-клиенте. Например, содержащие веб-запросы, внешние ссылки, макросы (полный список можно найти в справке).

Каталоги бизнес-данных и служба единого входа Пожалуй, каталоги бизнес-данных (Business Data Catalogs, BDC) – одно из самых интересных нововведений в Sharepoint. BDC позволяют отображать на страницах портала данных из широкого набора источников – любой базы данных, к которой можно подключиться с помощью ODBC или OleDB, а также любого веб-сервиса. В предыдущей версии отображать данные из других источников можно было только посредством вставки на страницу веб-части «Представление данных» с помощью Microsoft Office Frontpage. Каталоги бизнес-данных обладают рядом преимуществ по сравнению с этим способом:

27


администрирование

Рисунок 10. Страница управления профилями

Рисунок 11. Выбор баз данных для резервного копирования

28


администрирование

Рисунок 12. Примеры отчетов с использованием веб-клиента Excel

Для использования бизнес-данных необходимо: n создать файл определения приложения (примеры можно найти в SDK [2]); n импортировать файл определения и настроить параметры безопасности на странице управления поставщиком общих служб в разделе «Каталог бизнес-данных» для каталога в целом и для каждого приложения и сущности в отдельности; n проверить, включены ли компоненты корпоративного выпуска в «Управлении возможностями»; n добавить на страницу веб-часть «Список бизнес-данных» или другие подходящие веб-части. Однако каталоги бизнес-данных достаточно сложны в настройке – в написании XML-файлов с определением приложения не так-то просто разо-

№7, июль 2007

браться, а средств отладки практически нет (единственный источник информации об ошибках – event-логи сервера и журнал трассировки). Впрочем, сейчас появились сторонние программные продукты для визуального создания файлов определений приложений (например, MOSS BDC Design Studio или BDC Meta Man), но они работают далеко не со всеми базами данных и не работают с ODBC. Если данные, отображаемые с помощью бизнес-каталогов, необходимо персонифицировать, потребуется настройка службы единого входа. Эта служба позволит сопоставить учетные записи поставщика проверки подлинности Sharepoint и учетные данные корпоративных приложений. Для этого необходимо: n Запустить встроенный сервис «Microsoft Single Sign On» («Служба единого входа Microsoft»).

n Настроить параметры службы единого входа в разделе: «Операции/ Управление параметрами единого входа». n Указать правила для сопоставления учетных записей («Операции/ Управление параметрами единого входа/Управление сведениями учетных записей для определений корпоративных приложений».

Другие возможности Хотелось бы отметить еще некоторые из новых возможностей, полезных для администратора: n возможность аудита событий (открытие, просмотр, изменение элементов и документов); n корзина на двух уровнях (на уровне узла, доступная всем пользователям, и на уровне семейства узлов, доступная только администратору);

29


администрирование

Рисунок 13. Статистика поисковых запросов

n новинки поиска: совершенство- сы) в Sharepoint оставляет желать вание самого механизма поиска, возможность поиска по людям, возможность поиска во внешних источниках с помощью BDC, возможность компоновки собственных страниц поиска из готовых вебчастей; n в новой версии легко найти статистику поисковых запросов: сколько их было всего, какие поисковые слова наиболее популярны, какие слова не нашлись, какие результаты наиболее популярны (страница управления поставщиком общих служб, «Отчеты об использовании средств поиска») (см. рис. 13).

Разочарования Хотелось бы отметить один негативный момент – в русской версии MOSS 2007 не везде корректно выполнен перевод. Например, «master page» переведена как «Главная страница», в то время как на самом деле – это основной шаблон или образец. Так в меню появляются рядом пункты «Главная страница» и «Начальная страница». Таких неудачных примеров можно найти достаточно, поэтому при возникновении непонимания стоит подумать и о нюансах перевода. Широко рекламируемый и долгожданный workflow (рабочие процес-

30

лучшего. Возможности для разработки достаточно сложных процессов есть – это и Sharepoint Designer, и Visual Studio. Однако нет средств мониторинга текущих процессов и гибкого управления ими. Что касается бизнес-аналитики, то средств ее представления тоже немного – это возможность публикации таблиц и диаграмм Excel, простейший вариант подсчета KPI и возможность публикации готовых отчетов из SQL Server Reporting Services, SAP и Siebel. С другой стороны, если сделать основой для подсчета KPI, например, исходные данные, поставляемые в списки Sharepoint из разных внешних корпоративных приложений с помощью BDC, инструмент сразу же представляется гораздо более мощным. Для серьезной бизнес-аналитики компания Microsoft позиционирует другой инструмент – Performance Point Server 2007, наследник Business Scorecard Manager.

Заключение MOSS 2007 – безусловно, продукт, заметно обогнавший своего предшественника. В первую очередь это касается интеграции с корпоративными приложе-

ниями и улучшенными средствами работы с корпоративной информацией – от расширенного поиска сотрудников до сводки по всем показателям бизнес-процессов из самых разных источников. Конечно, в одной статье нельзя описать все возможности новой линейки продуктов Sharepoint. Хочется отметить, что для администратора или разработчика MOSS 2007 – продукт, интересный втройне. С одной стороны, он позволит автоматизировать собственную работу (например, создать базу знаний или страницу заявок для службы поддержки). С другой стороны, с его помощью можно быстро реализовать ряд типовых задач – от совместной работы над документами до создания внешнего сайта. Наконец, с третьей стороны, – это продукт, интересный в настройке и эксплуатации. Здесь есть над чем поломать голову и проявить творческие способности. Времени на изучение всех тонкостей потребуется немало, но результат наверняка порадует. 1. 20 07 Of fice Resource Kit – ht tp:// technet2.microsoft.com/Office/en-us/ l i b r a r y/ 9 d f1c7d 2- 3 0 a 9 - 47 b b - a 3 b 25166b394fbf51033.mspx?mfr=true. 2. Sharepoint Server 2007 SDK – http:// www.microsoft.com/downloads/details. aspx?FamilyID=6d94e307-67d9-41acb2d6-0074d6286fa9&DisplayLang=en. 3. Planning and architecture for Office S hare Po i nt S e r ve r 2 0 07 – к н и г а , две части которой можно скачать по адресам: http://go.microsoft.com/ f wlink /?LinkID =79552&clcid= 0x409 и h t t p: //g o . m i c r o s o f t . c o m / f w l i n k / ?LinkId=85548&clcid=0x409. 4. Все о Sharepoint на сайте Microsoft – h t t p: / /o f f i c e . m i c r o s o f t . c o m / r u - r u / sharepointserver/default.aspx. 5. Самый активный русскоязычный форум по Sharepoint – http://www.gotdotnet.ru/ Forums/SharePoint/default.aspx.


администрирование

Технология NLB – отказоустойчивость без лишних затрат

Андрей Бирюков Решение задачи распределения нагрузки является одной из важнейших на сегодняшний день. Предлагаю рассмотреть одно из таких решений, построенных на основе службы Network Load Balancing, входящей в состав Windows Server 2003. 32


администрирование

О

тказ ключевых бизнес-прило- Выбор режима работы ном режиме – данная конфигурация, жений всегда является боль- NLB-кластера как правило, является наиболее предшой проблемой для систем- Узел может быть создан и настроен почтительной. В ней используется втоных администраторов. Для ее решения для работы в одном из четырех режи- рой сетевой адаптер на каждом узле можно использовать службу Microsoft мов, каждый из которых имеет свои кластера, что позволяет получить слеClustering Service, входящую в состав достоинства и недостатки. Это следу- дующие преимущества: нет ограничеWindows Server 2003 Enterprise Edition. ющие режимы: ний на обычные сетевые соединения Однако, кроме этой службы в состав n один сетевой адаптер в одноадрес- между узлами, возможна поддержка Windows Server 2003 также входит ном режиме; NetBIOS через первый сконфигурислужба Network Load Balancing. В чем n один сетевой адаптер в групповом рованный адаптер, не снижается проже различие между этими двумя клас(многоадресном) режиме; изводительность сети и не возникает терными службами? n несколько сетевых адаптеров в од- проблем с коммутаторами. Microsoft Cluster Service прежде ноадресном режиме; Несколько сетевых адаптеров всего дублирует систему хранения дан- n несколько сетевых адаптеров в групповом режиме – такая модель в групповом режиме. ных, позволяя реализовать отказоусиспользуется, если у некоторых узтойчивость посредством замены вылов в кластере имеется только один шедшего из строя узла другими узлаВыбор режима функционирования сетевой адаптер, но при этом требуми кластера. Такое построение клас- кластера зависит от обстоятельств, ется поддерживать обычные сетевые тера удобно при реализации отказо- требований и ограничений, налагае- соединения между узлами данного устойчивости для таких приложений, мых на структуру кластера. Рассмот- кластера. Такая модель вполне жизкак Microsoft Exchange, баз данных рим каждую из них. неспособна, однако могут быть проMicrosoft SQL и других. Один сетевой адаптер, работаю- блемы с некоторыми моделями комДругим решением, позволяющим щий в одноадресном режиме, явля- мутаторов. также построить масштабируемую сис- ется в некотором смысле самым просИсходя из вышеописанного, натему является Network Load Balancing. тым типом, и узел с одним адаптером иболее предпочтительной моделью Данная служба дублирует сетевые немного дешевле, чем с несколькими. NLB‑кластера является использоваслужбы, распределяя нагрузку между Но при этом налагаются существен- ние нескольких сетевых адаптеров всеми узлами кластера. Служба NLB ные ограничения: снижается произво- в одноадресном режиме. в основном используется при работе дительность сети в целом, отключаютТеперь обсудим некоторые моменс такими приложениями, как служба ся обычные соединения между узла- ты, связанные с предварительной наWeb, FTP, Terminal Service. ми кластера, и наконец, в таком клас- стройкой NLB-кластера. тере нет поддержки NetBIOS. КонечВо-первых, убедитесь что должным Технология NLB но, последний пункт многим покажется образом обеспечена безопасность Обсудим теоретические основы тех- не очень критичным, так как NetBIOS приложений, для которых распределянологии. NLB – это драйвер сетево- сейчас мало кем используется, но все ется нагрузка. Система безопасности го обмена Windows 2003. Он действу- же такое ограничение есть. NLB не распространяется на приложеет независимо от сетевого стека TCP/ Один сетевой адаптер в груп- ния. Следовательно, службы кластера IP и прозрачен для этого стека. Основ- повом (многоадресном) режиме с распределенной нагрузкой не будут ным элементом службы NLB является предназначен для кластеров, в кото- осведомлены о нарушении безопасWindows Load Balancing, приложение, рых один или несколько узлов имеют ности на уровне приложений. отвечающее за распределение нагруз- один сетевой адаптер. СоответственВо-вторых, неплохо бы позаботитьки между узлами кластера. но, между узлами в кластере NLB образует кластер максимум можно устанавливать обычиз 32 компьютеров. Нагрузка на каж- ные соединения. Это свойсдое серверное приложение может быть тво позволяет обойти одно распределена по узлам всего клас- из наиболее неудобных огратера или управляться в основном ка- ничений работы с одним секим-либо одним узлом, когда другой тевым адаптером в одноадузел в кластере обеспечивает избы- ресном режиме. К недостатточность для управляемого перехо- кам этой модели можно отда по отключению в случае отказа ос- нести: снижение общей проновного узла. изводительности сети, возДля полностью распределенных можны проблемы с коммуприложений отказ любого узла вызы- таторами, которые не поддевает перераспределение нагрузки, ко- рживают групповые MAC-адторую нес этот узел, на все остальные реса. Также в таком кластемашины кластера. При возвращении ре нет поддержки NetBIOS. в строй узла нагрузка снова перерасН е с ко л ь ко с е т е в ы х пределяется. адаптеров в одноадресРисунок 1. Создание NLB-кластера

№7, июль 2007

33


администрирование ся об организации отказоустойчивого от взлома (находится за межсетевым Мы будем реализовывать двухузподключения сетевого оборудования, экраном). Механизм удаленного уп- ловой NLB-кластер, в котором в какоторое применяется в NLB-класте- равления использует протокол UDP честве приложения будет развернута ре. Также для определенных моделей по порту 2504. Команды, используе- служба Terminal Service. оборудования можно использовать мые для удаленного управления класVRP (Virtual Router Protocol) и HRSP тером, отправляются на сетевой адап- Реализация (Hot Router Standby Protocol). Это поз- тер, использующий службу NLB. Затем Итак, приступим к установке кластеволяет маршрутизатору преобразовы- данные команды передаются всем уз- ра с распределенной нагрузкой NLB. вать основной IP-адрес кластера и дру- лам кластера уже по локальной, внут- Для этого необходимо настроить сегие групповые адреса в соответству- ренней подсети кластера, с использо- тевые параметры кластера, параметющий аппаратный адрес. Некоторые ванием широковещательных сообще- ры узла и необходимые порты. Как модели маршрутизаторов и коммута- ний. Это гарантирует получение ко- уже упоминалось ранее, для решеторов не удовлетворяют данным ус- манд всеми узлами кластера, даже ния задачи необходимо использовать ловиям, и тогда в них можно создать если он работает в одноадресном ре- несколько сетевых адаптеров. Соотстатическую ARP-запись или исполь- жиме. Поэтому необходимо уделить ветственно, и описывать настройку зовать службу балансировки нагруз- особое внимание защите внутренней я буду для нескольких сетевых адапки сети в стандартном одноадресном подсети кластера, так как широкове- теров. Если вы собираетесь испольрежиме. щательные сообщения легко можно зовать один сетевой адаптер, так чтоВ-третьих, на адаптере, для кото- перехватить. бы все используемые IP-подсети рарого включена служба NLB, можно Если средства удаленного управ- ботали внутри одной кабельной сети, использовать только протоколы сте- ления включены, то с помощью про- то за подробной инструкцией обрака TCP/IP. Никакие другие протоколы граммы nlb.exe можно осуществлять титесь к статье базы знаний Microsoft за номером 323431. (например IPX) для данного адаптера управление кластером по сети. устанавливать не нужно. Также проОткройте раздел «Network следите, чтобы на каждом из узлов Постановка задачи Load Balancing Manager» из папки были открыты все необходимые пор- Разобрав теоретические вопросы, пе- «Administrative Tools». В левой панеты на межсетевом экране (если он ис- рейдем к практической части. Прежде ли щелкните правой кнопкой мыши пользуется), например, если кластери- всего необходимо определиться с той на «Network Load Balancing Clusters» зуется FTP-сервер, то необходимо от- задачей, которую мы хотим решить и выберите пункт «New Cluster» (создакрыть 20-й и 21-й порты на всех узлах. с помощью NLB-кластера. ние кластера). Далее, в окне «Cluster Не забудьте проверить, на всех ли узВ качестве примера я буду развора- Parameters» нужно ввести IP-адрес, лах кластера запускается данное при- чивать NLB‑кластер для распределе- маску подсети и полностью определожение. ния нагрузки службы Terminal Service. ленное доменное имя (FQDN), под коИ наконец, хорошо подумайте, пре- Средства удаленной работы в Windows торым будет известен данный кластер жде чем разрешить удаленное уп- приобретают все большую популяр- (cм. рис. 1). равление NLB-кластером. Включе- ность, так как возможность использоОчевидно, что IP-адрес должен ние удаленного управления создает вать не очень мощные рабочие стан- быть фиксированный, то есть он не модополнительную угрозу безопаснос- ции в качестве клиентской консоли жет быть динамическим адресом, выти, поэтому при включении удален- только для создания соединения с сер- деляемым внешним DHCP. ного управления следует убедиться, вером терминалов является довольЗатем необходимо определиться, что NLB‑кластер надежно защищен но привлекательной, ведь вся основ- в каком режиме должен работать класная нагрузка в таком случае тер – в одноадресном (unicast) или мноложится на сервер, а в ка- гоадресном (multicast), и указать, нужно честве клиентов можно ис- ли разрешить удаленное управление пользовать старые компью- (флажок «Allow remote control»), а затеры, которых хватает в лю- тем щелкнуть по кнопке «Next». бой организации. Но в этом Как уже упоминалось ранее, с удаслучае надежность всей ленным администрированием нужно терминальной системы бу- быть очень аккуратным, во избежадет в значительной степе- ние возможных проблем с безопасни определяться надежнос- ностью. тью и производительностью Если необходимо, чтобы кластер сервера терминалов, в час- имел дополнительные IP‑адреса, вветности, требование распре- дите их в окне «Cluster IP Address», поделения нагрузки. Отказоус- том нажимите «Next». тойчивость в данном кластеЗатем можно определить правире обеспечивается за счет ла для портов или оставить их конфибалансировки сетевой на- гурирование до момента, когда этот грузки. кластер будет запущен. С помощью Рисунок 2. Добавление узлов

34


администрирование

Рисунок 3. Консоль управления NLB

Рисунок 4. Настройки службы Session Directory

правил для портов можно управлять на момент запуска Windows. Указыва- ная именно серверам терминалов. поведением различных типов трафи- ем состояние Started. Затем нажима- Что делать с разъединенными сеансака TCP/IP. ем «Finish». ми пользователей, ведь в случае выВ частности, можно оптимизироПри необходимос ти добавить хода из строя одного из узлов кластевать работу сети и увеличить быстро- еще один узел в уже существующий ра часть пользовательских сессий модействие кластера в целом, запретив NLB‑кластер необходимо выполнить гут «повиснуть». пересылку ненужных пакетов. следующее. В консоли «Network Load Если сервер терминалов выделяет В следующем окне «Connect» вве- Balancing Manager» выбираем уже су- для пользовательских сессий локальдите имя или IP-адрес первой хост- ществующий кластер и нажимаем пра- ные ресурсы, то сбой может привести машины, которая будет включена вую кнопку мыши, затем «Add Host To к серьезным последствиям. К тому же в этот кластер. Щелкните по кноп- Cluster». В окне Connect указываем имя сессия отключившегося пользоватеке «Connect», чтобы подсоединиться или IP-адрес узла, добавляемого в наш ля через некоторое время (указанное к данному узлу и получить на экране кластер (см. рис. 2). в настройках терминального сервера) Подключившись к новому узлу, закрывается, лишив пользователя поссписок доступных сетевых интерфейсов. Выделите интерфейс, через ко- можно выбрать из появившегося спис- ледней возможности сохранить данторый будет проходить открытый тра- ка доступных интерфейсов тот, через ные и корректно завершить работу. фик этого кластера (в отличие от час- который будет проходить открытый Однако даже в том случае, если тного, межузлового трафика, который трафик этого кластера. пользователь после сбоя снова подиспользуется узлами для обмена инДалее аналогично уже описанным ключится к серверу терминалов, нет формацией). ранее действиям указываем парамет- никакой уверенности в том, что он поВ окне «Host Parameters» вы мо- ры для данного узла, приоритет, состо- падет в свою, уже открытую сессию, жете задать приоритет (в поле Priority) яние на момент запуска. После нажа- а не в новую, созданную другим сердля данного узла кластера (для реше- тия «Finish» получаем следующую кар- вером терминалов, входящим в этот ния нашей задачи повышения отказо- тину (см. рис. 3). кластер. устойчивости указываем приоритет, В случае, если по каким-либо приОднако в случае кластера с распреравный единице) и выделенный IP‑ад- чинам вам необходимо вывести узел делением нагрузки Session Manager, рес, который будет использоваться из кластера, достаточно выбрать дан- служба, отвечающая за распредедля подсоединения к этому конкрет- ный хост и, нажав правую кнопку мы- ление терминальных сессий, ничего не знает о сеансах на других сервеному серверу (в отличие от кластера ши, указать Delete Host. в целом). Это должен быть фиксирорах. Поэтому Microsoft ввела понятие ванный IP‑адрес, а не адрес, выдан- Настраиваем каталога сеансов (Session Directory). каталог сеансов ный DHCP. Каталог сеансов поддерживает динаПо поводу приоритетов необхо- Итак, NLB-кластер успешно создан. мическую базу данных, которая храдимо сделать небольшое поясне- Вообще его уже можно использовать нит соответствия имен пользоватение. Приоритет является нормирую- для решения своих задач, указывая лей и открытых сеансов на всех термищим коэффициентом балансировки, в качестве IP‑адреса адрес самого нальных серверах кластера. Это позпропорциональный производитель- кластера. Например, для решения на- воляет пользователям подключаться ности узла. Так как в нашем случае шей задачи с терминальным сервером к своим сеансам на любом сервере мы не оптимизируем производитель- вы уже можете подсоединиться к клас- в кластере независимо от того, на каность, то приоритеты определены, рав- теру по его IP‑адресу и использовать кой сервер его изначально направила ные единице. службу терминалов в режиме распре- служба NLB. Последним этапом вам необходи- деленной нагрузки. Но тут возникаНастроим данную службу на нашем мо задать начальное состояние узла ет небольшая проблема, свойствен- кластере. Session Directory может ис-

№7, июль 2007

35


администрирование веб‑сервиса или для какого-либо специализированного приложения с распределением нагрузки. В статье приводится лишь пример одного из возможных способов использования Network Load Balancing. Однако есть несколько общих советов по оптимизации работы NLB‑кластера. Прежде всего необходимо ясно понимать, где вероятнее всего находится «узкое» место вашего кластеризованного приложения. В случае с терминальным сервером, например, будут активно использоваться процессор и память узлов кластера. Следовательно, следует заранее позаботиться о том, чтобы мощность была достаточной для работы в NLB‑кластере. Еще одним важным элементом NLB является нагрузка на сеть. Используйте высокоскоростной коммутатор, желательно с гигабитными портами (сейчас такое оборудование стоит недорого). Соединяйте узлы по принципу один сервер – один порт, без каких-либо промежуточных устройств. Используйте одноадресный режим с выделенной внутренней кластерной сетью. Также для оптимизации внесите правку в реестр на каждом из узлов кластера, изменив значение следующего ключа с 1, используемой по умолчанию, на 0: HKEY_LOCAL_MACHINE\ System\CurrentControlSet\Services\ WLBS\Parameters\MaskSourceMAC. Это изменение позволяет данному ключу указывать, какой MAC-адрес является фактическим источником трафика, что помогает правильно выполнять его работу по коммутации. После этого изменения нужно выполнить перезагрузку всех узлов кластера.

Рисунок 5. Настройка групповых политик

пользовать любую редакцию WS2K3. Вы даже можете создать каталог сеансов на одном терминальном сервере в кластере, хотя это не рекомендуется, поскольку остановка этого сервера для обслуживания или установки ПО может затронуть весь кластер. Перед началом настройки Session Directory необходимо определиться, на каком сервере будет размещаться база. Следует обратить внимание на то, что в случае выхода из строя данного сервера информация о существующих сеансах будет утеряна, поэтому выберите мощный и надежный сервер. На этом сервере откройте «Computer Management or Services» для доступа к «Terminal Services Session Directory». Откройте свойства службы, настройте ее на автоматический запуск и запустите ее (см. рис. 4). После первого запуска служба каталога сеансов должна создать новую локальную группу Session Directory Computers. Для того чтобы терминальный сервер мог информировать сервер каталога сеансов о своих терминальных сессиях или запрашивать информацию о сеансах с других серверов, он должен быть членом этой группы. После создания сервера каталога сеансов нужно настроить терминальные серверы. Для этого можно прибегнуть либо к помощи консоли Terminal Services Configuration, либо воспользоваться редактором групповых политик.

36

Также, если вы используете Windows Server 2003 Enterprise Edition, то в настройках терминального сервера можете найти дополнительную закладку Session Directory. В данной консоли необходимо указать IP‑адрес или имя сервера каталога сеансов. В случае, если у вас используется редакция Standard Edition (а все настройки, приводимые для данной статьи делались именно для этой редакции), то наилучшим средством для настройки Session Directory будет использование групповых политик. Для этого создайте Organization Unit в домене и внесите в него все терминальные серверы нашего кластера, затем откройте консоль редактирования групповых политик для данного OU и перейдите в раздел «Computer Configuration → Administrative Templates → Windows Components → Terminal Services → Session Directory». Заключение Укажите все необходимые параметры На этом завершается серия статей, (см. рис. 5). посвященная кластерным технологиПосле этого достаточно дождаться ям в Windows Server 2003. Надеюсь, следующего обновления групповых по- что описанные технологии пригодятлитик или же воспользоваться коман- ся в нелегком деле обеспечения недой gpupdate, применив ее на каждом прерывности работы корпоративных из узлов кластера. IT-систем.

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

1. Microsoft.com. Статья № 323437. 2. http://www.microsoft.com/Rus/Business/ Infrastructure/Unified/Scalabilit y/ Default.mspx. 3. Ч. Рассел. Microsoft Server 2003. Справочник администратора.


bugtraq Переполнение буфера в Visual IRC Переполнение буфера в Asterisk Программа: Asterisk версии до 1.4.3. Опасность: Высокая. Описание: Уязвимость существует из-за ошибки при обработке SIP-пакетов в файле chan_sip.c. Удаленный пользователь может с помощью SIP INVITE-пакета, содержащего специально сформированные значения T38FaxRateManagement или T38FaxUdpEC SDP, вызвать переполнение стека и выполнить произвольный код на целевой системе. Для успешной эксплуатации уязвимости требуется, чтобы T38 fax поверх SIP был включен в конфигурационном файле sip.conf. URL производителя: www.asterisk.org. Решение: Установите последнюю версию 1.4.3 с сайта производителя.

Выполнение произвольного кода в Microsoft Internet Explorer Программа: Microsoft Internet Explorer 6.x, 7.x. Опасность: Высокая. Описание: Уязвимость существует из-за ошибки в обработчике FirefoxURL на системах с установленным браузером Mozilla Firefox. Удаленный пользователь может с помощью специально сформированной веб-страницы изменить путь к Mozilla Firefox и выполнить произвольный код на целевой системе. Пример: http://larholm.com/vuln/firefoxurl.html. URL производителя: www.microsoft.com. Решение: В настоящее время способов устранения уязвимости не существует.

Несколько уязвимостей в Adobe Flash Player Программа: Adobe Flash Player 9.x, Macromedia Flash Player 7.x, Macromedia Flash Player 8.x. Опасность: Критическая. Описание: 1. Уязвимость существует из-за ошибки при обработке входных данных. Удаленный пользователь может с помощью специально сформированной веб-страницы выполнить произвольный код на целевой системе. Уязвимости подвержены версия 9.0.45.0 и более ранние. 2. Уязвимость существует из-за ошибки во взаимодействии Flash Player с некоторыми браузерами. Удаленный пользователь может с помощью специально сформированной веб-страницы перехватить нажатия клавиш и переслать их апплету Flash Player. Уязвимости подвержены версия 7.0.69.0 и более ранние на платформах Linux и Solaris. 3. Уязвимость существует из-за недостаточной обработки HTTP Referer. Удаленный пользователь может произвести CSRF-атаку. Уязвимость существует в 8.0.34.0 и более ранних версиях. URL производителя: www.adobe.com. Решение: Установите последнюю версию 9.0.47.0 с сайта производителя.

№7, июль 2007

Программа: Visual IRC 2.0, возможно, более ранние версии. Опасность: Высокая. Описание: Уязвимость существует из-за ошибки проверки границ данных при обработке ответа от IRC-сервера команде «JOIN». Удаленный пользователь может с помощью слишком длинного ответа от IRC-сервера вызвать переполнение стека и выполнить произвольный код на целевой системе. URL производителя: www.visualirc.net. Решение: В настоящее время способов устранения уязвимости не существует.

Переполнение буфера в Sun Java JRE Web Start Программа: Java Web Start 1.x, Sun Java JRE 1.5.x / 5.x, Sun Java JRE 1.6.x / 6.x. Опасность: Высокая. Описание: Уязвимость существует из-за ошибки проверки границ данных в компоненте Java Web Start (javaws.exe) при обработке JNLP-файлов. Удаленный пользователь может с помощью специально сформированного JNLP-файла, содержащего слишком длинный атрибут codebase, вызвать переполнение стека и выполнить произвольный код на целевой системе. URL производителя: www.sun.com. Решение: Установите исправление с сайта производителя.

Несколько уязвимостей в Microsoft Excel Программа: Microsoft Office 2000, Microsoft Office XP, Microsoft Office 2003. Опасность: Критическая. Описание: 1. Уязвимость существует из-за ошибки при обработке данных, относящихся к версии файла. Удаленный пользователь может с помощью специально сформированного Excel-файла вызвать повреждение памяти и выполнить произвольный код на целевой системе. 2. Уязвимость существует из-за ошибки при проверке подлинности номера активного листа. Удаленный пользователь может с помощью специально сформированного Excel-файла вызвать повреждение памяти и выполнить произвольный код на целевой системе. 3. Уязвимость существует из-за ошибки при обработке начальных атрибутов, ассоциированных с рабочим листом. Удаленный пользователь может с помощью специально сформированного Excel-файла выполнить произвольный код на целевой системе. URL производителя: www.microsoft.com. Решение: Установите исправление с сайта производителя.

Составил Александр Антипов

37


администрирование

VS Андрей Шетухин Современный блогохостинг – какой он? Какую СУБД выбрать, как спроектировать схему данных и где узкие места при использовании той или иной СУБД? Протестируем производительность СУБД MySQL и PostgreSQL на примере блогохостинга.

О

сравнении производительности MySQL и PostgreSQL написана не одна статья, и всезнающий Google выдает больше миллиона документов, посвященных этой теме.

38

Однако, все тесты, которые доступны в Интернете, – это работа СУБД на синтетических запросах, имеющих малое отношение к конкретным проектам.

Мы же тестируем пригодность СУБД для реализации конкретного проекта, а именно – блогохостинга с большим количеством активных пользователей, которые не только ве-


Đ°Đ´ĐźĐ¸Đ˝Đ¸Ń Ń&#x201A;Ń&#x20AC;иŃ&#x20AC;Ованио Đ´Ń&#x192;Ń&#x201A; Ń Đ˛ĐžĐ¸ дновники, пиŃ&#x2C6;Ń&#x192;Ń&#x201A; и Ń&#x2021;иŃ&#x201A;Đ°Ń&#x17D;Ń&#x201A; кОППонŃ&#x201A;Đ°Ń&#x20AC;ии, нО и Ń&#x2021;иŃ&#x201A;Đ°Ń&#x17D;Ń&#x201A; ĐˇĐ°ĐżĐ¸Ń Đ¸ Ń Đ˛ĐžĐ¸Ń&#x2026; Đ´Ń&#x20AC;Ń&#x192;СоК.

ĐĄĐľŃ&#x20AC;воŃ&#x20AC; и Đ˝Đ°Ń Ń&#x201A;Ń&#x20AC;ОКки Ń Đ¸Ń Ń&#x201A;оПŃ&#x2039; ĐĄĐľŃ&#x20AC;воŃ&#x20AC; â&#x20AC;&#x201C; HP ProLiant DL380 2xXeon3.2, RAM 5 Đ&#x201C;Đą, SCSI HDD u320. Đ&#x17E;поŃ&#x20AC;Đ°Ń&#x2020;иОннаŃ? Ń Đ¸Ń Ń&#x201A;оПа â&#x20AC;&#x201C; Linux Debian, kernel 2.6.18.

3.

). ).

).

3.). XVHUBLG 3.). IULHQGBLG

). 3RVWV

&RPPHQWV

3.). 3.

XVHUBLG SRVWBLG

3.). XVHUBLG 3.). SRVWBLG 3. FRPPHQWVBLG

).

SRVWBGDWH SRVWBWLWOH

).

). IURPBXVHUBLG FRPPHQWBGDWH

SRVWBERG\

MemTotal: 5016868 kB MemFree: 4087256 kB Buffers: 152704 kB Cached: 643356 kB SwapCached: 0 kB Active: 492940 kB Inactive: 339252 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 5016868 kB LowFree: 4087256 kB SwapTotal: 7815580 kB SwapFree: 7815532 kB Dirty: 80 kB Writeback: 0 kB AnonPages: 6820 kB Mapped: 15812 kB Slab: 76636 kB PageTables: 1084 kB NFS_Unstable: 0 kB Bounce: 0 kB CommitLimit: 10324012 kB Committed_AS: 297940 kB VmallocTotal: 34359738367 kB VmallocUsed: 4100 kB VmallocChunk: 34359734091 kB

FRPPHQWBERG\

8VHUV

Âą

)ULHQGV

Âą

 ÉĄÉ&#x161;ɊɢɍÉ&#x;ÉŁ

3RVWV

Âą  ÉĄÉ&#x161;ɊɢɍÉ&#x;ÉŁ É&#x153;ÉŤÉŞÉ&#x;É&#x17E;ɧÉ&#x;ÉŚɊɨÉĄÉ&#x161;ɊɢɍÉ&#x;ÉŁɧÉ&#x161;ɊɨɼɜɥɨÉ&#x153;É&#x161;ÉŹÉ&#x;ÉĽÉš 

 ÉĄÉ&#x161;ɊɢɍÉ&#x;ÉŁ É&#x153;ÉŤÉŞÉ&#x;É&#x17E;ɧÉ&#x;ÉŚɊɨÉŽÉŞÉ&#x;ɧÉ&#x17E;ɨÉ&#x153; 

&RPPHQWV Âą  ÉĄÉ&#x161;ɊɢɍÉ&#x;ÉŁ É&#x153;ÉŤÉŞÉ&#x;É&#x17E;ɧÉ&#x;ÉŚɊɨɤɨɌɌÉ&#x;ɧɏÉ&#x161;ɪɢÉ&#x;É&#x153;ɧÉ&#x161;ɤÉ&#x161;É É&#x17E;ɭɸÉĄÉ&#x161;Ɋɢɍɜ 

ĐĄŃ&#x2026;оПа Đ&#x2018;Đ&#x201D;

Đ´ĐžŃ Ń&#x201A;Đ°Ń&#x201A;ĐžŃ&#x2021;нО Ń ĐťĐžĐśĐ˝Ń&#x2039;, и ĐżŃ&#x20AC;ĐľĐ´ĐžŃ Ń&#x201A;авиŃ&#x201A;Ń&#x152; иŃ&#x2026; в Ń?Ń&#x201A;ОК Ń Ń&#x201A;Đ°Ń&#x201A;Ń&#x152;Đľ Đ˛ĐźĐľŃ Ń&#x201A;Đľ Ń Đ´ĐžŃ Ń&#x201A;ОКнŃ&#x2039;Đź ĐžĐżĐ¸Ń Đ°Đ˝Đ¸ĐľĐź но пОСвОНŃ?ĐľŃ&#x201A; ОйŃ&#x160;оП. Đ&#x;ĐžŃ?Ń&#x201A;ОПŃ&#x192; ОгŃ&#x20AC;аниŃ&#x2021;Ń&#x192;Ń Ń&#x152; НиŃ&#x2C6;Ń&#x152; Ń&#x192;Ń&#x201A;воŃ&#x20AC;МдониоП, Ń&#x2021;Ń&#x201A;Đž Ойа Ń ĐľŃ&#x20AC;воŃ&#x20AC;Đ° ĐąŃ&#x2039;Ни Đ˝Đ°Ń Ń&#x201A;Ń&#x20AC;ОонŃ&#x2039; на ĐźĐ°ĐşŃ Đ¸ĐźĐ°ĐťŃ&#x152;Đ˝Ń&#x192;Ń&#x17D; ĐżŃ&#x20AC;ОиСвОдиŃ&#x201A;оНŃ&#x152;Đ˝ĐžŃ Ń&#x201A;Ń&#x152;, Đ° ĐżŃ&#x20AC;иводоннŃ&#x2039;Đľ ĐˇĐ´ĐľŃ Ń&#x152; Ń&#x20AC;оСŃ&#x192;ĐťŃ&#x152;Ń&#x201A;Đ°Ń&#x201A;Ń&#x2039; Ń&#x201A;ĐľŃ Ń&#x201A;Ов â&#x20AC;&#x201C; ĐťŃ&#x192;Ń&#x2021;Ń&#x2C6;ио иС пОНŃ&#x192;Ń&#x2021;оннŃ&#x2039;Ń&#x2026;. MySQL: # InnoDB sync_binlog innodb_buffer_pool_size innodb_additional_mem_pool_size innodb_log_files_in_group innodb_log_file_size innodb_log_buffer_size innodb_flush_log_at_trx_commit

# ulimit -a 0 unlimited 0 unlimited unlimited unlimited unlimited 65535 8 unlimited 0 8192 unlimited unlimited unlimited unlimited

ĐŁŃ Ń&#x201A;анОвНоннОо Đ&#x;Đ&#x17E;: mysql> select version(); +---------------------+ | version() | +---------------------+ | 5.0.32-Debian_3-log | +---------------------+ 1 row in set (0.04 sec)

postgres=# select version(); version -------------------------------------------------------------------------------------------------------------PostgreSQL 8.1.8 on i486-pc-linux-gnu, compiled by GCC cc (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21) (1 row)

Đ&#x161; Ń ĐžĐśĐ°ĐťĐľĐ˝Đ¸Ń&#x17D;, Đ˝Đ°Ń Ń&#x201A;Ń&#x20AC;ОКки как MySQL, Ń&#x201A;Đ°Đş и PostgreSQL

â&#x201E;&#x2013;7, иŃ&#x17D;ĐťŃ&#x152; 2007

XVHUBLG XVHUBQDPH

# cat /proc/meminfo

core file size (blocks, -c) data seg size (kbytes, -d) max nice (-e) file size (blocks, -f) pending signals (-i) max locked memory (kbytes, -l) max memory size (kbytes, -m) open files (-n) pipe size (512 bytes, -p) POSIX message queues (bytes, -q) max rt priority (-r) stack size (kbytes, -s) cpu time (seconds, -t) max user processes (-u) virtual memory (kbytes, -v) file locks (-x)

)ULHQGV

8VHUV

# MyISAM key_buffer table_cache sort_buffer_size read_buffer_size read_rnd_buffer_size myisam_sort_buffer_size query_cache_size

= = = = = = =

= = = = = = =

0 2048M 64M 2 512M 8M 0

1024M 1024 16M 4M 4M 4M 16M

PostgreSQL: shared_buffers temp_buffers max_prepared_transactions work_mem maintenance_work_mem max_stack_depth max_fsm_pages max_fsm_relations max_files_per_process stats_start_collector stats_command_string stats_row_level autovacuum

= = = = = = = = = = = = =

500000 4000 0 128000 256000 8192 200000 10000 1000 on off on on

ĐĄŃ&#x2026;оПа Đ&#x2018;Đ&#x201D; ĐżŃ&#x20AC;ĐľĐ´Ń Ń&#x201A;авНона на Ń&#x20AC;Đ¸Ń Ń&#x192;нко. Đ&#x201D;ĐťŃ? PostgreSQL: CREATE TABLE users ( user_id bigint NOT NULL, user_name character varying(100) NOT NULL, CONSTRAINT users_pk PRIMARY KEY (user_id) ) WITHOUT OIDS; CREATE UNIQUE INDEX users_user_name_u ON users â&#x2020;ľ USING btree (user_name); CREATE TABLE friends (

39


администрирование user_id bigint NOT NULL, friend_id bigint NOT NULL, CONSTRAINT friends_pk PRIMARY KEY (user_id, friend_id), CONSTRAINT user_id_fk1 FOREIGN KEY (user_id) ↵ REFERENCES users (user_id), CONSTRAINT user_id_fk2 FOREIGN KEY (friend_id) ↵ REFERENCES users (user_id) ) WITHOUT OIDS; CREATE TABLE posts ( user_id bigint NOT NULL, post_id bigint NOT NULL, post_date bigint NOT NULL, post_title character varying(256) NOT NULL, post_body text, CONSTRAINT posts_pk PRIMARY KEY (user_id, posts_id), CONSTRAINT user_id_fk3 FOREIGN KEY (user_id) ↵ REFERENCES users (user_id) ) WITHOUT OIDS; CREATE TABLE comments ( user_id bigint NOT NULL, posts_id bigint NOT NULL, comments_id bigint NOT NULL, from_user_id bigint NOT NULL, comment_date bigint NOT NULL, comment_title character varying(256) NOT NULL, comment_body text, CONSTRAINT comments_pk PRIMARY KEY (user_id, ↵ posts_id, comments_id), CONSTRAINT user_posts_id_fk1 FOREIGN KEY (user_id, ↵ posts_id) REFERENCES posts (user_id, posts_id), CONSTRAINT from_user_id_fk2 FOREIGN KEY (user_id) ↵ REFERENCES users (user_id) ) WITHOUT OIDS;

Методика тестирования Распредение количества запросов на чтение и запись было выбрано в отношении 80% и 20% соответственно. После запуска на тестирование производилась выдержка в течение нескольких десятков секунд для стабилизации результатов. На каждую СУБД производилось пять тестов, результат усреднялся. Тестировались следующие запросы (в процентах от общего числа): n чтение френдленты (95%); n чтение постов и комментариев (5%); n запись постов и комментариев к ним (95%); n создание новых пользователей и изменение свойств уже существующих (5%). Эти четыре типа запросов дают практически полную эмуляцию работы блогосервиса. Для PostgreSQL запросы выглядят так: Чтение френдленты: SELECT user_id, MAX(posts_id) FROM posts WHERE user_id IN (SELECT friend_id FROM friends WHERE user_id = UserId) GROUP BY user_id;

Чтение постов и комментариев:

Для MySQL: DROP TABLE IF EXISTS users; CREATE TABLE users ( user_id int(10) NOT NULL auto_increment, user_name varchar(100) NOT NULL, PRIMARY KEY (user_id) ) ENGINE=InnoDB;

SELECT * FROM posts WHERE (posts_id = PostId); SELECT * FROM comments WHERE ((user_id = UserId) AND (posts_id = PostId)) ORDER BY comment_date;

DROP TABLE IF EXISTS friends; CREATE TABLE friends ( user_id int(10) NOT NULL, friend_id int(10) NOT NULL, PRIMARY KEY (user_id, friend_id) ) ENGINE=InnoDB;

Запись поста:

DROP TABLE IF EXISTS posts; CREATE TABLE posts ( user_id int(10) NOT NULL, post_id int(10) NOT NULL, post_date int(10) NOT NULL, post_title varchar(100) NOT NULL, post_body text NOT NULL, PRIMARY KEY (user_id, post_id) ) ENGINE=InnoDB;

SELECT NewComment(UserId, Date, Title, Body);

DROP TABLE IF EXISTS comments; CREATE TABLE post_cmt ( user_id int(10) NOT NULL, post_id int(10) NOT NULL, comment_id int(10) NOT NULL, from_user_id int(10) NOT NULL, comment_date int(10) NOT NULL, comment_title varchar(250) NOT NULL, comment_body text NOT NULL, PRIMARY KEY (user_id, post_id, comment_id) ) ENGINE=InnoDB;

Для тестов с ENGINE=MyISAM отличий в структуре БД нет. Все дампы схем доступны по адресу: http://www.reki.ru/ products/blogoservice.

40

SELECT NewPost(UserId, Date, Title, Body);

Запись комментария:

Создание пользователя: SELECT NewUser(UserName)

Редактирование свойств пользователя: SELECT ModifyUser(UserId, UserName);

Для MySQL: Запрос чтение ленты. Общий вид запроса следующий: SELECT user_id, MAX(posts_id) FROM posts WHERE user_id IN (SELECT friend_id FROM friends WHERE user_id = UserId) GROUP BY user_id;


администрирование Результаты тестирования СУБД MySQL и PostgreSQL в зависимости Для максимально оптимальной выборки от количества подключений необходимо на внутренний запрос подключить Количество коннектов MySQL InnoDB MySQL MyISAM PostgreSQL индекс по первичному ключу таблицы friends, в пуле (read/write per sec) (read/write per sec) (read/write per sec) а для внешнего запроса – первичный ключ по 1 600/60 500/20 4000/1500 таблице posts. 5 1100/110 600/50 12000/3000 Однако, поскольку MySQL всех версий 10 1100/110 600/50 14000/4000 не умеет адекватно оптимизировать внешний 11-17 800/70 400/30 14000/4000 запрос вне зависимости от созданных индексов и их явного указния через FORCE(key list), раз20 и более Отказ от обслуживания Отказ от обслуживания 14000/4000 биваем сложный запрос на два простых: в перВажно отметить, что не существует одинаковых архивом запросе получаем список пользователей, а во втором – тектурных решений для этих двух СУБД. В каждом слувыбираем посты. чае требуется индивидуальный подход как в проектироваUsersSet = SELECT friend_id FROM friends ↵ нии структуры базы данных, так и в реализации механиз WHERE user_id = UserId ма вставок и выборок данных. Именно поэтому в высоконагруженных проектах неи допустимо использование «универсальных» фреймворSELECT user_id, MAX(post_id) FROM posts ↵ ков для БД, поскольку ни один из них не учитывает архи WHERE user_id in (UsersSet) GROUP BY user_id тектуру проекта, в котором используется, а большинство Я не утверждаю, что MySQL 5 не умеет делать подза- их них не учитывает даже порядка использования индекпросы. Утверждается, что скорость работы двух простых сов в СУБД. Поговорим про оптимизацию кода. Разумеется, колизапросов выше скорости работы одного сложного ввиду специфических особенностей работы оптимизатора за- чество «служебных» запросов (проверок наличия или отсутствия пользователя, комментариев и т. п.) можно сокрапросов. тить, введя, например, users_id как хэшированное имя польЧтение постов и комментариев: зователя или разместив в памяти хэштаблицу ID и имен SELECT * пользователей. Однако здесь мы тестируем производиFROM posts тельность именно СУБД, а не всего программного компWHERE (posts_id = PostId); лекса в целом. SELECT * FROM comments WHERE ((user_id = UserId) AND (posts_id = PostId)) ORDER BY comment_date;

Запись поста: PostID = SELECT MAX(post_id) FROM posts; INSERT IGNORE INTO posts (user_id, post_id, post_date, ↵ post_title, post_body) VALUES (UserID, PostID, ↵ Date, Title, Body);

Запись комментария: SELECT COUNT(*) FROM users WHERE (user_id = iUserId); SELECT COUNT(*) FROM users WHERE (user_id = iPosterId); SELECT COUNT(*) FROM posts WHERE (post_id = iPostId); CommentId = SELECT MAX(comment_id) FROM commnets; ↵ INSERT IGNORE INTO comments (user_id, posts_id, ↵ comment_id, from_user_id, comment_date, ↵ comment_title, comment_body) ↵ VALUES (UserId, PostId, CommentId, PosterId, Date, ↵ Title, Body);</pre>

Создание пользователя: SELECT COUNT(1) FROM users WHERE user_name = UserName; INSERT INTO users(user_name) VALUES (UserName); GET_LAST_INSERT_ID

Редактирование свойств пользователя: SELECT COUNT(1) FROM users WHERE user_id = UserId; UPDATE users SET user_name = UserName ↵ WHERE user_id = UserId;

Как мы можем видеть, алгоритмы работы с БД оптимизированны как под MySQL, так и под PostgreSQL.

№7, июль 2007

Результаты Я сознательно не измерял время подключения к БД, а использовал пул заранее созданных подключений. На наш взгляд, отсутствие пула и постоянные переподключения к базе у высоконагруженного проекта – уже показатель его неправильной архитектуры.

Выводы Вся описанная в литературе хваленая производительность MySQL достигается только на примитивных запросах на чтение при отсутствии записи в таблицу. Как только требуется пересечь в выборке несколько таблиц, под нагрузкой на запись, MySQL проигрывает PostgreSQL в разы. Поэтому ниша MySQL – проекты, не требующие какойлибо ссылочной целостности и бизнес-логики внури базы данных и структурой, в которой возможны только простые выборки без сложных пересечений. Даже в проекте типа блогосервиса, MySQL в разы уступает в производительности PostgreSQL, а при достаточно большом количестве одновременных выборок (больше 20) происходит отказ от обслуживания. Разумеется, не существует «серебряной пули», которая могла бы убить любого зверя. В любом и каждом проекте следует тестировать применимость той или иной технологии и ни в коем случае нельзя при выборе СУБД полагаться на предыдущий «опыт» других разработчиков, ведь вполне может оказаться что их выбор – не более чем дань традиционному заблуждению. Удачи!

41


администрирование

OpenWRT – Linux для встраиваемых систем

Дмитрий Столяров Если вы сталкиваетесь с постоянными зависаниями, неудобством управления или нехваткой функционала вашего роутера, и именно поэтому он вам не нравится – возможно, стоит попробовать установить OpenWRT. 42


администрирование

O

penWRT – это дистрибутив ную для адресации большего объема ОП. для встраиваемых устройств, Предупреждение основанный на GNU/Linux. Обратите внимание, что вы несете всю от- Таким образом, становится возможной заИзначально OpenWRT был создан ветственность за любые потери, вызван- мена модулей памяти меньшего размера для Linksys WRT54G и подобных мо- ные применением на практике материа- (например, 8 Мб) на большие (например, 16 или 32 Мб). Историю успеха такой апделей, но со временем он включил ла этой статьи. паратной модернизации вы можете подподдержку многих других архитектур робнее изучить на русскоязычном форуме, от различных производителей. К са- Аппаратные доработки мым популярным моделям маршру- Многие маршрутизаторы обладают не- посвященном прошивкам для ASUS [9]. Затизаторов, на которых он использует- большим объемом памяти, при этом их ад- мечу, что такие эксперименты наиболее инся, относятся Linksys WRT54G и ASUS ресная шина имеет разрядность, достаточ- тересны любителям «олова и паяльника». WL-500g (см. «Поддерживаемые моТе к у щ а я с т а б и л ь н а я в е р с и я Если вы используете OpenWRT, дели маршрутизаторов»). Оборудование, на котором устанавливается OpenWRT – White Russian 0.9. Все у вас появится возможность настроOpenWRT, следует концепции SOC примеры будут приводиться именно ить VPN-сервер. Более того, вы сможете выбрать, какую именно VPN-ре(System-on-a‑chip), при которой все для этой версии. ализацию использовать: OpenVPN, компоненты компьютера интегрируPPTP или L2TP. Такой VPN-сервер буются в один чип. То есть фактичес- Мотивация дет на приемлемом уровне обслужики описываемые модели маршрути- к использованию заторов являются небольшими ком- Прежде всего надо понять, что, собс- вать 1‑2 клиентов, что является допьютерами. Далее везде под поняти- твенно, нужно. Если требуется марш- статочным для малых сетей (см. «Наями «маршрутизатор» и «роутер» бу- рутизатор, подключающийся к провай- стройка VPN-сервера с использовадут пониматься устройства именно та- деру и предоставляющий доступ не- нием PPTPD»). скольким компьютерам посредством кого класса. Появление OpenWRT стало воз- NAT, и он вполне стабильно работает, Случай третий: загрузка файлов можным благодаря тому, что многие OpenWRT – это не ваш случай. OpenWRT будет интересен, если вы Вы загружаете много больших файпроизводители роутеров в качестве базового программного обеспе- хотите добиться необычных результа- лов или часто пользуетесь пирингочения использовали свободное ПО, тов или если вам нужен специфичный выми сетями, но вам неудобно держать ваш компьютер включенным во что обязывало их опубликовывать функционал. время закачки. Такая задача разресобственные наработки на аналогичСлучай первый: несколько шима, если роутер имеет USB-порт. ных правах. К нему потребуется подключить flashПервое время единственным ин- VPN‑подключений терфейсом управления OpenWRT бы- Допустим, из домашней сети необ- накопитель, а затем с помощью таких ла командная строка (SSH/telnet), поз- ходимо часто подключаться к рабо- утилит, как wget или ctorrent (консольже появился веб-интерфейс (webif). чей, и вам не нравится постоянно ный BitTorrent-клиент), загружать файСейчас на замену webif пришел webif^2, включать/отключать VPN-соединение лы на накопитель. После этого, подключив flash-накоотдельно разрабатываемый в рамках на вашем компьютере. Или же вы хопроекта X-Wrt (см. «Установка веб-ин- тите, чтобы ваш роутер был подклю- питель к вашему компьютеру или сотерфейса»). Веб-интерфейс, как это чен к нескольким местам одновре- единившись с предварительно устачасто бывает, не дает доступа к уп- менно, например, к провайдеру (пос- новленным на маршрутизаторе FTPравлению всем имеющимся функцио- редством PPPoE), а также в вашу ра- сервером (см. «Настройка FTP-серналом, но зато более удобен для мно- бочую сеть (по протоколу PPTP) и к ва- вера»), вы получите доступ к загрушему коллеге, с которым вы играете женным файлам. Кроме flash-накогих конечных пользователей. Одна из ключевых особенностей в компьютерные игры (с использова- пителя может быть использован жесOpenWRT – использование файловой нием OpenVPN). Причем так, чтобы ткий диск, подключаемый также поссистемы, поддерживающей запись все это работало прозрачно, не тре- редством USB (однако для USB HDD, и специально созданной для flash-на- бовало сложной настройки при каж- скорее всего, понадобится внешнее копителей – JFFS2. Эта ФС учитывает дом подключении. Такая конфигура- питание). специфику перезаписи flash-памяти, ция реализуема на роутерах под управлением OpenWRT (см. «Настрой- Случай четвертый: небольшой относясь к ней гораздо бережнее. веб-сервер Ее наличие дало возможность ис- ка PPTP-клиента»). Вы хотите разместить в сети веб-сайт, пользования системы управления который не предназначен для большопакетами – ipkg (см. «Общие сведе- Случай второй: VPN-доступ го числа посетителей. Вы не хотите ния о работе в OpenWRT»). ipkg – это в вашу локальную сеть версия пакетного менеджера Debian Вы часто сталкиваетесь с необходи- для него приобретать хостинг или де(dpkg), адаптированная для исполь- мостью подключаться удаленно к се- ржать постоянно включенным шумязования во встраиваемых системах ти, в которой роль главного маршрути- щий компьютер. На маршрутизатор затора выполняет SOC-роутер. под управлением OpenWRT можно уси КПК.

№7, июль 2007

43


администрирование тановить веб-сервер (lighttpd), а также при необходимости настроить поддержку PHP.

Системные требования Для того чтобы запустить OpenWRT, в роутере должно быть установлено 2 Мб постоянной памяти и 8 Мб оперативной. Указанные требования по RAM являются теоретическим минимумом. Но на практике для запуска всех необходимых приложений потребуется не менее 16 Мб. Что касается постоянной памяти, она достаточно просто поддается расширению посредством подключения внешнего USB-накопителя (см. «Настройка поддержки USBносителя»).

Поддерживаемые модели маршрутизаторов Как сообщалось выше, наилучшей поддержкой сейчас обладают маршрутизаторы Linksys WRT54G и ASUS WL-500g, а также их ближайшие «соседи». Подробный список оборудования с указанием модели процессора, объема постоянной и оперативной памяти, количеством USB-портов и текущим уровнем поддержки в OpenWRT приведен на сайте разработчиков [1]. Во всех примерах будет использоваться модель ASUS WL-500g. В ее основе – микропроцессор Broadcom 4710, работающий на частоте 125 МГц. Она оснащена 4 Мб постоянной памяти и 16 Мб оперативной, имеет один порт USB версии 1.1.

Общие сведения о работе в OpenWRT Роль основных системных утилит в OpenWRT выполняет BusyBox (см. стр. 54-56 журнала).

n ipkg remove <имя_пакета|регулярное_выражение> – удаляет один или несколько пакетов;

n ipkg list – выводит на экран полный список пакетов; n ipkg list_installed – выводит на экран список установленных пакетов. У ipkg есть конфигурационный файл, который может содержать следующие инструкции: n src <имя> <http://url> – указывает репозитарии пакетов (список репозитариев можно найти на поисковом сайте пакетов ipkg [2]); n dest <имя> <путь> – указывает место установки пакетов. По умолчанию существует два места установки: постоянная и оперативная память. Именно благодаря этой возможности в случае недостатка постоянной памяти можно установить пакеты на USB-накопитель (подробнее на сайте разработчиков [3]). Доступ к системе в момент первой загрузки осуществляется по telnet (в качестве telnet-сервера используется реализация из BusyBox). После установки пароля и перезагрузки предоставляется командный интерфейс посредством протокола SSH. В роли SSH-сервера выступает легковесный dropbear [4]. Он поддерживает аутентификацию c использованием открытого ключа (аутентификацию по паролю можно запретить). Сервер не имеет конфигурационного файла, и все настройки передаются параметрами командной строки. Дополнительные утилиты для генерации ключа SSHсервера не нужны, dropbear обладает компонентом, реализующим эту задачу: $ ls -l /usr/bin/dropbearkey

$ ls -l /bin/rm lrwxrwxrwx

1 root

lrwxrwxrwx

root

1 root

root

16 Feb 3 18:49 /usr/bin/dropbearkey -> ../sbin/dropbear

7 Feb 3 18:49 /bin/rm -> busybox

$ busybox

Следующей командой можно сгенерировать ключ RSA длиной 1024 байта, записываемый в файл /tmp/tmpkey:

BusyBox v1.00 (2007.01.30-11:42+0000) multi-call binary

$ /usr/bin/dropbearkey -t rsa -f /tmp/tmpkey -s 1024

В качестве основного shell по умолчанию в OpenWRT используется ash из BusyBox: $ echo $SHELL /bin/ash

В системе присутствуют скрипты инициализации. Они расположены в директории /etc/init.d/ и являются обычными shell-скриптами. Важным компонентом системы является пакетный менеджер ipkg. Он очень прост в использовании, быстро работает и обладает достаточным функционалом. Рассмотрим основные его функции: n ipkg update – обновляет список пакетов (загружая его из источников, указанных в конфигурационном файле); n ipkg upgrade – обновляет все установленные пакеты; n ipkg install <имя_пакета> – устанавливает пакет (в качестве параметра может принимать имя пакета, а также путь или HTTP URL, указывающий на файл пакета);

44

Как уже сообщалось, существуют и другие интерфейсы управления, доступные через Web: стандартно имеющийся в системе (webif) и от проекта X-Wrt (webif^2). X-Wrt – вебинтерфейс и набор расширений к OpenWRT, увеличивающий простоту и удобство управления. Текущая стабильная версия – webif^2 (0.3-8), именно она и будет использована в примерах. В OpenWRT по умолчанию используется целых три файловых системы: JFFS2, SquashFS и mini_fo. SquashFS – это ФС только для чтения со сжатием. В ней хранится «базовый образ» системы, он монтируется в /rom. В JFFS2 хранятся все изменяемые данные, расположенные на FLASH маршрутизатора, они монтируются в /jffs. При изменении файл копируется с SquashFS на JFFS2, имеющую возможность записи, и уже там изменяется. После этого всегда используется версия файла c JFFS2. Такую возможность прозрачно реализует ФС mini_fo, она примонтирована в /.


администрирование Выглядит это следующим образом: # mount /dev/root on /mnt/rom type squashfs (ro) /dev/mtdblock/4 on /mnt/jffs type jffs2 (rw) /jffs on / type mini_fo (rw)

Процесс прошивки OpenWRT в маршрутизатор Общепринятым и наиболее универсальным способом начальной установки является инсталляция посредством tftp (легковесный FTP, работающий поверх UDP, а не TCP). Загрузчик рассматриваемого устройства создан таким образом, что может принять образ прошивки по tftp и записать его на встроенную flash-память. Для проведения этой операции потребуется клиент tftp. Для установки выберем минимальный образ системы, который можно скачать по адресу: http://downloads.openwrt.org/ whiterussian/0.9/micro. Названия файлов в этой директории формируются следующим образом: openwrt-<модель|архитектура><версия_ядра>-squashfs.<bin|trx>. Для используемой модели маршрутизатора нужен образ openwrt-brcm-2.4squashfs.trx. Информация об особенностях выбора и инсталляции версии OpenWRT именно для различных роутеров опубликована на странице документации сайта разработчиков [5]. Настройк у локального адреса маршру тизатора на 192.168.1.1 можно осуществить через стандартный вебинтерфейс. Для того чтобы перевести ASUS WL-500g в режим инсталляции по tftp, необходимо отключить провод питания, зажать кнопку «restore», подключить кабель питания и отпустить кнопку. Характерным признаком того, что роутер ожидает tftp-подключения, будет мигающий индикатор «PWR». Запуск клиента tftp и установка новой прошивки: $ tftp 192.168.1.1 tftp> get ASUSSPACELINK\x01\x01\xa8\xc0 /dev/null tftp> binary tftp> put openwrt.trx ASUSSPACELINK tftp> quit

Строка «\x01\x01\xa8\xc0» – не что иное, как 1.1.168.192, записанное в шестнадцатеричной системе счисления. В случае Linksys-процесс будет выглядеть следующим образом:

Далее необходимо подключиться к маршрутизатору по telnet, изменить пароль пользователя root, отключить запуск telnetd и установить имя маршрутизатора: # telnet 192.168.1.1 root@OpenWrt # passwd root@OpenWrt # nvram set telnet_enable=0 root@OpenWrt # nvram set wan_hostname=router root@OpenWrt # nvram commit root@OpenWrt # reboot

В этом примере используется утилита nvram. Она позволяет управлять практически всеми конфигурационными параметрами. Последние сохраняются в специальную область постоянной памяти. Рассмотрим ее основные возможности: n nvram set <имя_параметра>=<значение_параметра> – установить значение параметра; n nvram get <имя_параметра> – получить значение параметра; n nvram unset <имя_параметра> – удалить параметр; n nvram show – вывести полный список параметров и их значений; n nvram commit – записать параметры в постоянную память (количество циклов перезаписи ограничено, не делайте это слишком часто). Теперь, для того чтобы подключиться к маршрутизатору, необходимо использовать SSH: $ ssh 192.168.1.1 -l root Password: root@router:~#

Добро пожаловать в мир OpenWRT! Рассмотрим самый простой случай настройки Интернета на маршрутизаторе: # # # # # #

nvram set lan_proto=static nvram set lan_ipaddr=192.168.2.2 nvram set lan_gateway=192.168.2.1 nvram set lan_dns=192.168.2.1 nvram commit ifup lan

Таким образом, для внутреннего интерфейса LAN-роутера установлены: способ настройки – статический адрес, IP-адрес – 192.168.2.2, шлюз по умолчанию – 192.168.2.1,

$ tftp 192.168.1.1 tftp> rexmt 1 tftp> ntrace tftp> binary tftp> put openwrt.bin tftp> quit

Кроме возможности установки через TFTP, для многих маршрутизаторов существует и другой способ первоначальной инсталляции: через штатный веб-интерфейс. Для маршрутизаторов ASUS также есть специальное программное обеспечение, работающее под управлением ОС Windows, позволяющее осуществлять прошивку и восстанавливать ее в случае повреждения содержимого.

№7, июль 2007

Рисунок 1. Внутреннее устройство сетевых соединений SOC-маршрутизатора

45


администрирование

Рисунок 2. Внутреннее сетевое устройство роутера на примере ASUS WL500-g Premium

DNS-сервер – 192.168.2.1. Стоит обратить внимание на то, что на данном этапе маршрутизатор имеет доступ в Интернет через LAN-порт. Такая настройка удобна на стадии конфигурации. Команда ifup заново инициализирует группу интерфейсов (в данном случае имя группы lan). Чтобы указать для WAN-порта статический IP-адрес, нужно у названий параметров изменить префикс с lan на wan (например: wan_proto=static). Теперь можно обновить список пакетов из Интернета и установить более функциональную версию ipkg (по умолчанию установлен shell-скрипт): # ipkg update # ipkg install ipkg

Специфика сетевых соединений Рассмотрим несколько подробнее внутреннее устройство сетевых соединений SOC-маршрутизатора. Как видно на схеме (рис. 1), внутри устройства находится 5-портовый коммутатор. Модуль Wi-Fi подключен посредством MINI‑PCI, и OpenWRT видит его как одно из обычных Ethernet-соединений. Таким образом, внешние виды соединений в OpenWRT проецируются следующим образом: n Порты, помеченные как LAN на маршрутизаторе, доступны через eth0. n Порт, помеченный как WAN на маршрутизаторе, доступен через eth1. n Доступ к беспроводному соединению осуществляется через eth2. Для того чтобы клиенты, подключенные локально в Ethernet-порты и через беспроводное соединение, имели доступ друг к другу, из соединений eth0 и eth2 собран Ethernet-мост, обеспечивающий между ними прозрачную передачу данных на канальном уровне. Для рассматриваемого роутера настройки будут выглядеть так: wan_ifname=eth1 lan_ifname=br0 lan_ifnames="eth0 eth2"

46

Рассмотренная схема является достаточно простой, однако маршрутизаторы, обладающие большей функциональностью, обычно устроены несколько сложнее. Рассмотрим внутреннее сетевое устройство роутера на примере ASUS WL500-g Premium (см. рис. 2). Вместо 5-портового коммутатора на плату установлен 6‑портовый управляемый коммутатор. Один из двух Ethernet-портов, реализованных внутри CPU, не используется. Таким образом, OpenWRT использует два Ethernetпорта. На управляемом коммутаторе сконфигурировано две виртуальных сети (VLAN). В первый VLAN (номер 0) входят все порты кроме 0. Ко второму VLAN, имеющему идентификационный номер 1, отнесены порт 0 без тегирования и порт 5 с тегированием. В OpenWRT включена поддержка и добавлены два VLAN – с номерами 0 и 1 соответственно. Таким образом, внешние виды соединений в OpenWRT для более сложного устройства можно описать следующим образом: n Порты, помеченные как LAN на маршрутизаторе, доступны через vlan0. n Порт, помеченный как WAN на маршрутизаторе, доступен через vlan1. n Доступ к беспроводному соединению осуществляется через eth2. При такой конфигурации настройки VLAN в OpenWRT будут выглядеть следующим образом: vlan0hwname=eth0 vlan0ports="1 2 3 4 5*" vlan1hwname=eth0 vlan1ports="0 5*"

Внешний Ethernet-интерфейс (WAN) будет иметь следующие настройки: wan_ifname=vlan1

Локальный интерфейс будет сконфигурирован как мост из двух других соединений: lan_ifname=br0 lan_ifnames="vlan0 eth2"

Настройка поддержки USB-носителя USB flash-накопитель может понадобиться в совершенно разных ситуациях. На нем можно хранить файлы, осуществляя доступ к ним посредством FTP-сервера, установленного на маршрутизаторе, и многое другое. На этом шаге у маршрутизатора уже настроен доступ к Интернету. В зависимости от типа USB, которым обладает маршрутизатор, возможны следующие варианты: UHCI USB 1.1: # ipkg install kmod-usb-uhci # insmod usbcore # insmod uhci


администрирование OHCI USB 1.1:

Их инсталляция через ipkg осуществляется так:

# ipkg install kmod-usb-ohci # insmod usbcore # insmod usb-ohci

# ipkg install swap-utils

USB 2.0: # ipkg install kmod-usb2 # insmod usbcore # insmod ehci-hcd

Создание swap в первом разделе уже подключенного и настроенного USB-накопителя: # mkswap /dev/scsi/host0/bus0/target0/lun0/part1

Настройка автоматической активации swap: Не подошедшие модули ядра рекомендуется удалить следующим образом: # ipkg remove <имя_пакета>

Также понадобится модуль ядра, отвечающий за поддержку USB-накопителей: # # # #

ipkg install kmod-usb-storage insmod scsi_mod insmod sd_mod insmod usb-storage

# echo -e "#!/bin/sh\nswapon ↵ /dev/scsi/host0/bus0/target0/lun0/part1\n" > ↵ /etc/init.d/S20swap # chmod +x /etc/init.d/S20swap

После перезагрузки маршрутизатора можно проверять состояние swap: # free total Mem: Swap: Total:

used 14308 31336 45644

free 10696 0 10696

shared 3612 31336 34948

buffers 0

668

Модуль usb-storage зависит от scsi_mod и sd_mod (они установлены в системе по умолчанию), поэтому сначала надо загрузить их. Перенос корня на USB-накопитель При установке модулей ядра ipkg создает файлы в ди- Так как используемый роутер имеет всего 4 Мб flash-памяректории /etc/modules.d, поэтому после перезагрузки они ти, целесообразно использование внешнего USB-накопибудут подгружаться автоматически. теля в качестве корневого устройства. Если вы не собираКроме того, может понадобиться поддержка некоторых етесь устанавливать большое количество пакетов или в вафайловых систем, таких, как vfat, ext2, ext3. Рассмотрим шем маршрутизаторе установлен достаточный объем папример подключения поддержки ФС ext2: мяти, пропустите этот шаг. Создадим файловую систему ext2 на втором разделе # ipkg install kmod-ext2 USB-накопителя, куда будет производиться перенос. При# insmod ext2 монтируем ее к /tmp и скопируем со встроенной flash-паДля управления таблицей разделов можно установить мяти данные: fdisk: # ipkg install fdisk

Если же существует необходимость в работе с ФС ext2/ext3 прямо с маршрутизатора, можно установить e2fsprogs. Этот набор утилит отсутствует в репозиториях, настроенных в системе по умолчанию, так что в конфигурационный файл ipkg надо добавить дополнительное хранилище пакетов: # echo "src kamikaze-backports ↵ http://downloads.openwrt.org/backports/rc5/" >> ↵ /etc/ipkg.conf # ipkg update # ipkg install e2fsprogs

Теперь маршрутизатор обладает полной поддержкой USB-накопителей, может менять на них таблицу разделов, создавать файловые системы.

Настройка swap на USB-накопителе Не буду вдаваться в подробности разбивки диска с использованием fdisk – лишь замечу, что раздел, который будет использоваться для swap, станет первым на диске. В OpenWRT по умолчанию не установлены утилиты управления swap.

№7, июль 2007

# # # # # # # #

mkfs.ext2 /dev/scsi/host0/bus0/target0/lun0/part2 ln -s /proc/mounts /etc/mtab mount /dev/scsi/host0/bus0/target0/lun0/part2 /mnt mkdir /tmp/root mount -o bind / /tmp/root cp /tmp/root/* /mnt -a umount /tmp/root umount /mnt

Следующим шагом необходимо заменить init. Существующий /sbin/init является символической ссылкой, указывающей на BusyBox – его можно смело удалять: # rm /sbin/init

На месте стандартного init разместим shell-скрипт, подгружающий необходимые модули (поддержки USB и нужной ФС) и изменяющий корневой каталог. Создадим файл /sbin/init следующего содержания: #!/bin/sh for module in usbcore usb-ohci scsi_mod sd_mod ↵ usb-storage ext2; do { insmod $module }; done sleep 5s mount /dev/scsi/host0/bus0/target0/lun0/part2 /mnt [ -x /mnt/sbin/init ] && { mount -o move /proc /mnt/proc && \

47


администрирование матически, и все необходимые пакеты будут установлены. Через несколько минут вы сможете обратиться к вашему роутеру по протоколу HTTP. Логин и пароль – системные, то есть те же, что используются для доступа по SSH. Ин} терфейс интуитивно понятен и прост в освоении, поэтому никаких примеров его использования приведено не будет. exec /bin/busybox init X-Wrt предоставляет доступ ко всем настройкам (благодаДобавим права на запуск: ря наличию возможности прямого редактирования nvram и файлов), но работает не так быстро, как SSH. Стандарт# chmod +x /sbin/init ную же конфигурацию достаточно приятно проводить через него (рис. 3). После перезапуска системы картина выглядит следуОдной из приятных особенностей X-Wrt является то, что не требуется перезагрузка роутера после изменения тех ющим образом: или иных настроек, как это происходит в стандартных про# mount шивках. Более того, сначала необходимые изменения собираются в «корзину», а потом разом подтверждается все /dev/root on /mnt/rom type squashfs (ro) /dev/mtdblock/4 on /mnt/jffs type jffs2 (rw) (это уменьшает количество перезаписываний nvram). /jffs on /mnt type mini_fo (rw) Используемый в рассматриваемой версии X-Wrt webif^2 /dev/scsi/host0/bus0/target0/lun0/part2 on / type ext2 (rw) находится на стадии разработки, но достаточно стабилен, # df -h хотя некоторые проблемы (случайные сообщения об ошибFilesystem Size Used Available Use% Mounted on ках, пропадающие так же неожиданно, как и появляющие/dev/root 832.0k 832.0k 0 100% /mnt/rom /dev/mtdblock/4 2.4M 840.0k 1.6M 35% /mnt/jffs ся) периодически возникают. Также он не всегда коррект/jffs 832.0k 832.0k 0 100% /mnt /dev/scsi/host0/bus0/target0/lun0/part2 89.7M 3.5M 81.6M 4% / но осуществляет настройку тех или иных служб. Замечу, что основная аудитория OpenWRT – это продвиТаким образом, теперь маршрутизатор имеет 90 Мб па- нутые пользователи или администраторы ОС GNU/Linux, комяти для установки пакетов вместо 4 Мб. торым гораздо ближе и удобнее командная строка. pivot_root /mnt /mnt/mnt && { mount -o move /mnt/dev /dev mount -o move /mnt/tmp /tmp mount -o move /mnt/jffs2 /jffs2 2>&mount -o move /mnt/sys /sys 2>&}

Установка веб-интерфейса

Настройка PPPoE-клиента

Рассмотрим упомянутую возможность установки веб‑интерфейса для управления OpenWRT. Стоит помнить, что на практике он приносит не очень много пользы и может быть использован лишь для базовой конфигурации. В репозиториях, настроенных по умолчанию, актуальной версии X-Wrt нет. Для ее установки необходимо выполнить следующую команду:

Все достаточно просто и очевидно. Для PPPoE-подключения необходимо установить модуль к ядру, модуль к pppd, реализующий pppoe, и сам pppd. Все как в обычном Linux:

# ipkg install ↵ http://ftp.berlios.de/pub/xwrt/webif_latest_stable.ipk

Далее установка будет произведена полностью авто-

Рисунок 3. Веб-интерфейс для управления OpenWRT

48

# ipkg install kmod-pppoe # ipkg install ppp # ipkg install ppp-mod-pppoe

Далее приведу список параметров, хранящихся в nvram и отвечающих за конфигурацию PPPoE: n ppp_username=<имя_пользователя> – устанавливает имя пользователя; n ppp_passwd=<пароль> – устанавливает пароль; n ppp_redialperiod=15 – указывает задержку между попытками повторного подключения (в случае разрыва соединения или других ошибок); n ppp_demand=<timeout> – если установлено, то PPPoE включается только по необходимости и отключается, если время простоя превышает значение, указанное переменной timeout (в секундах); n ppp_mtu= – значение mtu для PPPoE-соединения, по умолчанию используется 1492; n wan_proto=pppoe – обязательно должно быть установлено именно такое значение, иначе скрипты автоматической инициализации не будут работать. Указывает тип подключения внешнего порта (может быть: none, static, dhcp, pppoe, pptp, ...). Настройкой интерфейса, а точнее, запуском pppd с необходимыми параметрами занимается shell-скрипт /sbin/ ifup.pppoe. Он выбирает параметры из nvram (посредством


администрирование nvram get) и согласно им запускает pppd. Без перезагрузки (вручную) запускать и останавливать PPPoE можно с помощью следующих команд: # ifup.pppoe wan # ifdown wan

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

Настройка PPTP-клиента Первым делом необходимо установить модули ядра и PPTPклиент. # ipkg install kmod-gre # ipkg install kmod-mppe # ipkg install pptp

Для конфигурации конкретного соединения можно либо воспользоваться веб-интерфейсом, либо произвести следующие действия: # # # #

echo 'somepear vpn.foo.bar someuser' >> ↵ /etc/ppp/pears.pptp echo 'someuser pptp:somepear somepass *' >> ↵ /etc/ppp/chap-secrets /etc/init.d/S90pptp start somepear /etc/init.d/S90pptp stop somepear

В этом примере: n somepear – название точки доступа; n vpn.foo.bar – адрес PPTP-сервера; n someuser – имя пользователя; n somepass – пароль пользователя. Для того чтобы установить дополнительные правила маршрутизации или брандмауэра, можно воспользоваться скриптами pppd ip-up и ip-down. Рассмотрим следующий пример: # cat > /etc/ppp/ip-up.d/somepear #!/bin/sh interface_name=$1 remote_ip=$4 ipparam=$5 if [ "${ipparam}" = "pptp:somepear" ]; then /sbin/route add -net 10.0.0.0 netmask 255.255.248.0 ↵ gw $remote_ip dev $interface_name fi

В этом примере добавляется маршрут к сети 10.0.0.0/21 через IP-адрес удаленной стороны туннеля.

Настройка беспроводного интерфейса Большинство маршрутизаторов, на которых может быть установлен OpenWRT, относятся к классу беспроводных, то есть имеют адаптер Wi-Fi. Рассмотрим несколько подробней основные параметры беспроводного интерфейса: n wl0_mode <ap|sta|wet> – режим работы точки Wi-Fi. Значение ap означает режим «точка доступа», sta – режим «клиента беспроводной маршрутизации», wet – режим «беспроводного моста». n wl0_ssid <essid> – идентификатор беспроводной сети (ESSID).

№7, июль 2007

n wl0_infra <0|1> – инфраструктурный режим сети. Значение 0 – специальный (одноранговый) режим (Ad Hoc mode), 1 – обычный режим. n wl0_closed <0|1> – вещание ESSID. При установленном значении 1 идентификатор сети не распространяется. n wl0_channel <канал> – номер канала передачи (число от 1 до 11 и более, в зависимости от беспроводного адаптера, установленного в маршрутизаторе). n wl0_macmode <disabled|allow|deny> – управление фильтрацией по MAC-адресу. При значении ключа disabled фильтрация отключена, при allow – перечисленным в списке адресам предоставляется доступ, при deny – запрещается. n wl0_maclist [MAC [MAC]] – список MAC-адресов. Адреса пишутся через пробел в следующем формате: 01:23:45:67:78:9A. Рассмотрим пример конфигурации, настроив Wi-Fi следующим образом: nvram nvram nvram nvram nvram nvram

set wl0_mode=ap set wl0_ssid=some_essid set wl0_infra=1 set wl0_channel=4 set wl0_macmode=disabled commit

При такой настройке маршрутизатор будет выполнять роль точки доступа Wi-Fi, идентификатор сети будет some_essid, работать беспроводная сеть будет на четвертом канале, а подключиться сможет любой совместимый клиент. Более подробно об этих и многих других опциях вы сможете узнать на сайте дистрибутива OpenWRT [6].

Настройка DHCP-сервера В роли DHCP-сервера в OpenWRT в основном используется Dnsmasq – легковесный DHCP-север и DNS-прокси. По умолчанию в OpenWRT все настройки DHCP расположены в nvram, а скрипт запуска получает их оттуда и передает как аргументы dnsmasq. Такой способ управления не очень удобен, да и сложившиеся тенденции (в первом выпуске Kamikaze, новой версии OpenWRT, отказались от nvram) ведут к отказу от использования nvram. Именно поэтому рассмотрим вариант конфигурации с использованием обычных файлов. Первое, что необходимо сделать – заменить скрипт инициализации /etc/init.d/S60dnsmasq на следующий (связано это с отказом от nvram): #!/bin/sh [ ! -f /tmp/dhcp.lease ] && { touch /tmp/dhcp.lease } dnsmasq -C /etc/dnsmasq.conf

Рассмотрим наиболее важные опции конфигурации dnsmasq (/etc/dnsmasq.conf): n bogus-priv – на запросы обратного преобразования, не разрешенные локально (средствами lease файла или /etc/hosts), отвечать сообщением об отсутствии такого имени.

49


администрирование n dhcp-range=192.168.1.5,192.168.1.200,255.255.255.0, 192.168.1.255,12h – устанавливает диапазон выдаваемых IP и время, на которое производится аренда. Формат записи следующий: адрес начала диапазона, адрес конца диапазона, маска сети, широковещательный адрес, время аренды. n read-ethers – использовать файл /etc/ethers, в котором в формате «MAC-адрес IP-адрес» статически описаны настройки узлов. n dhcp-option=3,192.168.1.1 – опция указывает шлюз по умолчанию. Формат этой записи следующий: номер опции dhcp, IP-адрес. n dhcp-option=6,192.168.1.1 – опция указывает адрес DNS‑сервера. С более подробной информацией можно ознакомиться на сайте производителя [7].

Настройка брандмауэра iptables В OpenWRT по умолчанию отсутствуют такие утилиты, как iptables-save и iptables-restore, и, как следствие, достаточно неудобно распределены конфигурационные файлы. После установки правила брандмауэра описаны в нескольких местах: /etc/config/firewall, /etc/firewall.user, /etc/init.d/S35firewall. С другой стороны, перестройка под себя скриптов инициализации и конфигурационных фалов брандмауэра тоже вызывает сложности, если вы хотите, чтобы управление «пробросом портов» из веб-интерфейса продолжало работать. Если vы решили использовать утилиты iptables-save и iptables‑restore, сначала нужно выполнить следующую команду:

Таблица брандмауэра filter, правила, распределяющие входящий трафик по разным цепочкам, разрешающие локальный трафик и ICMP: -A -A -A -A -A -A -A -A

INPUT -j input_rule INPUT -i $WAN -j input_wan INPUT -j LAN_ACCEPT INPUT -p icmp -j ACCEPT INPUT -p tcp -j REJECT --reject-with tcp-reset INPUT -j REJECT --reject-with icmp-port-unreachable LAN_ACCEPT -i $LAN -j RETURN LAN_ACCEPT -j ACCEPT

Таблица брандмауэра filter, правила, распределяющие исходящий трафик по разным цепочкам: -A -A -A -A -A -A

OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT

-m -m -j -j -p -j

state --state INVALID -j DROP state --state RELATED,ESTABLISHED -j ACCEPT output_rule ACCEPT tcp -j REJECT --reject-with tcp-reset REJECT --reject-with icmp-port-unreachable

Таблица брандмауэра filter, правила, распределяющие проходящий трафик: -A -A -A -A -A -A -A

FORWARD -m state --state INVALID -j DROP FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN ↵ -j TCPMSS --clamp-mss-to-pmtu FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT FORWARD -j forwarding_rule FORWARD -i $WAN -j forwarding_wan FORWARD -i br0 -o br0 -j ACCEPT FORWARD -i $LAN -o $WAN -j ACCEPT

Добавлять собственные правила необходимо в файл /etc/firewall.user. Правила, добавленные через веб-интерфейс, хранятся в файле /etc/config/firewall. В примерах $WAN означает внешний порт, а $LAN – внутренний. Под портом может пониматься группа из несколько портов и интерфейсов. Смотрите раздел «Специфика сетевых соединений».

# ipkg install iptables-utils

Рассмотрим стандартные правила брандмауэра подробнее:

Настройка VPN-сервера с использованием PPTPD

Демон PoPToP портирован под OpenWRT и достаточно хорошо работает. Разумеется, CPU, который установлен # iptables-save на маршрутизаторе, не сможет справиться с многомегабитным VPN-трафиком и с большим количеством одновреТаблица брандмауэра nat, правила, отвечающие за ог- менных подключений. Однако задачу предоставления более или менее караничение открытия новых TCP-соединений (не более 50 в секунду): чественного доступа нескольким пользователям успешно решается такой конфигурацией. Установка производится -A NEW -m limit --limit 50/sec --limit-burst 100 -j RETURN следующим образом: -A NEW -j DROP -A PREROUTING -m state --state NEW -j NEW

Таблица брандмауэра nat, правило, реализующее механизм NAT: -A POSTROUTING -o $WAN -j MASQUERADE

Таблица брандмауэра filter, правила, блокирующие некорректные пакеты: -A INPUT -m state --state INVALID -j DROP -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp ! --tcp-option 2 ↵ --tcp-flags SYN SYN -j DROP

50

# ipkg install pptpd

Допустим, необходимо предоставлять доступ в сеть нескольким пользователям. Пользователи должны видеть друг друга, а также все компьютеры, находящиеся в локальной сети. Маршрутизатор является «центральным», и через него проходит весь трафик. Рассмотрим процесс конфигурации такой системы. /etc/ppp/options.pptpd – конфигурационный файл pppd, в нем описывается множество параметров ppp. Среди них: допустимые способы аутентификации, методы шифрования данных, адрес VPN-сервера для VPN-клиентов и мно-


администрирование гое другое. Здесь необходимо указать адрес VPN-сервера таким же, что и его основной локальный IP (по умолчанию – 192.168.1.1). Шифрование можно отключить, заменив строку: mppe required,no40,no56,stateless

на следующую: nomppe

Для того чтобы клиенты, непосредственно подключенные (по Ethernet) к маршрутизатору (будем называть их локальными), имели связь с VPN-клиентами и наоборот, существует два способа. Первый способ: разделить клиентов по разным сетям и сделать между ними маршрутизацию. Но тут возникает проблема: если для локальных клиентов маршрутизатор является шлюзом по умолчанию, то для VPN-клиентов это неприемлемо, а значит, потребуется указывать дополнительный маршрут в сеть, в которой находятся локальные клиенты. Указание дополнительных маршрутов невозможно со стороны сервера, поэтому нужна настройка со стороны пользователя. Второй способ: использовать технологию proxyarp. В этом случае маршрутизатор на ARP-запрос разрешения IP‑адреса VPN-клиента, переданный локальным клиентом, будет отвечать MAC-адресом LAN-порта. Таким образом, ни для локальных, ни для внешних клиентов не требуется дополнительная маршрутизация. Проксирование протокола ARP включается следующим образом: echo "proxyarp" >> /etc/ppp/options.pptpd

/etc/ppp/chap-secrets – файл паролей, в нем в стандартном формате хранятся записи пользователей. Предварительно узнав, каково значение параметра name в options.pptpd, добавим пользователя с именем testuser, паролем testpass и IP-адресом 192.168.1.201 (для того чтобы не возникало конфликтов с IP-адресами локальных компьютеров, необходимо переконфигурировать DHCP‑сервер, ограничив диапазон выдаваемых адресов):

iptables iptables

-A output_rule -j ACCEPT -A input_rule -j ACCEPT

-p 47 ↵ -p 47 ↵

Для того чтобы работала передача трафика между локальной сетью и виртуальными клиентами ($WAN – имя вашего внешнего интерфейса, например: eth1 или ppp0) добавим правила: iptables -A forwarding_rule -s -d 192.168.1.0/24 -j ACCEPT iptables -A output_rule -o -d 192.168.1.0/24 -j ACCEPT iptables -A input_rule -i -d 192.168.1.0/24 -j ACCEPT iptables -A forwarding_rule -i

192.168.1.0/24 ↵ ppp+ -s 192.168.1.0/24 ↵ ppp+ -s 192.168.1.0/24 ↵ ppp+ -o $WAN -j ACCEPT

Добавление этих правил лучше всего осуществлять с использованием /etc/firewall.user. Запуск и останов производится посредством скрипта инициализации следующим образом: # /etc/init.d/S50pptpd start # /etc/init.d/S50pptpd stop

Теперь, подключившись к маршрутизатору по VPN, можно из любой точки мира работать с компьютерами локальной сети.

Настройка FTP-сервера В роли FTP-сервера под управлением OpenWRT может быть использован vsftpd. Установить его можно следующим образом: # ipkg install vsftpd

Для настройки отредактируем конфигурационный файл /etc/vsftpd.conf: background=YES listen=YES write_enable=YES local_umask=022 check_shell=NO local_enable=YES chroot_local_user=YES anonymous_enable=NO session_support=NO userlist_enable=YES userlist_deny=YES userlist_file=/etc/vsftpd.users

# cat /etc/ppp/options.pptpd | grep ^name name "pptp-server"

# echo "testuser pptp-server testpass 192.168.1.201" >> ↵ /etc/ppp/chap-secrets

Также существует файл /etc/pptpd.conf, содержащий основные параметры PoPToP, значения по умолчанию устроят большинство пользователей. Кроме того, понадобится настройка брандмауэра, необходимо добавить следующие правила: iptables -t nat -A --dport 1723 iptables -A --dport 1723

№7, июль 2007

prerouting_rule -i $WAN -p tcp ↵ -j ACCEPT input_rule -i $WAN -p tcp ↵ -j ACCEPT

При такой конфигурации будут использоваться системные учетные записи пользователей, но при этом них будет разрешена аутентификация только тем пользователям, имена которых перечислены в файле /etc/vsftpd.users. Сразу после аутентификации будет происходить смена корня процесса (chroot) в домашнюю директорию пользователя. Поддержка сессий аутентификации (PAM и wtmp) отключена за ненадобностью. Следующим шагом добавим одного пользователя, разрешим ему пользоваться FTP и установим для него пароль: # echo "users:x:100:" >> /etc/group

51


администрирование # # # #

echo "someuser:*:2000:100:simple ↵ user:/data:/bin/false" >> /etc/passwd echo "someuser" >> /etc/vsftpd.users mkdir /data && chown someuser:users /data passwd someuser

Настроим правила брандмауэра, добавив следующие строки в файл /etc/firewall.user: iptables -t nat -A prerouting_rule -i $WAN -p tcp ↵ --dport 21 -j ACCEPT iptables -A input_rule -i $WAN -p tcp ↵ --dport 21 -j ACCEPT

Настроим автоматическую загрузку: # mv /etc/init.d/vsftpd /etc/init.d/S65vsftpd

Ручной запуск и останов vsftpd проще всего производить командами: # vsftpd # killall vsftpd

Таким образом, после перезагрузки на маршрутизаторе будет функционировать полностью настроенный FTP‑сервер.

Настройка отправки почты Для отправки почты с маршрутизатора удобнее всего использовать SSMTP. Для его установки необходимо выполнить следующее: # ipkg install ssmtp

После установки необходимо исправить конфигурационный файл /etc/ssmtp/ssmtp.conf и указать в нем почтовый сервер (на нем должна быть разрешена пересылка почты, полученной неавторизованным SMTP для вашего IP, или вы сможете отправлять письма только в рамках одного сервера):

Имя пользователя и пароль для SMTP-аутентификации можно указывать в командной строке посредством флагов -auusername и -appassword соответственно. Такая отправка писем обычно используется для различных уведомлений, лог-файлов и другого.

Настройка cron OpenWRT по умолчанию идет в поставке с работающим демоном cron (часть BusyBox). Для его активации необходимо выполнить лишь действие: # nvram set cron_enable=1 && nvram commit # /etc/init.d/S60cron start

Теперь в качестве примера настроим синхронизацию с сервером времени, которая будет происходить каждый час. Для этого нам понадобится сначала установить ntpclient: # ipkg install ntpclient

Настройка cron для ежечасной синхронизации, выполняемой от имени пользователя root, будет выглядеть так: echo "0 * * * * /usr/sbin/ntpclient ↵ -h europe.pool.ntp.org -s" >> /etc/crontabs/root

Второй способ управления crontab – вызов программы /usr/bin/crontab (BusyBox) с параметром -e.

Другие возможные применения Стоит учитывать, что в статье описаны далеко не все возможности применения OpenWRT. Так например, существуют возможности скачивания файлов с помощью утилит Wget и cTorrent, создания почтового сервера на базе XMail, организация сервера печати (в случае наличия USBили LPT‑порта), установки Samba и множества других пакетов. Полный список пакетов можно найти в уже упомянутой поисковой системе [8]. Удачи!

mailhub=mail.foo.bar.ru

Теперь, чтобы отправить письмо с маршрутизатора, достаточно набрать команду: # ssmtp someuser@foo.bar.ru To: someuser@foo.bar.ru From: someuser@foo.bar.ru Subject: Some notification message Hello world!

52

1. http://wiki.openwrt.org/TableOfHardware. 2. http://www.ipkg.be/repositories. 3. http://wiki.openwrt.org/UsbStorageHowto. 4. http://matt.ucc.asn.au/dropbear/dropbear.html. 5. http://wiki.openwrt.org/CategoryModel. 6. http://wiki.openwrt.org/OpenWrtDocs/Configuration. 7. http://www.thekelleys.org.uk/dnsmasq/doc.html. 8. http://ipkg.be. 9. http://wl500g.info/showthread.php?t=7048.


администрирование

BusyBox: швейцарский нож для встраиваемых Linux-систем

Дмитрий Шурупов Системные администраторы и пользователи UNIX/Linux-систем, несомненно, привыкли к работе со своей любимой командной оболочкой и к стандартным программным средствам. Но их повсеместное использование не всегда возможно. И тогда на помощь приходит BusyBox – упрощенный shell с набором компактных системных средств.

BusyBox: что это такое и зачем вообще нужно? Несмотря на безудержный рост графических оболочек и «дружелюбных» интерфейсов, представить себе UNIX без командной строки и основных утилит в наши дни невозможно. Многочисленные интерпретаторы и базовые системные утилиты не стоят на месте, растут и развиваются, что неизбежно ведет и к увеличению их объема. В то же время существуют сфе-

54

ры деятельности, в которых компактность любых приложений по очевидным причинам очень важна, например, во встраиваемых устройствах. Вместе с тем во многих случаях не требуется значительная часть той функциональности, которая присуща базовым утилитам «общего назначения». Для решения этих проблем еще в с е р ед и н е 9 0 -х Бр ю с о м Пе р е н сом (Bruce Perens) был создан пакет BusyBox [1]. Сейчас проект позицио-

нируется как «швейцарский нож для встраиваемых Linux-систем» и в первую очередь ориентирован на использование в небольших дистрибутивах GNU/Linux. Распространяется под второй версией лицензии GNU GPL. BusyBox представляет собой единственный исполняемый файл, при запуске которого загружается полноценный командный интерфейс. Как гласит официальная документация BusyBox, для формирования минимальной


администрирование версии GNU/Linux к этому достаточно добавить лишь ядро ОС и каталоги /etc, /dev.

Установка BusyBox Бинарные пакеты с BusyBox для популярных дистрибутивов GNU/Linux доступны в соответствующих репозиториях, а архив с исходниками – на сайте проекта [2]. В статье рассматривается релиз BusyBox v1.5.0. Одна из главных целей, которую преследуют разработчики BusyBox, – оптимизированность и компактность кода – расчет на ограниченность памяти. Это не только вновь говорит о плюсах его использования во встраиваемых устройствах, но и хорошо сочетается с другим подходом в духе UNIX way: высокий уровень настраиваемости (в бинарный файл BusyBox можно включить только необходимые компоненты). Еще на стадии компиляции (а точнее, до самого процесса сборки) можно выбрать только те базовые утилиты, которые нужны. Реализовано это в стиле настройки ядра Linux. Вместо более распространенного среди собираемых с automake приложений способа в виде скрипта «configure» для предварительной конфигурации BusyBox нужно выполнить одну из следующих команд: $ make config $ make menuconfig $ make defconfig

Аргумент «config» инициирует запуск «вопросника» со списком доступных опций и базовых утилит, предлагающего проставлять «Y» или «N» на месте нужных и ненужных возможностей соответственно.

Где используется BusyBox Примеры практического использования BusyBox при создании дистрибутива вы можете найти в статье Всеволода Стахова «Создание загрузочных дискет и CD-дисков Linux» в №6 за 2003 г. или классических публикациях Брюса Перенса (Bruce Perens) «Building Tiny Linux Systems with Busybox», доступных в Интернете (часть 1: http:// www.linuxjournal.com/article/4335, часть 2: http://www.linuxjournal.com/article/4395). BusyBox нашел применение в таких системах, как Familiar Linux (для КПК)

Аргумент «menuconfig» вызывает более удобную конфигурацию в виде меню с интерфейсом на базе curses (см. рис. 1). Аргумент «defconfig» автоматически включает все доступные опции, подготавливая к сборке BusyBox «общего назначения». Так же, как и в случае с ядром Linux, после настройки создается конфигурационный файл .config, к которому можно затем всегда возвращаться командой: $ make oldconfig

№7, июль 2007

ключить ненужные возможности. Предусмотрен и обратный вариант: запуск make с «allnoconfig» отключает все опции, чтобы после этого можно было выбрать только то, что нужно. Далее все традиционно: $ make $ sudo make install

Работа с BusyBox Запуск оболочки BusyBox можно осуществить командой: $ bb

Это актуально при переходе на более новую версию BusyBox со старой конфигурацией (чтобы при настройке работать только с появившимися в очередном релизе опциями). По умолчанию, если до вызо ва «make menuconfig» не существовал файл .config, make автоматически предварительно запускается с аргументом «defconfig». Таким образом, пользователю останется только от-

Рисунок 1. Установка BusyBox: «make menuconfig» на манер Linux-ядра

и MoviX (популярный компактный дистрибутив с набором мультимедийных Open Source-решений), в установщиках Debian, Gentoo, Red Hat, Mandriva и других проектов, а также во многих Linux-основанных устройствах (Sharp Zaurus, роутеры, AP...). В OpenWRT, (смотрите стр.42-52 журнала), в качестве командной оболочки и базовых системных средств используется именно BusyBox. Более подробный список продуктов, использующих BusyBox, доступен на сайте http://www.busybox.net/ products.html.

Для разового вызова какой-либо функции (как правило, одна функция BusyBox ограниченно реализует возможности одной из утилит из состава GNU coreutils, util-linux и других стандартных пакетов) можно воспользоваться командой: $ busybox <функция> [аргументы]

То есть, например:

Рисунок 2. BusyBox в работе: ls

55


администрирование доступных флагов будет отличаться от тех, что все привыкли видеть в стандартных средствах.

Начинка BusyBox

ми (adduser/addgroup, deluser/delgroup, login, passwd, su), системы init. Особого смысла в перечислении всех функций BusyBox не вижу, поэтому ограничусь простой статистикой. В моей сборке BusyBox из портежа Gentoo Linux представлена 241 функция (но в нее входит далеко не все, что реализовано в рамках этого проекта). Если рассматривать для примера ls, то в версии BusyBox для этой утилиты доступно 26 флагов, а в оригинальной в моем случае (ls из GNU coreutils 6.7) – 55 (не считая «помощи» и «версии»). Среди отсутствующих флагов в первой можно выделить: -Q (названия в кавычках), -m (список через запятую), -U и -f (вывод списка без сортировки). Другие, на мой взгляд, еще менее значительны. Общие тенденции, думаю, очевидны.

Помимо альтернативного набора coreutils (ls, cat, mv, cp, rm, chmod, df, ln, date, wc, nice, test...) в состав BusyBox входит и множество других программ. Среди них, во-перРисунок 3. Исполнение элементарных скриптов в BusyBox вых, стоит выделить $ busybox ls -l / наличие нескольких минималистских командных оболочек: ash (60 Кб; отпокажет в текущей оболочке (напри- ветвление от dash из Debian, основанмер, bash) результат выполнения ко- ного на ash из NetBSD; рекомендован манды «ls -l /» в BusyBox (см. рис .2). для использования с BusyBox), hush (18 Подводя итоги Полный список доступных функ- Кб; понимает грамматику Bourne shell), Насколько существенно отсутствие тех ций в установленной версии BusyBox lsh (всего 10 Кб; только самый простой или иных возможностей, определяется можно посмотреть в выводе команды функционал), msh (30 Кб; minix shell). общими предъявляемыми требования«busybox» без аргументов. Просмотр Для работы с архивами есть та- ми и конкретными задачами. По субъпомощи по конкретной функции осу- кие утилиты, как tar, gzip, bzip2, ar, zip, ективным же впечатлениям, в BusyBoxществляется так: rpm, dpkg. Для обработки содержимого редакциях базовых утилит представфайлов есть как awk, sed, patch, так и лены все основные, т.е. повседневно $ busybox --help <функция> текстовые редакторы ed и vi. используемые (большинством в больШироко представлены сетевые шинстве же случаев) возможности. КоЭто приобретает особую актуаль- средства: и клиентские, и серверные. нечно, большинство – не все, и заданость ввиду того, что базовые утили- Среди демонов выделю httpd (с подде- чи бывают разные, но в целом – заслуты в составе BusyBox ограничены в ржкой авторизации, CGI), dnsd, telnetd, га авторов налицо. Им действительно своих возможностях, поэтому список inetd, udhcpd. Для FTP есть ftpget, удалось отобрать необходимое. ftpput и клиент tftp. При этом важно учитывать специКроме того, при- фику BusyBox, а именно – его позицисутствует и собс- онируемое и фактическое ключевое твенная версия предназначение: использование в окGNU wget. Из про- ружениях с серьезными ограниченичих стандартных ями в памяти, не нуждающихся в той у тилит: ifconfig, расширенной функциональности, коroute, traceroute, торую представляют современные баping/ping6, netstat, зовые системные утилиты. nslookup, arp И со своими задачами BusyBox и arping. справляется отлично. Вместе с тем К р о м е т о - проект активно развивается: с января г о , п р и м е ч а - 2006 года уже вышло 16 релизов, в 5 тельны реализа- из которых были представлены значиции hdparm для тельные нововведения (версии 1.x.0). п р о с м о т р а / у с - Другим показателем роста BusyBox явт а н о в к и п а р а - ляется тот факт, что все больше разраметров жестко - ботчиков в своих продуктах предпочиго диска, syslogd тают его применение другим возмождля ведения ло- ным вариантам. гов, средств работы с системными 1. http://www.busybox.net. учетными запися- 2. http://www.busybox.net/download.html. Рисунок 4. Сетевые средства в «make menuconfig» BusyBox

56


bugtraq Множественные уязвимости в Mozilla Firefox Программа: Mozilla Firefox версии до 2.0.0.5. Опасность: Высокая. Описание: 1. Различные ошибки в браузере могут позволить злоумышленнику вызвать повреждение памяти и выполнить произвольный код на целевой системе. 2. Различные ошибки в механизме Javascript могут позволить злоумышленнику вызвать повреждение памяти и выполнить произвольный код на целевой системе. 3. Уязвимость существует из-за ошибки в методах addEventListener и setTimeout, которая позволяет удаленному пользователю внедрить произвольный сценарий и выполнить его в контексте безопасности другого сайта. 4. Уязвимость существует из-за ошибки, которая позволяет междоменное выполнение сценариев в подфрейме другого веб-сайта с помощью вызова [window].frames[index]. document.open(). 5. Уязвимость существует из-за ошибки, которая позволяет внешним элементам вызвать обработчик событий и выполнить произвольный код на системе с привилегиями chrome. 6. Уязвимость существует из-за ошибки при обработке XPCNativeWrapper. Удаленный пользователь может выполнить произвольный код на целевой системе. URL производителя: www.mozilla.com. Решение: Установите последнюю версию 2.0.0.5 с сайта производителя.

Повреждение памяти в Microsoft Office Publisher

Несколько уязвимостей в Trillian Программа: Trillian Basic 3.1.6.0, возможно, другие версии. Опасность: Высокая. Описание: 1. Уязвимость существует из-за того, что aim:// URI-обработчик не проверяет aim:// URI перед записью данных в файл, указанный в параметре ini=. Удаленный пользователь может с помощью специально сформированного aim:// URI записать произвольные файлы на целевую систему. Пример: <a href = 'aim: &c:\windows\system32\calc.exe" ↵ ini="C:\Documents and Settings\All Users\ ↵ Start Menu\Programs\Startup\pwnd.bat"'>#1</a>

2. Уязвимость существует из-за ошибки проверки границ данных при обработке aim:// URI в плагине aim.dll. Удаленный пользователь может с помощью специально сформированного aim:// URI вызвать переполнение буфера и выполнить произвольный код на целевой системе. Пример: <a href = 'aim:///#1111111/11111111111111111111111111111111 1111111111111111111111111111122222222222222222222222222222222 2222222222222222222222222222222222222222222222222222222222222 2222222222222222222222222222222222222222222222222222222222222 222222222222222222222222222226666666AAAABBBB66666666666666666 6666666666666666666666666666666666666666666666666666666666666 6666666666666666666666666666666666666666666666666666666666666 6666666666666666666666666666666666666666666666666666666666666 66666666666666666666666666666666666666666666'>#2</a>

URL производителя: www.ceruleanstudios.com. Решение: В настоящее время способов устранения уязвимости не существует. В качестве временного решения рекомендуется отключить обработчик aim:// URI.

Несколько уязвимостей в продуктах McAfee

Программа: Microsoft Office Publisher 2007. Программа: McAfee Common Management Agent (CMA) 3.x, Опасность: Высокая. McAfee ePolicy Orchestrator 3.x, McAfee ProtectionPilot 1.x. Описание: Уязвимость существует из-за недостаточной Опасность: Высокая. проверки значений памяти перед записью данных приложе- Описание: 1. Уязвимость существует из-за опустошения ния с диска в память. Удаленный пользователь может с по- целочисленных, которое позволяет удаленному пользовамощью специально сформированной страницы Publisher телю вызвать повреждение памяти и выполнить произволь(.pub) выполнить произвольный код на целевой системе. ный код на целевой системе. URL производителя: www.microsoft.com. 2. Уязвимость существует из-за ошибки проверки граРешение: Установите исправление с сайта производите- ниц данных при обработке echo-пакетов. Удаленный польля. зователь может с помощью специально сформированного пакета вызвать переполнение стека и выполнить проВыполнение произвольных команд извольный код на целевой системе. в Microsoft Internet Explorer и Netscape 3. Уязвимость существует из-за ошибки проверки граПрограмма: Microsoft Internet Explorer 7.x, Netscape 9.0b2, ниц данных. Удаленный пользователь может с помощью возможно, более ранние версии. специально сформированного пакта вызвать повреждеОпасность: Высокая. ние памяти и выполнить произвольный код на целевой Описание: Уязвимость существует из-за того, что Netscape системе. регистрирует обработчик navigatorurl:// URI в системе и поз4. Уязвимость существует из-за целочисленного переволяет вызвать Netscape с произвольными опциями. Уда- полнения. Удаленный пользователь может вызвать переленный пользователь может с помощью специально сфор- полнение буфера и выполнить произвольный код на целемированного веб-сайта, посещенного с помощью браузера вой системе. Internet Explorer, передать Netscape специально сформиро- URL производителя: www.mcafee.com. ванный параметр -chrome и выполнить произвольные ко- Решение: Установите исправление с сайта производитеманды на системе. ля. Решение: В настоящее время способов устранения уязвиСоставил Александр Антипов мости не существует.

№7, июль 2007

57


администрирование

Централизованная настройка UNIX-систем с помощью Puppet

Сергей Яремчук Управление большим количеством UNIX-систем нельзя назвать удобным. Для изменения одного параметра администратору приходится обращаться к каждой машине, скрипты лишь частично могут помочь, да и не во всех ситуациях.

С

ледует признать, что администраторы Windows-сетей находятся все-таки в более выгодном положении. Достаточно изменить настройки групповых политик, и через некоторое время все компьютеры сети, в том числе и с недавно установленной операционной системой, «узнают» о нововведении, если они их, конечно, касаются. Оглянувшись на долгий период развития UNIX, можно заметить, что ничего подобного так и не прижилось. Есть решения вроде kickstart, которые помогают при первичной установке операционной системы, но дальнейшая доводка потребует значительных усилий. Коммерческие решения, вроде BladeLogic [1] и OpsWare [2], проблему автоматизации настроек решают лишь отчасти, основное их достоинство – наличие графического интерфейса, да и поз-

58

волить их приобрести могут только ет процесс написания команд, с ходу крупные организации. Есть, конечно, создать правильную конфигурацию и проекты, предлагающие свободные очень сложно, а созданные конфигурешения, но за все время своего су- рации прочитать через некоторое вреществования они так и не смогли со- мя практически не реально. Несмотздать большого сообщества. Напри- ря на GPL-лицензию Cfengine, фактимер, Cfengine [3] не очень пользуется чески проект одного человека, котопопулярностью у администраторов, хо- рый контролирует все изменения и не тя, кроме Linux, может использовать- очень заинтересован в построении отся в *BSD, Windows и Mac OS X. Воз- крытого общества. В результате возможно, это связано с относительной можности Cfengine вполне удовлетсложностью в создании конфигура- воряют разработчика, а для остальций. При описании заданий приходит- ных администраторов это скорее лишся учитывать особенности каждой кон- няя головная боль. Чтобы улучшить кретной системы и вручную контроли- Cfengine, сторонними разработчикаровать последовательность действий ми были созданы различные дополнепри выполнении команд. То есть ад- ния, что часто только ухудшало ситуаминистратор должен помнить, что для цию. Автор нескольких таких модулей одних систем следует писать adduser к Cfengine Люке Каниес (Luke Kanies) для других – useradd, учитывать рас- в итоге решил разработать подобный положение файлов в разных системах инструмент, но лишенный многих неи так далее. Это на порядок усложня- достатков Cfengine.


администрирование Возможности Puppet Puppet [4], как и Cfengine, является клиент-серверной системой, использующей декларативный, то есть обязательный для выполнения язык для описания задач и библиотеки для их реализации. Клиенты периодически (по умолчанию каждые 30 минут) соединяются с центральным сервером и получают последнюю конфигурацию. Если полученные настройки не совпадают с системным состоянием, они будут выполнены, при необходимости серверу отсылается отчет о произведенных операциях. Сервер сообщения может сохранить в syslog или файл, создать RRD-график, отослать на указанный e‑mail. Дополнительные уровни абстракции Transactional и Resource обеспечивают максимальную совместимость с существующими настройками и приложениями, позволяя сфокусироваться на системных объектах, не заботясь о различиях в реализации и описании подробных команд и форматах файлов. Администратор оперирует лишь с типом объекта, остальное Puppet берет на себя. Так, тип packages знает о 17 пакетных системах, нужная автоматически будет распознана на основании информации о версии дистрибутива или системы, хотя при необходимости пакетный менеджер можно задать принудительно. В отличие от скриптов, которые часто невозможно использовать в других системах, конфигурации Puppet, написанные сторонними администраторами, будут в большинстве без проблем работать в любой другой сети. В Puppet CookBook [5] уже имеется три десятка готовых рецептов. В настоящее время Puppet официально поддерживает следующие операционные системы и сервисы: Debian, RedHat/ Fedora, Solaris, SUSE, CentOS, Mac OS X, OpenBSD, Gentoo и MySQL, LDAP.

Язык Puppet Чтобы идти дальше, вначале следует разобраться с основными элементами и возможностями языка. Язык – это одна из сильных сторон Puppet. С его помощью описываются ресурсы, которыми администратор планирует управлять, и действия. В отличие от большинства подобных решений, в Puppet язык позволяет упростить обращение ко всем схожим ресурсам на любой системе в гетерогенной среде. Описание ресурса, как правило, состоит из названия, типа и атрибутов. Например, укажем на файл /etc/passwd и установим его атрибуты: file { "/etc/passwd": owner => root, group => root, mode => 644, }

Теперь клиенты, подключившись к серверу, скопируют файл /etc/passwd и установят указанные атрибуты. В одном правиле можно определять сразу несколько ресурсов, разделяя их с помощью точки с запятой. А что делать, если конфигурационный файл, используемый на сервере, отличается от клиентских или вообще не используется? Например, такая ситуация может возникнуть при настройках VPN-соединений. В этом случае следует указать на файл директивой source. Здесь два варианта, можно, как обычно указать путь к другому файлу, а также с помощью поддерживающихся двух URI протоколов: file и puppet. В пер-

№7, июль 2007

вом случае используется ссылка на внешний NFS-сервер, во втором варианте на сервере Puppet запускается NFS‑подобный сервис, который и экспортирует ресурсы. В последнем случае по умолчанию путь указывается относительно корневого каталога puppet – /etc/puppet. То есть ссылка puppet://server.domain.com/config/sshd_config будет соответствовать файлу /etc/puppet/config/sshd_config. Переопределить этот каталог можно с помощью директивы filebucket, хотя более правильно использовать одноименную секцию в файле /etc/puppet/fileserver.conf. В этом случае можно ограничить доступ к сервису только с определенных адресов. Например, опишем секцию config: [config] path /var/puppet/config allow *.domain.com allow 127.0.0.1 allow 192.168.0.* allow 192.168.1.0/24 deny *.wireless.domain.com

А затем обращаемся к этой секции при описании ресурса: source => "puppet://server.domain.com/config/sshd_config"

Перед двоеточием располагается название ресурса. В самых простых случаях в качестве имени можно просто указать полный путь к файлу. В более сложных конфигурациях лучше использовать псевдоним или переменные. Псевдоним устанавливается с помощью директивы alias: file { "/etc/passwd": alias => passwd }

Другой вариант создания псевдонима хорошо подходит в том случае, когда приходится иметь дело с разными операционными системами. Например, создадим ресурс, описывающий файл sshd_config: file { sshdconfig: name => $operatingsystem ? { solaris => "/usr/local/etc/ssh/sshd_config", default => "/etc/ssh/sshd_config" }

В этом примере мы столкнулись с возможностью выбора. Отдельно указан файл для Solaris, для всех остальных будет выбран файл /etc/ssh/sshd_config. Теперь к этому ресурсу можно обращаться как к sshdconfig, в зависимости от операционной системы будет выбран нужный путь. Например, укажем, что в случае, если демон sshd запущен и получен новый файл, следует перезапустить сервис: service { sshd: ensure => true, subscribe => File[sshdconfig] }

Переменные часто используются при работе с пользовательскими данными. Например описываем месторасположение домашних каталогов пользователей: $homeroot = "/home"

59


администрирование Теперь к файлам конкретного пользователя можно обратиться как: ${homeroot}/$name

}

В параметр $name будет подставлено учетное имя пользователя. В некоторых случаях удобно определить значение по умолчанию для некоторого типа. Например, для типа exec очень часто указывают каталоги, в которых он должен искать исполняемый файл: Exec { path => "/usr/bin:/bin:/usr/sbin:/sbin" }

В том случае, если нужно указать на несколько вложенных файлов и каталогов, можно использовать параметр recurse: file { "/etc/apache2/conf.d": source => "puppet:// ↵ puppet://server.domain.com/config/apache/conf.d", recurse => "true" }

Несколько ресурсов могут быть объединены в классы или определения. Классы являются законченным описанием системы или сервиса и используются обособленно: class linux { file { "/etc/passwd": mode => "/etc/shadow": mode => } }

owner => root, group => root, ↵ 644; owner => root, group => root, ↵ 440

Как и в объектно-ориентированных языках, классы могут переопределяться. Например, в FreeBSD группой-владельцем этих файлов является wheel. Поэтому, чтобы не переписывать ресурс полностью, создадим новый класс freebsd, который будет наследовать класс linux: class freebsd inherits linux { File["/etc/passwd"] { group => wheel }; File["/etc/shadow"] { group => wheel } }

Для удобства все классы можно вынести в отдельный файл, который нужно подключать директивой include. Определения могут принимать многочисленные параметры в качестве аргументов, но не поддерживают наследования и используются в том случае, если нужно описать многократно используемые объекты. Например, определим домашний каталог пользователей и команды, необходимые для создания новой учетной записи: define user_homedir ($group, $fullname, $ingroups) { user { "$name": ensure => present, comment => "$fullname", gid => "$group", groups => $ingroups, membership => minimum, shell => "/bin/bash", home => "/home/$name", require => Group[$group], } exec { "$name homedir":

60

}

command => "/bin/cp -R /etc/skel /home/$name; ↵ /bin/chown -R $name:$group /home/$name", creates => "/home/$name", require => User[$name],

Теперь, чтобы создать новую учетную запись, достаточно обратиться к user_homedir: user_homedir { "sergej": group => "sergej", fullname => "Sergej Jaremchuk", ingroups => ["media", " admin] }

Отдельно стоят описания узлов (node), которые поддерживают наследование, как и классы. При подключении клиента к серверу Puppet будет произведен поиск соответствующей секции node и выданы специфические только для этого компьютера настройки. Для описания всех остальных систем можно использовать node default. Описание всех типов приведено в документе «Type Reference», с которым необходимо ознакомиться в любом случае, хотя бы для того, чтобы понять все возможности языка Puppet. Различные типы позволяют выполнять указанные команды, в том числе и при выполнении определенных условий (например, изменение конфигурационного файла), работать с cron, учетными данными и группами пользователей, компьютерами, монтированием ресурсов, запуском и остановкой сервисов, установкой, обновлением и удалением пакетов, работой с SSH-ключами, зонами Solaris и так далее. Вот так просто можно заставить обновлять список пакетов в дистрибутивах, использующих apt, ежедневно между 2 и 4 часами: schedule { daily: period => daily, range => [2, 4] } exec { "/usr/bin/apt-get update": schedule => daily }

Обновление за тот период каждой системой будет выполнено только один раз, после чего задание считается выполненным и будет удалено с клиентского компьютера. Язык Puppet поддерживает другие привычные структуры: условия, функции, массивы, комментарии и подобные.

Установка Puppet Для работы Puppet потребуются Ruby (начиная с версии 1.8.1 и выше) с поддержкой OpenSSL и библиотеками XMLRPC, а также библиотека Faster [6]. В репозитарии Ubuntu 7.04, который использовался при тестовой установке, уже включен пакет puppy: $ sudo apt-cache search puppet puppet - centralised configuration management for networks puppetmaster - centralised configuration manangement control daemon

При инсталляции будут установлены все необходимые пакеты: facter libopenssl-ruby libxmlrpc-ruby. $ sudo apt-get install puppet puppetmaster


администрирование Проверить наличие библиотек Ruby можно командой:

$ puppetd --genconfig > /etc/puppet/puppetd.conf

$ ruby -ropenssl -e "puts :yep"

Аналогично можно создать и site.pp на сервере:

yep

~$ ruby -rxmlrpc/client -e "puts :yep" yep

Если не получено ошибок, значит, все необходимое уже включено. Файлы, в которых описывается желательная конфигурация систем, в терминологии Puppet называются манифестами (manifests). При запуске демон пытается прочитать файл /etc/puppet/manifests/site.pp, при его отсутствии выдает предупреждающее сообщение. При тестировании можно указать демону на работу в автономном режиме, при котором манифест не требуется: $ sudo /usr/bin/puppetmasterd --nonodes

При необходимости к site.pp можно подключать другие файлы, например, с описаниями классов. Для тестового запуска в этот файл можно занести самую простую инструкцию. class sudo { file { "/etc/sudoers": owner => root, group => root, mode => 440, } } node default { include sudo }

Все конфигурационные файлы, как сервера так и клиентов, расположены в /etc/puppet. Файл fileserver.conf, о котором мы уже говорили, не обязателен и используется только в том случае, когда Puppet будет работать еще и как файлсервер. В Ubuntu в этом файле экспортируется подкаталог /etc/puppet/files. В подкаталоге ssl расположены сертификаты и ключи, которые будут использоваться для шифрования при подключениях клиентов. Ключи создаются автоматически при первом запуске puppetmasterd, вручную их можно создать командой:

$ puppetd --genmanifest > /etc/puppet/manifests/site.pp

Еще один файл tagmail.conf, позволяет указать почтовые адреса, на которые будут отсылаться отчеты. В простейшем случае можно использовать одну строку: all: admin@domain.com

Конфигурационных файлов недостаточно, чтобы клиент мог подключаться к серверу. Для этого необходимо еще подписать сертификаты. Сначала, чтобы сервер узнал о новом компьютере, на клиентской системе вводим команду: $ sudo puppetd --server grinder.com --waitforcert 60 --test info: Requesting certificate warning: peer certificate won't be verified in this SSL session notice: Did not receive certificate

Если будет выдана другая строка, следует проверить работу сервера: $ ps aux | grep puppet puppet

5779 0.0 1.4 27764 15404 ?

Ssl 21:49

0:00 ruby /usr/sbin/puppetmasterd

Межсетевой экран должен разрешать соединения на порт 8140. На сервере получаем список сертификатов, нуждающихся в подписи: $ sudo puppetca --list nomad.grinder.com

И подписываем сертификат клиента: $ sudo puppetca –sign nomad.grinder.com

Теперь клиент может свободно подключаться к серверу и получать настройки. К сожалению, все возможности Puppet в пределах ста$ sudo /usr/bin/puppetmasterd --mkusers тьи показать невозможно. Но, как видите, это функциональный и гибкий инструмент, позволяющий решить большую Файлы puppetd.conf и puppetmasterd.conf похожи. В них часть задач по одновременному администрированию больуказываются некоторые параметры работы демонов на кли- шого числа систем. И самое главное, проекту удалось собентской системе и сервере. Клиентский файл отличается рать пока небольшое, но постоянно растущее сообщество. только наличием параметра server, указывающего на ком- Поэтому будем надеяться, что хорошей идее не дадут умепьютер, на котором запущен puppetmasterd: реть или уйти в сторону. Удачи! [puppetd] server = grinder.com logdir = /var/log/puppet vardir = /var/lib/puppet rundir = /var/run # отсылаем отчет серверу report = true

Чтобы не печатать все вручную, можно создать шаблон с помощью самого puppetd:

№7, июль 2007

1. Сайт проекта BladeLogic – http://www.bladelogic.com. 2. Сайт проекта OpsWare – http://www.opsware.com. 3. Сайт проекта Cfengine – http://www.cfengine.org. 4. Сайт проекта Puppet – http://reductivelabs.com/projects/puppet. 5. Puppet CookBook – http://www.reductivelabs.com/trac/puppet/ tagspuppet%2Crecipe. 6. Библиотека Faster – http://reductivelabs.com/projects/facter.

61


администрирование

Особенности инсталляции Solaris

Владимир Василькин Как подружиться с «динозавром»? Бывает, так ласково называют одну из старейших операционных систем семейства UNIX – Solaris. С чего же можно начать знакомство? Как вариант – с первоначальной установки – инсталляции. Посмотрим, в чем заключаются особенности первой встречи с нестрашным «динозавром» – Solaris 10.

Н

ачнем с определений. Что такое операционная система? Следуя википедии [6] – это программа (комплекс программ), которая управляет аппаратными средствами компьютера и служит средой для выполнения других программ. При включении питания встроенные программно-аппаратные средства по определенным правилам ищут операционную систему, загружают ее в память и передают дальнейшее управление. В некоторых

62

случаях используется промежуточный слой – программа-загрузчик. Принципиально процесс загрузки ОС выглядит одинаково на всех системах. Получается, что инсталляция операционной системы – это копирование файлов на постоянный носитель (с возможным изменением некоторых – здесь уже используются процессы первоначальной конфигурации) и настройка аппаратно-программного комплекса на загрузку с этого носителя.

По терминологии мира PC-совместимых компьютеров встроенным программно-аппаратным средством служит BIOS. При работе с другими системами обычно используется слово firmware. На SPARC-совместимых серверах производства SUN и FUJITSUSIEMENS в качестве firmware в основном выступает OpenBoot (Open Firmware) [7]. Более подробно работу с OpenBoot можно рассмотреть в со-


администрирование ответствующей литературе. Настройки BIOS зависят от производителя материнской платы. Далее в статье выражение «инсталляция ОС» будет использоваться для обозначения процесса копирования файлов, если не указано иное. Промышленные способы копирования (штамповка) в статье рассматриваться не будут. Для запуска процессов копирования и управления ими нужна среда выполнения. Другими словами – процессы инсталляции ОС происходят под управлением другой ОС. В дальнейшем будем называть такую ОС «временной», а инсталлируемую – «новой». В таком случае процесс инсталляции происходит по следующей схеме: 1. Настройка firmware на загрузку временной ОС. 2. Загрузка временной ОС. 3. Выполнение процессов копирования (инсталляции). 4. Настройка firmware на загрузку новой ОС и загрузка новой ОС. Пункт 4 состоит из двух действий по причине того, что настройка firmware может происходить как средствами самой firmware, так и инструментами временной ОС. Здесь хотел бы подчеркнуть, что все сказанное выше относится абсолютно к любым сочетаниям операционных систем, как временной, так и новой. Например, в качестве временной ОС может служить какой-нибудь дистрибутив Linux, а новой – MS Windows или Solaris. Перепрошивка сотового телефона, например, может выглядеть как сочетание MS Windows – Symbian. Способы инсталляции различаются по типу загрузки временной ОС, типу источника, способам первоначальной конфигурации. Временная ОС может быть загружена локально, а также может быть запущена по сети. Источник файлов для инсталляции также может быть локальным (CD, DVD, жесткий диск и т. п.) или доступным по сети (используя различные сетевые протоколы). Способы первоначальной настройки системы могут быть автоматизированы в различной степени. Самый простой способ инсталляции – это побитное копирование всего носителя. Очень хорошо для этого подходит команда dd, которая присутству-

№7, июль 2007

ет практически в любом UNIX-подобНа базе кода Solaris 10 основан ном дистрибутиве. Используя эту ко- проект OpenSolaris, целью которого манду, мы можем просто продублиро- является дальнейшее развитие этой вать носитель, например, копируя жес- операционной системы, в том числе и силами независимых разработткий диск на второй такой же. Также подобным способом можно чиков [4]. На официальном сайте довосстанавливать систему из резерв- ступны ссылки для скачивания шесной копии. Загрузка временной ОС мо- ти дистрибутивов на базе OpenSolaris. жет происходить из любого источни- Часть из этих проектов поддерживака. Конфигурация новой ОС также мо- ется непосредственно фирмой Sun жет быть осуществлена как из времен- Microsystems, остальные – другими ной системы, так и после загрузки но- разработчиками. Периодичность обвой. Восстановление из резервной ко- новлений зависит, конечно, от создапии редко рассматривается как вари- телей дистрибутива. ант установки операционной системы. Так же дост упна документация Мы тоже не будем на нем останавли- по созданию своей системы на базе ваться подробно. Тем более что в офи- OpenSolaris. циальной документации по инсталляПоследнюю версию Solaris 10, ции Solaris 10 этот способ не описан. OpenSolaris, можно скачать с официПолностью копируя носитель, мож- альных сайтов [2, 4] или других исно восстановить различные данные, точников [5] совершенно бесплатно. в том числе файлы ОС, не принципи- При желании диски с системой можально какой. Не будем заострять вни- но купить. мание на различных вариантах резерОбычно, если четких требований вного копирования и восстановления. к версии ОС не существует, ставится Далее поговорим о вариантах уста- новейший релиз из доступных. Посновки ОС Solaris стандартными инс- ле чего на систему устанавливаеттрументами. ся рекомендованный набор патчей – «Recommended Solaris Patch Clusters», Планирование установки скачать который можно с сайта [2]. Инсталляцию ОС, как и любую другую До 10 версии в Solaris был предусработу, неплохо начинать с планиро- мотрен также набор дополнительных вания. Процесс планирования можно патчей для повышения версии систеразбить на несколько этапов (подроб- мы – Maintenance Update. Тогда процесс но рассмотрены в официальной доку- установки происходил в три этапа: 1. Установка базового дистрибутива. ментации). 2. Установка последнего Maintenance Версии системы Update. 3. Ус т а н о в к а п о с л е д н е й в е р Последняя версия Solaris на момент написания статьи – 10, а если быть точсии Recommended Solaris Patch ным – 10 11/06. Наименование версии Clusters. включает в себя месяц и год выпуска обновления, разделенные прямым Процесс можно было автоматизислешем. По планам обновления сис- ровать. Судя по всему, в версии 10 оттемы должны выпускаться раз в квар- казались от использования этой техтал. По историческим причинам ко- нологии, оставив только Recommended манда uname в ОС Solaris выдает на- (начиная с 10 версии MU недоступен, звание SunOS. Версии системы счи- но официальные высказывания по этотаются после символов «5.». Напри- му поводу не встречались). мер, у Solaris 10 вывод команды будет С точки зрения инсталляции систеследующий: мы в Solaris 10 мало что изменилось, так что большая часть сказанного бу# uname -s -r дет применима к предыдущим версиям: Solaris 8 и 9. Различия есть, но они SunOS 5.10 в основном незначительные; некотоБолее подробно информацию рые особенности будут указаны. Прио версии установленной системы мож- меры в статье будут применимы для но посмотреть в файле /etc/release или версии Solaris 10 11/06, если не укакомандой showrev. зано иное.

63


администрирование Интересно, что официально поддерживается обновление системы с версии Solaris 8 до 10. Для обновления с более ранних версий (до 8) предлагается сначала поднять версию ОС до максимально возможной. Например, с версии Solaris 2.5 до Solaris 9, после – до Solaris 10. Все же при заметном повышении версии (не релиза) рекомендуется производить полную инсталляцию системы, а не обновлять существующую. Со случаями обновления версии сталкиваться не приходилось, даже тяжело представить необходимость проведения подобных работ. Из-за большой гибкости в настройках скорей всего можно будет найти более красивое решение, пример будет дальше.

Проверка конфигурации оборудования Solaris 10 может работать на двух типах процессоров: SPARC и x86-совместимых. Поддерживаются системы, основанные на следующих архитектурах: UltraSPARC®, SPARC64, AMD64, Pentium и Xeon EM64T. Полный перечень поддерживаемого оборудования можно получить в официальной документации, следуя ссылкам на сайтах [1, 4]. Минимальная конфигурация зависит от задач, которые будет обслуживать устанавливаемая система; желательно иметь четкое представление, для чего она будет использоваться. В зависимости от обслуживаемых функций требования к аппаратной конфигурации могут значительно отличаться. Начиная с версии Solaris 10 1/06 все x86-совместимые системы должны иметь, как минимум, 256 Мб оперативной памяти (рекомендуется 512 Мб). Для предыдущих релизов Solaris 10 требования меньше: 128 Мб и 256 Мб соответственно. Для платформ, основанных на технологии SPARC, требования к памяти ниже. Необходимо 128 Мб ОП, желательно 256 Мб. Для обоих видов платформ размер минимально необходимой ОП также зависит от типа инсталляции, о чем будет сказано позже. Система по умолчанию будет использовать 512 Мб виртуальной памяти (swap), что, конечно же, являет-

64

ся настраиваемым параметром. Когда-то стандартным советом было выделять под область подкачки размер дискового пространства в два раза больший, чем размер доступной оперативной памяти. Сейчас эти рекомендации не всегда актуальны – не редкость встретить серверы с оперативной памятью размером в несколько гигабайт. В таком случае польза большого свопа сомнительна. Требования к частоте процессора по современным меркам совсем небольшие. Для работы системы необходим x86-совместимый процессор с частотой 120 МГц или процессор SPARC с минимальной частотой 200 МГц. Размер использования пространства на жестком диске сильно зависит от количества установленных пакетов. Требования могут отличаться от релиза системы и составляют от 2 до 7 Гб дискового пространства. Требования к конкретному релизу можно посмотреть в соответствующем «Release Notes» на сайте [1] или [4], если вы используете OpenSolaris.

Solaris Flash Archives

Flash здесь значит не «USB-накопитель», а всего лишь способ инсталляции, который больше похож на клонирование (этот термин также употребляется в документациии). Суть метода состоит в том, что можно использовать одну рабочую систему как шаблон (master system). И реплицировать эту инсталляцию на другие системы, называемые клонами (clone system). Можно «клонировать» системы как полностью перезаписывая информацию на носителе (установка «с нуля»), так и внося лишь частичные изменения. Причем в клонировании может участвовать не только системное программное обеспечение, но и другие файлы. Этот метод – удобный способ управления большим количеством однотипных серверов, на которые время от времени приходится накладывать патчи. Например, знакомая любому хостеру ситуация, когда время от времени приходится изменять версию PHP. Способ похож на архивирование групМетоды инсталляции Solaris пы файлов и их распаковку на другие В официальных документах [1] можно машины. выделить несколько типов инсталляБолее подробно ознакомиться с этим видом установки Solaris 10 можции, рассмотрим их: но на сайте [1] в книге No: 817­‑5668‑11 Basic или «используя «Solaris 10 Installation Guide: Solaris Flash программу‑инсталлятор» Archives (Creation and Installation)». Как следует из названия – это самый простой вид инсталляции. Custom JumpStart Под словом «простой» подразуме- Это самый популярный метод установвается «требующий наименьшей ква- ки Solaris. Вернее, самый популярный лификации» системного администра- способ – установка системы по сети, тора. Процесс установки таким спосо- используя технологию JumpStart. бом мало отличается от установки друJumpStart отличается от других мегих популярных ОС. Он подразумева- тодов подходом к конфигурации систеет загрузку временной ОС (с диска CD, мы и особенно полезен, если испольили DVD, или используя загрузку по се- зуется несколько серверов под управти) и ответы на простые вопросы про- лением Solaris (обычно так и происхограммы-инсталлятора. дит – если в организациии появляетВ Solaris 10 существует два вида ся система под управлением Solaris – программы-инсталлятора – с тексто- то не одна ). вым и графическим интерфейсами. Суть метода – для установки кажГрафический инсталлятор использу- дого сервера формируется отдельная ет Java, требования к системе в слу- среда выполнения. Другими словами – чае его использования повышаются; заранее формируются ответы на вопв некоторых случаях могут быть выше, росы, возникающие при инсталляции. чем требования к рабочей системе. В официальной документации рекоЭтот вид установки подробно рас- мендуется использовать программусмотрен в нескольких документах инсталлятор для настройки небольна ресурсе [1]. шого количества серверов. Осмелюсь


администрирование не согласиться с этим советом – по-моему, проще сразу подТакже разработчики предоставляют возможноть усготовить файлы с ответами, запустить инсталляцию и ждать тановить систему через сети общего пользования, в том ее завершения, не отвлекаясь время от времени для отве- числе через Интернет. В таком случае установку можно та на новый вопрос. произвести только на SPARC-совместимые системы. ИсЕсли инсталляция происходит с CD – все равно при- пользуются протоколы HTTP или HTTPS. Если интересно – дется уделять свое внимание процессу установки для сме- процесс подробно описан на сайте [1]. Например, в книге No: 817‑5504‑12 «Solaris 10 Installation Guide: Network-Based ны дисков. Подробнее с эти видом установки можно ознакомиться Installations». в книге No: 817-5506-12 «Solaris 10 Installation Guide: Custom JumpStart and Advanced Installations». На практике чаще всего настраивают инсталл-сервер и системы прогружают по сети, используя технолоSolaris Live Upgrade гию JumpStart. В среде Solaris давно существует два способа установки программного обеспечения: стандартный метод и Live Выбор набора устанавливаемых программ Upgrade. Одна из особенностей операционной системы Solaris то, Стандартный способ – когда установка и обновле- что она состоит из пакетов. ние происходит с остановкой работы сервисов на рабоМожет показаться, что многие современные системы также состоят из пакетов. Это не так. Действительно, у чей системе. Альтернативный вариант – Live Upgrade. В данном слу- большинства дистрибутивов существует возможность исчае слово Upgrade не нужно понимать буквально как «об- пользовать какой-нибудь менеджер пакетов или даже неновление». Это всего лишь название способа установки ПО, сколько. Но подобные инструменты обычно используютслово не несет привычной смысловой нагрузки. ся для установки дополнительного ПО (которое, впрочем, В случае использования альтернативной технологии может перекрывать функционал системного). Сама систесистемное программное обеспечение может быть уста- ма в таком случае ставится как одна монолитная, неделиновлено на работающей системе, но на неактивную пар- мая большая программа, состоящая, может быть, из мнотицию (часть диска) или неактивный DiskSet – «набор дис- жества файлов. ков» – если используется много дисков. То есть делается Например, после установки FreeBSD команда pkg_info копия рабочей конфигурации, на копию накатываются пат- не покажет ни одного пакета. В момент инсталляции мы мочи; или же система прогружается полностью «с нуля». По- жем выбрать лишь комбинацию из крупных наборов файтом происходит переключение путем перезагрузки на но- лов: исполняемые файлы, документация, исходные тексты вую партицию (или DiskSet). В случае возникновения проб- и т. п. При установке MS Windows можем наблюдать подоблем возможно переключение на старую, рабочую конфигу- ную ситуацию (точно не будет исходных текстов). В обоих рацию. Время простоя системы при обновлении подобным случаях программа-установщик распаковывает файлы ОС способом минимально. из архивов и копирует их на диск. В одном случае испольБолее подробно ознакомиться с этим видом уста- зуются CAB-файлы, в другом – TGZ. новки Solaris 10 можно на сайте [1]. Например, в книге В отличие от них установка всей системы Solaris проNo: 817‑5505‑12 «Solaris 10 Installation Guide: Solaris Live исходит командой pkgadd. Например, при установке набоUpgrade and Upgrade Planning». ра пакетов «Entire Solaris Software Group Plus OEM Support» Существует еще один (довольно популярный) способ ставится 984 системных пакета в Solaris 10, 1055 пакетов обновления ПО, похожий на Solaris Live Upgrade, но приме- в Solaris 9. нимый также к другим системам. Устройства хранения обСистемные пакеты обычно имеют префикс SUNW.Поэновляемой системы должны быть объединены в «зеркало» тому их количество проверить легко: (RAID-1 и т. п.). В таком случае перед обновлением систе$ pkginfo | grep SUNW | wc -l мы диски разбиваются на две части: активную часть и резервную копию. Вся работа по обновлению системы происходит над одУстановленное в систему ПО можно посмотреть в файной «половинкой» зеркала – активной частью. После ус- ле /var/sadm/install/contents. Способ используется чаще, пешного завершения работ диски опять объединяют в зер- чем стандартный whereis из UNIX. Например, где находиткало. Происходит синхронизация дисков с активной части ся файл bash, в какой пакет входит, можно посмотреть кона резервную копию. мандой grep: В случае неудач в процессе обновления ПО возможна # uname -a; echo ; grep '/bash ' /var/sadm/install/contents загрузка с резервной копии. В таком случае синхронизация дисков происходит в обратную сторону. SunOS mncomp 5.10 Generic_118833-33 sun4u sparc SUNW,Sun-Blade-100

Network-based Как уже было отмечено выше, Solaris 10 предоставляет возможность произвести установку системы по сети. Это можно сделать, используя стандартную программу-установщик, технологию JumpStart.

№7, июль 2007

/usr/bin/bash f none 0555 root bin 735572 56826 1106443425 SUNWbash

Здесь мы видим, что исполняемый файл bash входит в пакет SUNWbash. В случае если нам понадобится, например, обновить версию интерпретатора, можно удалить установленный пакет и поставить его более новую версию.

65


администрирование Например, как-то раз мне пришлось столкнуться с интересным случаем. Долгое время работал сервер под управлением Solaris 8. Одной из функций этого сервера была обработка электронной почты. Понадобилось настроить дополнительную проверку почты через внешний фильтр – milter. В Solaris 8 использовался Sendmail версии 8.11 с патчами от SUN. Для использования технологии milter требовалась версия не ниже 8.12, а это уже из набора Solaris 9. Обновление версии системы не рассматривалось – слишком много других сервисов работало на сервере, в том числе программы сторонних разрабочиков. На другой машине был собран пакет sendmail с нужной функциональностью, после чего ПО для почтового сервиса было заменено штатными средствами системы. Время простоя одного сервиса составило всего несколько минут; остальная функциональность системы не пострадала. Разбиение системного ПО на пакеты предоставляет большую гибкость в момент установки и дальнейшей работы. Администратор может установить не только стандартные наборы ПО, но и легко создавать собственные. Например, для экономии места на дисках. Перейдем к рассмотрению наборов.

Стандартные наборы программ В Solaris 10 предопределено 6 наборов системных пакетов. Для каждого набора существуют рекомендации по использованию дискового пространства, которые описывают использование следующих областей: n Виртуальная память (Swap). n Патчи. n Дополнительное программное обеспечение (пакеты). Скорее всего установленная система будет занимать меньше места, чем написано в рекомендациях. Системные пакеты можно найти на установочном диске (или на установочном сервере) в директории Solaris_10/Product/. Из каких конкретно пакетов состоит каждый набор, можно посмотреть там же в файле Solaris_10/Product/.clustertoc. Рассмотрим стандартные наборы пакетов Solaris 10 подробнее.

66

Reduced Network Support Software Group Содержит минимум пакетов, необходимых для загрузки и запуска системы с ограниченной поддержкой сетевых сервисов. Этот набор программ предоставляет возможность многопользовательской работы через консоль и включает в себя утилиты для управления системой. Также этот системный набор позволяет настроить сетевые интерфейсы, но не запускает сетевые сервисы. Рекомендации по дисковому пространству – 2 Гб.

Core System Support Software Group Содержит минимум пакетов, необходимых для полноценной работы системы с сетевыми сервисами. Рекомендации по дисковому пространству – 2 Гб.

End User Solaris Software Group Содержит пакеты, необходимые для работы с сетвыми сервисами, а также оконный менеджер и набор программ с графическим интерфейсом. Рекомендации по дисковому пространству – 5,3 Гб.

Developer Solaris Software Group Содержит все файлы из предыдущего набора плюс дополнительные пакеты, полезные для разработчиков. Они включают в себя библиотеки, файлы заголовков, документацию и инструменты разработки. Компиляторы в этот набор не входят, к сожаленью, их придется доставлять отдельно. Требования к дисковому пространству увеличились до 6,6 Гб.

Entire Solaris Software Group Содержит все файлы из предыдущего набора плюс дополнительные пакеты, полезные для работы серверов. Рекомендации по дисковому пространству составляют 6,7 Гб.

Entire Solaris Software Group Plus OEM Support Содержит все файлы из предыдущего набора плюс дополнительные пакеты, содержащие драйверы устройств, которые не были подключены в момент инсталляции системы.

Рекомендации по дисковому пространству составляют 6,8 Гб. В большинстве случаев устанавливается максимально возможный набор пакетов. Иногда сторонние производители программного обеспечения (например, Cisco или Oracle) выставляют свои требования по набору установленных пакетов, патчей и их версий. Различные методы инсталляции могут предоставлять разные возможности по управлению устанавливаемыми пакетами. Максимальную гибкость при установке можно достигнуть, используя метод JumpStart. Разбиение системного ПО на пакеты имеет одну неприятную особенность, проявляющуюся в момент инсталляции. Установка системы пакетами занимает гораздо больше времени, чем другими способами. Каждый пакет в момент установки кроме непосредственно копирования файлов проверяет зависимости, записывает служебную информацию, может выполнять дополнительные действия. Нередко случается, что установка Solaris растягивается на несколько часов. В случае если инсталляцию системы необходимо провести очень быстро – придется использовать другие способы, например, Flash Archives.

Стандартные вопросы Перед инсталляцией системы необходимо знать ответы на вопросы, возникающие в большинстве случаев установки. Все вопросы с возможными ответами перечислены в таблице «Checklist for Installation» в книге No: 817‑0544‑12 «Solaris 10 Installation Guide: Basic Installations». Сами вопросы и ответы на них выглядят так же, как в программе-инсталляторе. Ниже приведены краткие описания вопросов, возможные ответы, ответы по умолчанию (методы ответов могут отличаться и зависят от типа инсталляции). Повторять полный список вопросов и ответов не вижу смысла, лишь добавлю, как ответы на некоторые из них отражаются на настройке системы. Кроме конфигурационных файлов настройку системы можно про-


администрирование изводить, используя утилиты sysunconfig(1M) и sysidtool(1M).

Является ли система частью сети? Ответ на этот вопрос никаких конкретных изменений в системе не делает. Только влияет на последовательность следующих вопросов – раздел «настройки сети».

Настройки сети

Kerberos Файлы с настройками Kerberos хранятся в папке /etc/krb5/.

Сервисы имен Solaris может использовать информацию о системных настройках из различных источников. Информация об использовании всех служб берется в первую очередь из файла /etc/ nsswitch.conf. Настройки конкретных служб можно посмотреть в соотвествующих разделах документации.

Для каждого сетевого интерфейса, в том числе использующего DHCP для своей настройки, необходим файл Маршруты по умолчанию /etc/hostname.hme0, где hme0 – имя ин- Информация о маршрутах по умолчатерфейса. нию хранится в файле /etc/defaultrouter, Для протокола IPv6 используются по одной строчке на маршрут. Профайлы вида: /etc/hostname6.hme0. грамма-инсталлятор предлагает укаВ этих файлах лежат настройки ин- зать только один маршрут. Файл читерфейсов, используемые командой тается только при загрузке системы. ifconfig. Можно ограничиться одним Текущие настройки маршрутизации файлом для настройки, но обычно до- на работающей системе можно посполнительно используется информа- мотреть командой: ция из других источников. В основном netstat -rn это файлы /etc/hosts и /etc/netmasks. Могут использоваться не только файлы, но и другие информационные Управлять настройками маршрутислужбы: DNS, LDAP, NIS, NIS+ и т. п. зации можно командой route. Откуда конкретно берется информаОсмелюсь напомнить, что для корция, можно посмотреть в файле /etc/ ректной работы шлюз должен нахоnsswitch.conf. диться в той же подсети, что и один Подробную информацию по ис- из работающих интерфейсов. пользуемым файлам можно посмотТакже во время инсталляции сисреть в соответствующих разделах до- тема может попытаться определить кументации. настройки маршрутизации самостоятельно, используя протокол ICMP, если Настройки DHCP конфигурация сети позволяет. Если сетевой интерфейс использует протокол DHCP для своей настройки, TimeZone, locales то в системе создается файл /etc/dhcp. Информация о временной зоне, геоhme0, где hme0 – имя интерфейса. графическом регионе и другая хранится в файле /etc/TIMEZONE, котоИмя системы рый является символической ссылкой Часто hostname путают с именами ин- на /etc/default/init. терфейсов, хранящимися в файлах /etc/hosts, /etc/hostname*. Интерфейсов Остальные вопросы может быть несколько, а имя у систе- Остальные вопросы касаются размы – одно. В системном руководстве бивки дисков, набора устанавливае(man) говорится, что если сетевых ин- мых пакетов и т. п. Конкретные воптерфейсов несколько, то именем сис- росы и ответы на них зависят от типа темы служит имя Primary Interface. На инсталляции. практике дело обстоит несколько инаНастройки файловой системы храче. Начиная с версии 10, информация нятся в файле /etc/vfstab, синтаксис об имени системы хранится в следую- которого походит на подобные файлы из других систем. Информацию об устащих файлах: n /etc/nodename; новленной системе можно посмотреть n /etc/inet/hosts; командой showrev с различными ключаn /etc/inet/ipnodes. ми, а также в каталоге /var/sadm.

№7, июль 2007

Например, информация об установленных пакетах хранится в файле /var/sadm/install/contents. Файлы журнала о прошедшем процессе инсталляции системы хранятся в каталоге /var/sadm/system/logs/ и /var/ sadm/install/logs/.

Выводы По каждому виду инсталляции существует отдельная книга, также встречаются статьи с конкретными примерами. Вообще процесс установки современных ОС выглядит примерно одинаково, по крайней мере в простейших случаях. Отличия проявляются в тонкостях настройки и используемой терминологии. Как видно, легендарная операционная система предоставляет администратору большую свободу в выборе действий уже в процессе инсталляции. Именно гибкостью настройки Solaris всегда отличался от других систем. Возможно, во многих случаях она не пригодится – тогда будут использоваться стандартные варианты настроек. Работать с «динозавром» совсем не страшно. 1. http://docs.sun.com – официальная документация. У многих почему-то возникают проблемы с использованием этого ресурса. Документации много, и она очень хорошо структурирована. Вместо стандартного «поиска по словам» мне, например, удобно использовать вкладку «Browse Product Documentation». По крайней мере, когда знаешь, что ищешь. 2. http://sunsolve.sun.com – документация, патчи, обновления, полезные ссылки. Для использования некоторых ресурсов потребуется регистрация или платный уровень поддержки. 3. http://www.sun.com/bigadmin/home/ index.html – ресурс для системных администраторов и сообщества. На этом сайте можно встретить множество полезных советов или примеров настройки – «How To». 4. http://www.opensolaris.org. 5. http://www.opennet.ru/mp/solaris – раздел opennet.ru, посвященный Solaris. Где, кроме всего прочего, можно найти подборку полезных ссылок на русском языке. 6. http://ru.wikipedia.org. 7. http://playground.sun.com/1275 – домашняя страница OpenBoot.

67


администрирование

Построение отказоустойчивой системы с помощью Oracle Physical Standby

Сергей Косько Развернув информационную систему на базе СУБД Oracle и организовав надёжную стратегию резервного копирования-восстановления, можно приступать к производственной эксплуатации системы. В случае аварии возможно будет восстановить данные на требуемый момент времени. Но что делать, если допустимое время простоя не должно превышать нескольких минут? Тогда не обойтись без различных способов дублирования данных в режиме реального времени. 68


администрирование

О

дин из вариантов такой реплика- передаётся с помощью данных, запиции можно реализовать с помо- сываемых процессом LGWR. В режищью специальной базы данных ме максимальной производительносOracle Standby. Её можно применять ти возможна передача изменений как совместно с обычным резервным ко- LGWR, так и ARCn. пированием. Режим Standby DB обесВ случае необходимости такая база печивает опция Data Guard базы дан- может быть в короткий срок активироных Oracle. Конфигурация Data Guard вана в качестве производственной. Поскольку БД Logical Standby не явсостоит из одной производственной и одной или более резервных баз дан- ляется точной копией основной баных standby, которые находятся в осо- зы и не поддерживает некоторые тибом режиме, предусматривающем не- пы данных, SQL-команды, имеет трепрерывный приём и применение потока бования по обеспечению уникальносизменений от производственной базы. ти строк в таблицах [4], рассмотрим Изменения передаются по универсаль- реализацию именно Physical Standby ной сети между разнесёнными геогра- DB. Мне кажется, что использовать БД фически серверами средствами Oracle Logical Standby лучше не как резервNet [1]. Упрощённую схему взаимодейс- ную копию, а в качестве базы для оттвия смотрите на рисунке. чётов. Выберем для работы основВ зависимости от конкретных тре- ной и резервной баз следующие набований по времени восстановления стройки: производственная база раи допустимой потери данных при ава- ботает в режиме maximum availability, рии (recovery time objective, recovery переданные изменения применяются point objective [2]). Возможны различ- резервной базой в режиме Real-Time ные сценарии реализации: Apply Redo. Для такого режима рабоn Physical standby DB – резервная ты инициатором передачи информабаза данных является точной фи- ции об изменениях выступает как раз зической копией основной, нахо- процесс LGWR. Разница между режидится в монтированном состоянии мами защиты заключается в том, что в и при этом переносится поток redo- режиме maximum protection транзакция информации. фиксируется только тогда, когда заn Logical standby DB – резервная ба- пись произведена и в локальные журза данных не является точной копи- налы, и удалённо, в случае невозможей основной, открыта в режиме чте- ности удалённой записи база данных ния–записи и при этом переносит- останавливается, а в режиме maximum ся поток SQL-команд. performance для продолжения работы достаточно только локальной записи, Конфигурация Oracle Data Guard и основная БД продолжает свою рабоможет находиться в трёх режимах за- ту, даже если связь с резервной базой щиты: максимальной производитель- отсутствует. ности (maximum performance), макРежим maximum availability предсимальной доступности (maximum ставляет компромиссный вариант, пеavailability) или максимальной защи- реключаясь между двумя режимами ты (maximum protection) [3]. Измене- автоматически. Если связь работания передаются копированием журна- ет без ошибок, передача происходит лов базы данных, текущих или архив- синхронно, если произошел сбой, авных. Их запись осуществляется двумя томатически осуществляется переход процессами LGWR или ARCn. Процесс в менее строгий режим. После устраLGWR ведёт запись активных журна- нения сбоев режим максимальной залов, дополнительные настройки вы- щиты восстанавливается [5]. нуждают его передавать изменения на Что необходимо для создания тесрезервный сервер с помощью так на- товой среды: зываемых standby redo log-файлов. n Два сервера одинаковой архитекПроцесс ARCn переносит обычные артуры, они могут отличаться по колихивные журналы, дополнительные начеству процессоров, памяти, дисстройки вынуждают его передавать их ков, релизом операционной систеещё и на удалённый сервер. Если вымы и т. п. Пусть сервер primary DB браны режимы максимальных доступбудет называться Poltava, а сервер standby – Fastiv. ности или защиты, поток изменений

№7, июль 2007

Структура Oracle Data Guard

n Режим базы данных должен быть ARCHIVELOG.

n Необходимо использовать программное обеспечение Oracle Server версии Enterprize Edition. В тестах будем использовать версию Oracle10.2 EE for Solaris.

Подготовка рабочей конфигурации Итак, у нас имеется работающая производственная (primary) база данных Oracle, расположенная на сервере Poltava, и нам необходимо создать резервную базу standby на сервере Fastiv. Необходимо подготовить конфигурационные файлы и сделать дополнительные настройки. Пусть имя базы будет «TST», присвоим для производственной primaryбазы значение ORACLE_SID=ORCL, для standby – DB ORACLE_SID=ORCL1. Файлы primary DB находятся в каталоге /tstb/ORCL, файлы standby DB – в каталоге /tstb/ORCL1. Для работы БД standby присваивать различные значения переменной ORACLE_SID для окружения основной и резервной баз данных необходимости нет, но это позволяет сделать так, чтобы файлы двух баз не накладывались друг на друга. Это позволяет перемещать базы между серверами, временно или в тестовых целях совмещать их на одном и том же сервере, имеющем два сетевых адресса (poltava и fastiv). Необходимо выполнить следующие действия: Вк лючим режим force logging на производственной системе для принудительной записи в журналы БД информации, даже для так называемых операций Nologging:

69


администрирование SQL>ALTER DATABASE FORCE LOGGING;

Создадим файлы standby redo log. Они нужны только для работы БД standby, но мы создадим их и на primary, и на standby, в случае переключения ролей между базами не будет необходимости в их создании. Файлы standby redo необходимо создать не меньшего размера, чем online redo log, и в количестве n+1 от количества redo group (cм. листинг 1). Листинг 1. Добавление файлов Standby Redo #!/bin/sh # sqlplus "/ as sysdba" <<EOF ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ↵ '/tstb/ORCL/redo01.stb' SIZE 100M REUSE; ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ↵ '/tstb/ORCL/redo02.stb' SIZE 100M REUSE; ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ↵ '/tstb/ORCL/redo03.stb' SIZE 100M REUSE; ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ↵ '/tstb/ORCL/redo04.stb' SIZE 100M REUSE; exit EOF

Установим параметры в файлах параметров init.ora/spfile. ora для primary и standby (см. листинг 2). Листинг 2. Список параметров файла init.ora/spfile.ora *.audit_file_dest='/ora/admin/ORCL/adump' *.background_dump_dest='/ora/admin/ORCL/bdump' *.control_files='/tstb/ORCL/control01.ctl', ↵ '/tstb/ORCL/control02.ctl', ↵ '/tstb/ORCL/control03.ctl' *.core_dump_dest='/ora/admin/ORCL/cdump' *.db_name='TST' *.log_archive_format='log_%t_%s_%r.dbf' *.remote_login_passwordfile='EXCLUSIVE' *.STANDBY_FILE_MANAGEMENT=AUTO *.DB_UNIQUE_NAME=poltava *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(poltava,fastiv)' *.LOG_ARCHIVE_DEST_1='LOCATION=/tstb/log1/ ↵ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) ↵ DB_UNIQUE_NAME=poltava' *.LOG_ARCHIVE_DEST_2='SERVICE=fastiv LGWR SYNC AFFIRM ↵ VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) ↵ DB_UNIQUE_NAME=fastiv' *.LOG_ARCHIVE_DEST_STATE_1=ENABLE *.LOG_ARCHIVE_DEST_STATE_2=ENABLE *.FAL_SERVER=poltava *.FAL_CLIENT=fastiv *.STANDBY_ARCHIVE_DEST=/tstb/log1/ *.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE *.audit_file_dest='/ora/admin/ORCL1/adump' *.background_dump_dest='/ora/admin/ORCL1/bdump' *.control_files='/tstb/ORCL1/control01.ctl', ↵ '/tstb/ORCL1/control02.ctl', ↵ '/tstb/ORCL1/control03.ctl' *.core_dump_dest='/ora/admin/ORCL1/cdump' *.db_name='TST' *.log_archive_format='log_%t_%s_%r.dbf' *.user_dump_dest='/ora/admin/ORCL1/udump' *.STANDBY_FILE_MANAGEMENT=AUTO *.DB_UNIQUE_NAME=fastiv *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(poltava,fastiv)' *.LOG_ARCHIVE_DEST_1='LOCATION=/tstb/log/ ↵ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) ↵ DB_UNIQUE_NAME=fastiv' *.LOG_ARCHIVE_DEST_2='SERVICE=poltava LGWR SYNC AFFIRM ↵ VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) ↵ DB_UNIQUE_NAME=poltava' *.LOG_ARCHIVE_DEST_STATE_1=ENABLE *.LOG_ARCHIVE_DEST_STATE_2=ENABLE *.FAL_SERVER=poltava *.FAL_CLIENT=fastiv *.STANDBY_ARCHIVE_DEST=/tstb/log/

70

*.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE *.DB_FILE_NAME_CONVERT=('/tstb/ORCL','/tstb/ORCL1') *.LOG_FILE_NAME_CONVERT=('/tstb/ORCL','/tstb/ORCL1')

Настроим Oracle Net для сетевых адресов Poltava и Fastiv. Пример настроек файлов listener.ora и tnsnames.ora приведены в листинге 3. Листинг 3. Настройки Oracle Net # listener.ora Network Configuration File: # /ora/oracle10/network/admin/listener.ora # Generated by Oracle configuration tools. LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0) ↵ (PORT = 1525)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = TST) (ORACLE_HOME = /ora/oracle10) (SID_NAME = ORCL) ) (SID_DESC = (GLOBAL_DBNAME = TST) (ORACLE_HOME = /ora/oracle10) (SID_NAME = ORCL1) ) ) # tnsnames.ora Network Configuration File: # /ora/oracle10/network/admin/tnsnames.ora # Generated by Oracle configuration tools. Poltava = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = poltava) ↵ (PORT = 1525)) ) (CONNECT_DATA = (SID = ORCL) ) ) Fastiv = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = fastiv) ↵ (PORT = 1525)) ) (CONNECT_DATA = (SID = ORCL1) ) )

Создание резервной БД standby Создадим резервные копии базы данных и файла паролей и перенесем скопированные файлы на резервный сервер Fastiv. Поскольку значения ORACLE_SID для основной и резервной баз отличаются, файлы паролей тоже будут иметь разные имена, например, orapwORCL и orapwORCL1. Создадим standby control file и скопируем его на сервер standby в местоположение, указанное в файле параметров базы данных standby: SQL>ALTER DATABASE CREATE STANDBY CONTROLFILE AS ↵ '/tmp/standby.ctl';


администрирование Переключим основную базу данных в режим maximum availability следующей командой: SQL>STARTUP MOUNT; SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE ↵ AVAILABILITY;

Базы данных готовы к работе. Теперь обе базы данных можно запускать.

Операции с БД во время работы Во время работы необходимо выполнять определённые действия – пуск, остановка, открытие для чтения, регистрация пропущенных логов, активация резервной базы (failover), обмен статусом (switchover). Рассмотрим эти операции: Скрипт stbstart отвечает за старт БД standby в режиме real-time apply. Остановку БД standby обеспечивает скрипт stbshut (см. листинг 4). Листинг 4. Пуск и остановка БД Physical Standby #!/bin/sh # sqlplus "/ as sysdba" << EOF startup nomount; alter database mount standby database ; ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING ↵ CURRENT LOGFILE DISCONNECT FROM SESSION; exit EOF #!/bin/sh # sqlplus "/ as sysdba" << EOF ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; SHUTDOWN IMMEDIATE; exit EOF

Как можно видеть в скрипте, для переключения ролей необходимо иметь доступ к каждой из баз данных, участвующих в операции. Листинг 6. Обмена ролями между базами Poltava и Fastiv #!/bin/sh # sqlplus "/ as sysdba" <<EOF spool switchover.log REM connect primary connect sys/manager@poltava as sysdba column SWITCHOVER_STATUS format A20 heading ↵ 'Switchover status|primary' SELECT SWITCHOVER_STATUS FROM V\$DATABASE; column DATABASE_ROLE format A20 heading ↵ 'Role before|switchover' select DATABASE_ROLE from V\$DATABASE; ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY; SHUTDOWN IMMEDIATE; STARTUP MOUNT; column DATABASE_ROLE format A20 heading ↵ 'Role after|switchover' select DATABASE_ROLE from V\$DATABASE; REM connect standby db on redo apply mode connect sys/manager@fastiv as sysdba column SWITCHOVER_STATUS format A20 heading ↵ 'Switchover status|standby' SELECT SWITCHOVER_STATUS FROM V\$DATABASE; column DATABASE_ROLE format A20 heading ↵ 'Role before|switchover' select DATABASE_ROLE from V\$DATABASE; ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; ALTER DATABASE OPEN; REM if in read only, do not open - restart REM SHUTDOWN IMMEDIATE; REM STARTUP; column DATABASE_ROLE format A20 heading ↵ 'Role after|switchover' select DATABASE_ROLE from V\$DATABASE; exit EOF

Failover – cкрипт, активирующий резервную базу в случае аварии на базе primary. Поскольку резервной базы больше нет, перед активацией резервной базы её следует переПроверим механизм передачи изменений переключе- вести в режим maximum performance (см. листинг 7). нием журналов. На primary: SQL>ALTER SYSTEM SWITCH LOGFILE;

на standby: SQL> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS ↵ FROM V$STANDBY_LOG;

Скрипт stbreadonly отвечает за запуск БД standby в режиме read-only (см. листинг 5). Доставка Redo в этом случае продолжается, однако изменения будут отложены до выхода из этого режима. Листинг 5. Запуск БД standby в режиме read-only #!/bin/sh # sqlplus "/ as sysdba" << EOF spool readonly.log ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; alter database open read only; exit EOF

Switchover – скрипт для смены ролей между базами данных. Необходимо, чтобы БД primary была открыта, а standby была в режиме mount или recover (см. листинг 6).

№7, июль 2007

SQL>ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE ↵ PERFORMANCE;

Регистрация пропущенных логов наглядно показана в листинге 8. Листинг 7. Активация резервной базы данных в случае аварии #!/bin/sh # sqlplus "/ as sysdba" <<EOF spool failover.log column DATABASE_ROLE format A15 heading ↵ 'Role before|switchover' select DATABASE_ROLE from V\$DATABASE; ALTER DATABASE RECOVER MANAGED STANDBY DATABASE ↵ FINISH FORCE; ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE ↵ PERFORMANCE; ALTER DATABASE OPEN; column DATABASE_ROLE format A15 heading ↵ 'Role after|switchover' select DATABASE_ROLE from V\$DATABASE; exit EOF Листинг 8. Определение и разрешение вручную пропусков передачи журналов SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# ↵ FROM V$ARCHIVE_GAP;

71


администрирование THREAD# ---------1

LOW_SEQUENCE# ------------90

HIGH_SEQUENCE# -------------92

SQL>ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';

Автоматизация мониторинга работы Поскольку БД primary находится в режиме maximum availability, то в случае остановки резервного сервера основная БД продолжит свою работу. Между состоянием primary и standby образуется разрыв. Для обнаружения и устранения поломки потребуется время, в течение которого основная база данных не резервируется. В этот момент, в случае повторной аварии уже на основной базе данных, возможна потеря данных. Чтобы своевременно обнаруживать и устранять подобные ситуации, необходимо автоматизировать процесс наблюдения за работой обеих БД. Листинг 9. Скрипт, выполняющий поиск ошибок в файле alert.log #!/bin/sh # if [ -f /tmp/memsg_no ] then exit ; fi HOST=`/bin/hostname` MYMAIL="sergkosko@ua.fm" FILESLIST=`ls -R /ora/admin/*/bdump/*.log` for i in ${FILESLIST} do filename1=`basename ${i}` dir1=`dirname ${i}|sed 's/\/ora\/admin\///g s/\/bdump//g'` MSG=`/usr/local/bin/fetchlog -F 1:100:1000:s ${i} ↵ /var/adm/${filename1}.${dir1}` if [ $? -gt 0 ] then MSG1=`echo "${MSG}" | egrep -i "ora-"` if [ -n "$MSG1" ] then echo "\n${HOST}:${filename1}:${MSG1}\n"| /bin/mail ↵ ${MYMAIL} fi fi done

Это можно сделать, например, с помощью пакета fetchlog [6]. На базе этого программного обеспечения создан скрипт fetchalert (см. листинг 9), который можно запускать с помощью демона crond: testcase$EDITOR=vi;export EDITOR testcase$crontab -e testcase$0,15,30,45 * * * * /usr/local/bin/fetchalert ↵ >/dev/null 2>&1

72

Выводы Предложенная схема проста и не требует специального аппаратного обеспечения для своей реализации, однако имеет и недостатки: n Один из серверов находится в пассивном состоянии и не обслуживает запросы пользователей. n Если поток транзакций на БД primary будет слишком большой, это создаст дополнительную нагрузку из‑за репликации в общей сети, к которой подключены сервера. n В данной конфигурации не предусмотрено специальных программно-аппаратных средств, контролирующих состояние системы-партнёра, наподобие тех, что применяются при построении, например, кластерных систем. В этом случае при возникновении сбоя, скажем, разрыва сетевого соединения, серверы не смогут однозначно определить источник проблем. В этом случае необходимо вмешательство системного администратора для принятия решения о переключении на резервный сервер. Время, необходимое человеку для принятия такого решения, следует учитывать при оценке общего времени восстановления работоспособности системы после сбоя наряду с длительностью самой процедуры переключения. Но эти факторы могут и не оказать серьёзного влияния на работу системы, поскольку современные сетевые технологии позволяют передавать большие объёмы данных на значительные расстояния, а в качестве резервного может использоваться сервер меньшей мощности. Удачи! 1. http://download-uk.oracle.com/docs/cd/B19306_01/server.102/ b14239/concepts.htm#g1049956 – механизм работы Oracle Data Guard. 2. http://download-uk.oracle.com/docs/cd/B19306_01/server.102/ b14210/hadesign.htm#i1006243 – понятие RTO и RPO. 3. http://download-uk.oracle.com/docs/cd/B19306_01/server.102/ b14239/log_transport.htm#i1179318 – режимы защиты Oracle Data Guard. 4. http://download-uk.oracle.com/docs/cd/B19306_01/server.102/ b1423 9/c reate _ l s.ht m#i76 6 4 6 – о г р а н ич е н и е Lo gi c al Standby DB. 5. http://download-uk.oracle.com/docs/cd/B19306_01/server.102/ b14239/scenarios.htm#i1008082 – различные сценарии реализации Oracle Data Guard. 6. http://sourceforge.net/projects/fetchlog – проект fetchlog.


bugtraq Несколько уязвимостей в Microsoft Windows Active Directory Программа: Microsoft Windows 2000 Advanced Server, Microsoft Windows 2000 Datacenter Server, Microsoft Windows 2000 Server, Microsoft Windows Server 2003 Datacenter Edition, Microsoft Windows Server 2003 Enterprise Edition, Microsoft Windows Server 2003 Standard Edition, Microsoft Windows Server 2003 Web Edition, Microsoft Windows Storage Server 2003. Опасность: Средняя. Описание: 1. Уязвимость существует из-за ошибки при обработке количества конвертируемых атрибутов в LDAP-запросах. Удаленный пользователь может с помощью специально сформированного LDAP-запроса вызвать отказ в обслуживании или выполнить произвольный код на целевой системе. Для успешной эксплуатации уязвимости на Windows Server 2003 требуется валидная учетная запись. 2. Уязвимость существует из-за ошибки при обработке LDAP-запросов. Удаленный пользователь может с помощью специально сформированного LDAP-запроса временно остановить работу службы. URL производителя: www.microsoft.com. Решение: Установите исправление с сайта производителя.

Выполнение произвольного кода в Microsoft IIS Программа: Microsoft Internet Information Services (IIS) 5.1, Microsoft Windows XP. Опасность: Средняя. Описание: Уязвимость существует из-за ошибки при обработке URL-запросов. Удаленный пользователь может с помощью специально сформированных URL-запросов к вебстранице, находящейся на уязвимом сервере, выполнить произвольный код на целевой системе. Пример: http://[host]/ [dir]/.dll/%01~0. Для удачной эксплуатации [dir] должна быть виртуальной директорией, сконфигурированной с привилегиями Scripts & Executables. URL производителя: www.microsoft.com. Решение: Установите исправление с сайта производителя.

Уязвимость при обработке RAR-архивов в ClamAV Программа: ClamAV версии до 0.91. Опасность: Средняя. Описание: Уязвимость существует из-за ошибки разыменования нулевого указателя в файле libclamav/unrar/unrarvm.c при обработке RAR-архивов. Удаленный пользователь может с помощью специально сформированного RAR-архива аварийно завершить работу приложения. URL производителя: www.clamav.net. Решение: Установите последнюю версию 0.91 с сайта производителя.

№7, июль 2007

Множественные уязвимости в Asterisk Программа: Asterisk Open Source 1.0.x, Asterisk Open Source 1.2.x версии до 1.2.22, Asterisk Open Source 1.4.x версии до 1.4.8, AsteriskNOW pre-release версии до beta7, Asterisk Business Edition A.x.x, Asterisk Business Edition B.x.x версии до B.2.2.1, Asterisk Appliance Developer Kit версии до 0.5.0, s800i 1.0.x версии до 1.0.2. Опасность: Высокая. Описание: 1. Уязвимость существует из-за ошибки проверки границ данных в реализации Asterisk STUN. Удаленный пользователь может с помощью специально сформированных RTP-пакетов аварийно завершить работу приложения. Для удачной эксплуатации уязвимости должны быть включены: chan_sip, chan_gtalk, chan_jingle, chan_h323, chan_mgcp или chan_skinny. 2. Уязвимость существует из-за ошибки проверки границ данных в драйвере канала Asterisk Skinny (chan_skinny). Удаленный пользователь может с помощью специально сформированных пакетов, содержащих в поле size данные о меньшем размере пакета, чем его реальный размер, аварийно завершить работу приложения. Для успешной эксплуатации уязвимости chan_skinny должен быть включен. 3. Ошибка разыменования нулевого указателя обнаружена в драйвере канала Asterisk IAX2 (chan_iax2). Удаленный пользователь может с помощью специально сформированных LGRQ- и LAGRP-фреймов вызвать отказ в обслуживании приложения. Для успешной эксплуатации уязвимости должен быть включен chan_iax. 4. Уязвимость существует из-за ошибки проверки границ данных в драйвере канала Asterisk IAX2 (chan_iax2) при обработке RTP-фреймов. Удаленный пользователь может послать слишком большой пейлоад (более 4096 байт) в голосовых или видеофреймах, вызвать переполнение стека и выполнить произвольный код на целевой системе. URL производителя: www.asterisk.org. Решение: Установите последнюю версию с сайта производителя.

Уязвимость при обработке CABи RAR‑архивов в продуктах Symantec Программа: Очень большой список (подробнее смотрите на сайте производителя). Опасность: Высокая. Описание: 1. Уязвимость существует из-за ошибки проверки границ данных в компоненте Symantec Decomposer при обработке CAB-архивов. Удаленный пользователь может с помощью специально сформированного CAB-архива выполнить произвольный код на целевой системе. 2. Уязвимость существует из-за ошибки проверки границ данных в компоненте Symantec Decomposer при обработке RAR-архивов. Удаленный пользователь может с помощью специально сформированного RAR-архива вызвать зацикливание приложения. URL производителя: www.symantec.com. Решение: Установите исправление с помощью LiveUpdate.

Составил Александр Антипов

73


человек номера

Капитан корабля

Наброски к документальному фильму о директоре Softline Игоре Боровикове.

П

омните, какие красивые доку- имени М.В. Ломоносова, проучивментальные фильмы об уче- шись в аспирантуре и проработав неных делали в советские вре- сколько лет в системе РАН, зарабомена? После демонстрации такого тав, между прочим, степень кандишедевра хотелось немедленно ид- дата физико-математических наук, ти в науку, делать открытия, ночами Игорь Павлович стал генеральным просиживая над химическими ретор- директором компании Softline. И все тами или за письменным столом, вы- говорит о том, что человек на своем водя сложнейшую математическую месте, что снимать о нем нужно совтеорему… Родись Игорь Боровиков сем другой фильм, в другом стиле… в другую эпоху, фильм бы сложили Так делают видеоклипы поп-групп: и о нем. Потому что наверняка бы он мчится по городу красивая машина, стал ученым с мировым именем, ака- в ней человек не расстается с сотодемиком. Но, получив диплом на ле- вым и одновременно что-то набирагендарном факультете ВМиК МГУ ет на клавиатуре суперсовременного

74

КПК… Он успевает быть везде, и время отступает перед ним. Но я бы все-таки рискнула снять об Игоре Боровикове кино в старых традициях. И вот вам наброски к этому «опусу».

Следующая станция – «Академическая» Недавно в воспоминаниях Натальи Кончаловской я прочитала рассказ о том, как она переводила на русский язык поэму «Мирей» французского поэта: «Пять лет ушло у меня на перевод Мистраля, из них два полных го-


человек номера да – на переделку первого варианта». Это сейчас понятно, что рынок сущест- чет брать студента с тройками. БольТак вдумчиво и неспешно и работают вует и он достаточно большой… Ес- шое внимание компании обращают обычно писатели, исследователи, но- ли бы мы, как большинство в то вре- на наличие того или иного сертификабелевские лауреаты. мя, начали продавать, перепродавать та производителя. Еще 4-5 лет назад Сменив профессию ученого на про- компьютеры, то проиграли бы. Сейчас молодой специалист чувствовал себя фессию, связанную с бизнесом, Игорь почти никого из бизнесменов, которые брошенным, сейчас на него большой Боровиков немного ностальгирует «гремели» в начале 90-х, не осталось спрос. Есть случаи, когда четверокурспо своему академическому прошлому. на рынке. Кто помнит фирму «Микро- ник выбирает между вакансиями с зарЭто проявляется в том, что Softline рас- дин», которая была крупнейшим пос- платой тысяча и две тысячи долларов. полагается на улице Губкина, что близ тавщиком всего «железа» в России? Выпускник технического вуза попадает столичной станции метро «Академи- Оказывается, заниматься понятным под плотную опеку компаний. Если моческая», в окружении научно-иссле- бизнесом не всегда выгодно, а риск- лодой специалист себя правильно подовательских институтов, и в том, нув вложиться в «непонятный», мож- зиционировал, выбрал востребованчто компания сразу после рождения но получить дивиденды. ную профессию, перспективы у него занялась программным обеспечением, И все-таки ностальгия по прошло- очень хорошие. связанным с научными исследования- му есть, не пропадает… Вот и проми (сайт для профессиональных поль- грамма Softline IT Graduate возникла Куда приводят мечты зователей Matlab (www.matlab.ru) и ма- не просто так. Компания Игоря Борови- Руководить успешной IT-компанитематический портал для студентов кова взялась быть посредником меж- ей можно по-разному: тихонечко, шаг (www.exponenta.ru)). ду студентами и выпускниками техни- за шагом, отстаивая каждый сантиНо о чем Боровиков точно не жале- ческих специальностей и крупнейши- метр рынка у конкурентов, или навоет – о смене жизненного ритма. И вот ми русскими, зарубежными компания- дя страх на коллег по цеху громкими почему: ми. Студенты получают место в штате акциями. – Ученый тратит сто процентов вре- престижной IT-фирмы – времени на решение одной задачи, дума- менное или даже постоянНадо хотеть, надо быть активным человеком. ет об одном. В бизнесе, наоборот, все ное, а компании решают кадвремя тратится на решение ста раз- ровую проблему. Фактически Что-то пытаться делать, не сидеть на месте. ных задач, и часто возникает необхо- Softline заменяет собой госуХодить по улице, открывать новые «двери», димость переключаться. дарство, которое давно отказаглядывать в новые отрасли. Быть внутрен– Вам этот ритм по душе? залось от принципа распрене подвижным человеком, не статичным. – Мне этот ритм подходит, пото- деления после окончания вуму что я внутренне активный человек, за. Игорь объясняет: мне нравится подвижность в жизни, – Хотелось бы делать полезные веСтратегия Игоря Боровикова таконравится, когда драйв присутствует. щи для страны в целом. Мы хотим, что- ва: «Развиваться и постоянно делать Кстати, активность Игорь Павло- бы студент, который выходит из вуза, что-то новое. Создать компанию, кович считает главным качеством, не- обладал не только фундаментальны- торая работает в Москве и просто заобходимым руководителю успешной ми знаниями, но имел и практический рабатывает деньги, – это не очень инкомпании: опыт работы с тем или иным програм- тересно. Если я что-то делаю – стара– Надо хотеть, надо быть активным мным обеспечением. юсь делать это лучше всех, занимать человеком. Что-то пытаться делать, – Компании соглашаются их брать? лидирующие позиции». Характер Боне сидеть на месте. Ходить по улице, – Соглашаются. Заинтересован- ровикова-человека оказался востреоткрывать новые «двери», заглядывать ность есть. бованным у Боровикова-директора. А что это за характер? 50% прагматизв новые отрасли. Быть внутренне под– Что их привлекает? вижным человеком, не статичным. – Гораздо лучше взять студента, ма, 50% романтизма, щепотка авантюСама компания возникла потому который хорошо учился, имеет серти- ризма, жгучая приправа – стремление что Игорь Боровиков достойно отве- фикат Microsoft или другой компании, к успеху, здоровый патриотизм и больно не имеет опыта, чем взять «опытно- шая ложка здравого смысла. Может тил на вызов времени. – Государство заявило фактичес- го» человека, но без сертификата. быть, рецепт не полон, но так мне вики: «Мы не очень интересуемся, как бу– Кто интереснее компаниям – вы- дится… Вас удивляет, почему я счидут существовать научные работни- пускник или студент? таю Игоря Боровикова романтиком? ки, на какую зарплату». Часть ученых – Студент последнего или предпос- Он сам признается: пошла торговать на рынок, другая ста- леднего курса. В свободное от учебы – Нельзя быть хорошим прагматила продавать «железо». Мне, так как я время он уже может работать в ком- ком без доли романтизма. Планы, кодо этого занимался абстрактной на- пании, там же молодые люди прохо- торые человек ставит перед собой, на первых порах – просто мечты… укой, захотелось заниматься програм- дят практику. мным обеспечением, потому что в этом – На что обращает внимание рукоКуда приводят мечты? В случае тоже была абстракция. Шел 1993 год, водство крупной компании? с Игорем Боровиковым к солидномало кто верил, что можно прода– Наиболее объективные показа- му факту – 24 офиса компании в Росвать лицензионное ПО в этой стране. тели – успехи в учебе. Никто не хо- сии и странах ближнего зарубежья,

№7, июль 2007

75


человек номера один в дальнем зарубежье – в Мон- честного консультанта. Если мы что- Боровикова-руководителя получился. голии. Причем развитие происходит то умеем делать, то делаем это хоро- А когда все гладко, кажется, что комне случайно, не анархично, а «плано- шо, если Softline чего-то не умеет, мы пания создает воздушные замки, строво» и последовательно. честно об этом скажем. ит нереальные планы. Однако все как – А если случается «про- нельзя более реально… Ведь не прикол»? думан же оборот 97,7 млн. долларов Развиваться и постоянно делать что-то но– Я всегда готов занять за 2006 год! И планы тоже почему-то вое. Создать компанию, которая работает сторону клиента. Если мы не воспринимаются как головокружев Москве и просто зарабатывает деньги, – чувствуем, что в чем-то вино- ние от успехов – к 2010 году быть предэто не очень интересно. Если что-то делать – ваты, что-то сделали не так, ставленными в 50 российских городах стараться делать это лучше всех, занимать вернем деньги клиенту, за- и в 20 городах СНГ, довести оборот платим штраф, полностью до 450-500 млн. долларов… лидирующие позиции. все финансовые риски возьВозникает только один вопрос – мем на себя. как вся эта благодать достигается, Боровиков точно знает, что дела– Вы так настраиваете своих со- в чем секрет, где, как говорят, «собает и зачем: трудников? ка зарыта»? Вытянуть эти секреты из – Географическое расширение – Да. Свои принципы я пытаюсь до- Игоря Боровикова непросто, он вообдля нас очень важно. Сейчас IT-услу- нести до уровня топ-менеджеров ком- ще не склонен слова бросать на ветер, ги, в частности, программное обес- пании, а они уже в той или иной фор- хотя если формулирует мысль, получапечение – не экзотика. Пользовате- ме доносят ниже. ется красиво. ли из Таджикистана, Владивостока – Вы можете определить ваш стиль – Компании все время нужно рене готовы ехать в Москву, чтобы ку- руководства? шать насущные задачи. Это ваше репить ПО, как раньше ездили за хо– Наверное, он основан на нравс- шение или корпоративное? рошими товарами. Наш клиент, по- твенных принципах. Мы, как компа– На стратегическом уровне – мое. купатель хочет получать наши услу- ния, стремимся быть справедливыми На уровне капитана корабля. Я решаю, ги, пользоваться сервисами рядом и честными по отношению и к сотруд- что мы плывем, условно говоря, в Амесо своим домом. И поэтому мы при- никам, и к нашим клиентам. рику. А вот как мы будем кидать уголь сутствуем во многих российских го– А что такое «справедливость»? в топку, как будем поднимать паруса – родах, практически во всех странах Игорь улыбается: это уровень директора по продажам, ближнего зарубежья. – Можно определить справедли- директора по персоналу, по маркетинГеографическая экспансия – это вость как отсутствие несправедливос- гу. Они и решают. еще не все. Игорь Боровиков не боит- ти. От противного. ся увеличивать направления деятельЭтот пассаж, признаться, снимает Сила примера ности своей компании. Но делает он напряжение, которое у меня было воз- Есть какая-то педагогическая нотэто разумно, логично, не разбрасыва- никло. Уж слишком идеальный образ ка в этом распределении обязанносясь по мелочам. – Сейчас у Softline три основных направления бизнеса. Первое – продажа программного обеспечения и лицензирование, второе – обучение и третье – консалтинг. Почему возникло два дополнительных направления? Софт – продукт, который освоить самостоятельно достаточно сложно. Нашим клиентам удобно, если в той же компании, где они покупают софт, можно и обучение пройти: как правильно установить Windows, как правильно построить систему информационной безопасности в компании и так далее. – А вам какое направление ближе? О чем волнуетесь как руководитель? – Я больше беспокоюсь о наших отношениях с клиентами, партнерами, поставщиками. Для меня это первично. Мне хотелось бы, чтобы клиенты воспринимали компанию Softline как

76


человек номера тей… И неудивительно, ведь Боровиков – отец троих детей. Дочка еще малышка, ей 4 года, среднему сыну 11 лет, а вот старший уже совсем взрослый парень – 22 года, закончил институт и занимается консалтингом. Вот такое воспитание… Только не подумайте, что Боровиков стремился, чтобы старший наследник непременно отправился по его стопам. Как ему после школы родители не навязывали свой выбор, отпустили, что называется, в свободное плавание, так и он своим детям не указывает, как жить: – Я пытаюсь их научить своему стилю жизни, который не передается словами, а впитывается, когда человек находится рядом. Скорее воспитывает общая атмосфера в семье, чем какие-то конкретные задачи, которые я ставлю перед детьми. Жизненный опыт нельзя передать в форме нравоучений. Невозможно прочи– Умею быстро говорить, – шутит Владимир Мирзоев. Очень нравятся тать лекцию и научить ребенка любить, ненавидеть… Только собствен- в ответ Боровиков. – Читаю с обычной выпускные спектакли, которые проскоростью. И память обычная. Не хотел ходят в театральных вузах – Щепкинным примером. Сила примера – классическое по- бы забивать свою память IT-технологи- ском, Щукинском училищах. Советую вам, сходите на выпускные спектакли, нятие, но не устаревшее. И неудиви- ями, версиями Windows, ценами. – Тогда у вас наверняка аналити- это интересно. Там вы увидите настотельно такое признание Игоря Павческие способности. ящий театр. Даже если актер играет ловича: – Да, умею просеивать, анализиро- самую незаметную роль, он настоль– Если бы была возможность детей учить в провинции, с удовольстви- вать информацию. 90% информации, ко выкладывается! Они меня заражаем отправил бы их туда. Обучение тре- которая на нас сваливается, на самом ют этой энергией. А от старого театра бует сосредоточенности на чем-то од- деле не нужна. Основная задача – вы- пахнет нафталином... – У меня еще один, совсем странном, а в Москве это сложно сделать. брать 10%. С интересом я узнала, что самая ный вопрос. У вас есть мечта? Вокруг тебя проносятся, как метеориДолгая пауза. Но интервью не преты, новые идеи, цели. Суета жизни за- сложная аналитика для Игоря Боровикова – это познание самого себя, само- рывается. Игорь Боровиков честен хватывает. Конечно, будничным, ежеднев- совершенствование. Как хотите, не по- и на этот раз: – Не хотел бы на него отвечать. Есным воспитанием занимается супруга хож он на бизнесмена. И между тем – Игоря, бизнес съедает львиную часть успешный деловой человек… Чудеса. ли кому-то говоришь о своей мечте, – Что вам помогает совершенство- она перестает ею быть. Человек живет времени. внутренней жизнью. Могу сказать точЗато на отдых Боровиковы тради- ваться? – Человек меняется во время об- но, у меня нет мечты заработать еще ционно ездят всей семьей. Зимой – в горы, летом – к морю. Только на от- щения с другими людьми. Я стара- миллион, еще двадцать миллионов. дыхе Игорь Павлович и успевает чи- юсь общаться с людьми, которые на- Это все равно, что мечтать купить сетать, заниматься спортом – сноубор- ходятся в разных социальных груп- бе новые ботинки. пах, на разных уровнях творческого И хотя журналисту хочется полудом, виндсерфингом. развития. Мне хотелось бы менять ве- чить ответы на все-все свои вопро– Что вы читаете? – Авторов, которые не очень извес- щи не только вокруг, но и внутри себя. сы, не могу не согласиться с директны широкой публике. Шведа Августа Человек закостеневает, приобретает тором Softline. Капитан корабля долСтриндберга, современного российс- имидж, вырабатывает для себя опре- жен держать мечты в секрете, до покого автора Юрия Мамлеева. Это на- деленные правила игры. Это сложно ры до времени. Ну а когда задуманное сбудется, появится повод опять блюдения за жизнью, поведением лю- преодолеть. – С какими творческими людьми вы поговорить… дей, зарисовки. Реальность, возведенобщаетесь, если не секрет? ная до уровня искусства. Текст: Оксана Родионова, – Хожу в театры. Есть режиссе– Владеете скорочтением? – пытафото: Владимир Лукин ры, которые мне нравятся. Например, юсь пошутить я.

№7, июль 2007

77


веб-программирование

Библиотека Prototype – ваш путь в Web 2.0

Кирилл Сухов Требования к веб-разработке постоянно растут. Если для какого-нибудь программиста примером идеального пользовательского интерфейса является сайт lib.ru, то обычный пользователь такой аскетизм скорее всего не оценит, и самое страшное – не оплатит. Однако работа, направленная на повышение удобства и практичности пользовательского интерфейса, зачастую отнимает много времени, которое хотелось бы потратить на разработку бизнес‑логики приложения. Разработчики настольных систем имеют в своём арсенале такие средства, как MFC, Gtk, Qt и другие библиотеки. Чем же может воспользоваться веб‑программист? 78


веб-программирование WEB 2.0 – маркетинг на марше? Если говорить откровенно, когда в мире веб-разработчиков случился некий «AJAX-бум», я был настроен довольно скептически. В чём, собственно, революция? В возможности направлять запрос к серверу и получать ответ без перезагрузки страницы? Но это и так уже было. Выучить четыре метода объекта XMLHttpRequest и стать разработчиком WEB 2.0? Звучит несерьёзно. Со временем мне пришлось поменять свою точку зрения. Я понял, что WEB 2.0 – это не только маркетинговый термин, это новый подход к веб-программированию, позволяющий рассматривать результат труда не как html-страницы, а как полноценные приложения. Впрочем, не будем на этом останавливаться, на эту тему уже сломано немало копий. Я просто хочу рассказать об инструменте, помогающем перейти к WEB 2.0 вполне безболезненно. Новый подход диктует новые требования, в частности, язык программирования JavaScript, который многие разработчики считали чем-то вторичным и не заслуживающим внимания, вышел на первый план. Библиотеки, облегчающие работу с ним, начали создаваться со времени его возникновения, но именно сейчас они как никогда актуальны. Я хочу рассказать о библиотеке, основное предназначении которой – обеспечить комфортную жизнь веб-разработчику, снабдить его новыми возможностями.

Знакомьтесь – Prototype Что собой представляет Prototype? Это свободно распространяемая JavaScript-библиотека, значительно облегчающая жизнь разработчика. Она написана Сэмом Стефенсоном (Sam Stephenson) и доступна по адресу http://prototype.conio.net. Последняя версия (на момент написания статьи) пронумерована как 1.5.1. Сама библиотека занимает всего 72 Кб и распространяется по свободной лицензии (MIT-style license). Её установка не вызывает проблем, просто поместите на вашу страничку тег: <script src=prototype.js></script>

и вся мощь библиотеки к вашим услугам. Что мы получим в результате? Совсем не набор компонентов или каких-либо «виджетов», а коллекцию объектов и их методов, из которых можно конструировать свои библиотеки и расширения. Prototype – это библиотека для построения собственных библиотек, именно поэтому она используется, например, в Ruby On Rails, Rico и других framework-средах.

Приятные мелочи С них обычно начинают описание библиотеки. Пусть они принципиально не важны, но очень удобны. Должен заметить, что к этому удобству, как и вообще ко всему хорошему, быстро привыкаешь. Прежде всего это упрощение синтаксиса обращения к DOM-элементам и их свойствам посредством функций $() и $F(). Первая из них является заменой привычной

№7, июль 2007

конструкции document.getElementById(), но имеет несколько больший функционал. Она может принимать в качестве аргумента как id элемента, так и сам элемент. Аргументов может быть более одного, и в этом случае функция возвращает массив элементов. allNodes = $("firstDiv", "secondDiv"); for(i = 0; i < allNodes.length; i++) { alert(allNodes[i].innerHTML); }

Функция $F(id) возвращает значение полей ввода, принимая аргументом идентификатор поля. Возможно, эта миссия покажется не очень принципиальной, но применение $() и $F() по крайней мере освобождают время для более глобальных задач. Кроме того, эта конструкция также может принимать в качестве аргумента не только идентификатор, но и сам DOM-элемент. Следующая функция из этой компании – document.get ElementsByClassName. Вообще использовать имя класса для получения DOM (HTML) элемента, приём неновый, но требующий некоторых телодвижений, вроде перебора всех подобных элементов, поиска нужного класса в сложной структуре документа. Теперь мы избавлены от этой нудной работы. Ниже представлен пример использования этой функции: <head> <script> document.getElementsByClassName('foo'); // -> [HTMLElement, HTMLElement] (div#one, div#two) document.getElementsByClassName('thud'); // -> [HTMLElement, HTMLElement, HTMLElement] ↵ (div#two, li#item_one, li#item_two); document.getElementsByClassName('thud', $('list')); // -> [HTMLElement, HTMLElement] (li#item_one, ↵ li#item_two) </script> </head> <body> <div id="one" class="foo">Single class name</div> <div id="two" class="foo bar thud">Multiple ↵ class names</div> <ul id="list"> <li id="item_one" class="thud">List item 1</li> <li>List item 2</li> <li id="item_two" class="thud">List item 3</li> </ul> </body>

Функция $A() представляет собой удобный конструктор массивов, преобразуя к этому типу данных любую коллекцию объектов, принимаемую в качестве аргумента. Функция $W() выполняет вполне банальную, но часто встречающуюся задачу – приведение строки к массиву. Тут всё просто: w('apples bananas kiwis') // возвращает массив ['apples', 'bananas', 'kiwis']

Функция $H() предназначена для работы с хэш-массивами. Она возвращает объект класса Hash и предоставляет методы для работы с ним. Прежде всего это Hash.merge() – добавляющий новые ключ/значение, each() – перебирающий все ключи/значения массива, а также методы toJSON и toQueryString, назначения которых вполне ясно по названиям.

79


веб-программирование Ниже представлен пример работы функции $H и объВ данном случае варианты перебора касаются различий браузеров в интерпретации DOM-модели, но аналогичекта Prototype.Hash. ный механизм может быть использован в обработке всех var h = $H({ name: 'Prototype', version: 1.5 }); возможных ошибок. var h = new Hash({ ... }); h.keys().sort().join(', ') h.merge({ version: '1.5 final', author: 'Sam Stephenson' }); h.each(function(pair) { alert(pair.key + ' = "' + pair.value + '"'); }); $H({ action: 'ship', order_id: 123, fees: ↵ ['fee1', 'fee2'] }).toQueryString()

Расширение объектов JavaScript

Основное предназначение Prototype – расширение возможностей для javascript-разработчика. Для этой благой цели стандартные объекты JavaScript обрели новые возКроме того, у объекта Hach есть исключительно полез- можности (если быть формальным – методы). Полный спиный метод inspect(), позволяющий получить в браузере «чи- сок расширений можно получить, ознакомившись с документацией по библиотеке. Обозначим только некототабельное» представление хэш-массива. К приятным мелочам (хотя это, наверное, уже нечто по рые из них. Прежде всего «тюнингу» подвергся объект Event. С точкрупнее) я бы отнёс ещё и целый объект – PeriodicalExecuter, предоставляющий возможность периодического вызова ки зрения скептика, конечно, использование Prototype заданной функции через указанный интервал. Его «родс- не добавляет каких-либо новых, принципиальных возтвенник» – объект Ajax.PeriodicalUpdater выполняет такие можностей в работу с этим объектом, но, безусловно, деже действия, с запросом к серверу, но об этом – позже. лает удобными и самое главное кроссбраузерными уже существующие. Попытка за попыткой Например, метод observe(element, name, observer, Вообще процесс кроссбраузерной JavaScript-разработки useCapture) добавляет обработчик события DOM-элементу, всегда представлял некоторые трудности по причине неод- с учётом различий объектной модели браузеров. нозначной реакции разных обозревателей на ошибки сценаМетод stopObserving(element, name, observer, useCapture) риев. В Prototype предусмотрен объект (функция) Try.these(), убирает это событие. Фактически эти методы дают рекоторый сильно облегчает эту и другие задачи. Фактически ализацию паттерна проектирования «Обозреватель» он исполняет функции паттерна проектирования «Фасад». в JavaScriot. Он перебирает возможные варианты обработки и возвраМетод findElement(event, tagName) находит в дереве щает результат того обработчика, который оказался успеш- DOM‑объектов первый тег, совпадающий с параметром ным. Пример его использования: tagName, начиная с объекта, породившего событие. Метод stop(event) останавливает распространение со<script> бытия. function getXmlNodeValue(xmlNode){ Кроме этого, расширенный объект Event теперь име return Try.these( function() {return xmlNode.text;}, ет свойства, соответствующие нажатию специальных кла function() {return xmlNode.textContent;) виш (таких, как <Tab> или <Esc>), а также статические ме ); } тоды обработки нажатия кнопки мыши и положения кур</script> сора на странице. К классу Object были применены не совсем обычные расширения. Во-первых, это метод extend(object), позволяющий реализовать наследование (если, конечно, для объектов JavaScript этот термин вообще применим), а вовторых, тот же метод с двумя аргументами – extend(destination, source), позволяющий копировать все свойства и методы объекта source в объект destination). Впрочем, манипуляции с объектами (не слишком укладывающимися в классическую концепцию ООП), тема для отдельного разговора. Класс Function дополнен методами, позволяющими связать данный экземпляр функции с объектами bind(object) и bindAsEventListener(object). Не остался без внимания и класс String. Он дополнен методами, широко распространёнными в веб-програмРисунок 1. Компонент Rico.Accordion. Вкладки на горизонтальной панели раскрывают мировании, но применяемыми на стонезависимое содержимое

80


веб-программирование роне сервера. Это escapeHTML()/unescapeHTML(), отвечающие за экранирование и восстановление HTML-разметки, и stripTags(), просто убирающим любые HTML- и XML-теги.

Обработка форм Для облегчения этой часто встречающейся задачи в библиотеке предусмотрен объект Form с рядом полезных методов: Form.getElements(form) возвращает массив значений элементов формы вне зависимости от их типа: llNodes = Form.getElements("myform"); for(i = 0; i < allNodes.length; i++) { //операции над каждым элементом }

getInputs(form [, typeName [, name]]) возвращает массив значений элементов Input, причём с помощью необязательных элементов можно уточнить тип и имя элемента. Функционал методов findFirstElement(form), focusFirstElement(form), а также disable(form) и reset(form) вполне ясен из их названий. Замечательный метод Form.serialize() помогает передавать данные на сервер, возвращая элементы формы в виде строки, параметров HTTP-запроса: 'field1=value1&field2=value2&field3=value3'

что очень удобно как при отправке сложных форм, так и для работы с AJAX. Расширения класса Form, такие как класс Form.Element, Form.Observer, предоставляют дополнительные возможности для работы, но о них особый разговор.

Работа с JSON JSON (JavaScript Object Notation), формат, который в настоящее время стал одним из стандартов обмена информацией между объектами javascript и в особенности в клиент-серверном взаимодействии. В некоторых случаях он удобней XML и гораздо экономичней, а следовательно – быстрее в работе. В этом формате данные определяются коллекцией пар ключ/значение, которые можно представить, как хэш или ассоциативный массив. Ниже приведён пример представления данных в нотации JSON. По-моему, довольно удобно и читаемо: var g_books = [ { id: 1, name: 'Code Generation in Action', first: 'Jack', last: 'Herrington', publisher: 'Manning' }, { id: 2, name: 'PHP Hacks', first: 'Jack', last: 'Herrington', publisher: 'O\'Reilly' }, { id: 3,

№7, июль 2007

name: 'Podcasting Hacks', first: 'Jack', last: 'Herrington', publisher: 'O\'Reilly' } ];

Для работы с этим форматом Prototype даёт нам не только функции приведения к данной нотации хэш-массива (объект Hash) или получение/передачу в JSON обычной строки (объект String). В библиотеке присутствует очень полезная функция evalJSON (разумеется, объекта String), облегчающая работу с ответом сервера, сгенерированным в этой нотации. Пример: var person = '{ "name": "Violet", "occupation": ↵ "character" }'.evalJSON(); person.name; person = 'grabUserPassword()'.evalJSON(true); person = '/*-secure-\n{"name": "Violet", "occupation": ↵ "character"}\n*/'.evalJSON() person.name;

Соответственно существует и обратное преобразование. Это метод unfilterJSON. Пример его работы: '/*-secure-\n{"name": "Violet", "occupation": ↵ "character", "age": 25}\n*/'.unfilterJSON() // получаем на выходе: // '{"name": "Violet", "occupation": "character", "age": 25}'

С помощью расширения стандартного класса Object можно легко автоматизировать приведение к данной нотации: var Person = Class.create(); Person.prototype = { initialize: function(name, age) { this.name = name; this.age = age; },

Рисунок 2. Компонент Rico.Color. Цвет бара меняется в зависимости от введённых цифр

81


веб-программирование toJSON: function() { return ('My name is ' + this.name + ' and I am ' + this.age + ' years old.').toJSON(); }

}; var john = new Person('John', 49); Object.toJSON(john);

А как же Ajax? Возможно, сейчас для многих разработчиков – это основная причина использования JavaScript-библиотек. Основная проблема обычно заключается в унификации запросов и получении ответов сервера, а также преодолении различий между браузерами. Для работы с объектом XMLHttpRequest в Prototype существует объект Ajax, классы, наследуемые от которого стоит подробно рассмотреть. В первую очередь это класс Ajax.Base, служащий основой для других классов, определённых в Ajax. Основным инструментом для формирования запросов к серверу является его наследник – класс Ajax.Request. Пример его использования: <script> function someAjax($url) { var myAjax = new Ajax.Request( url, {method: 'get', parameters: { type:'care', name:'volga’ }, onLoaded:function(){ alert(‘test’) } onComplete: someFunction} }

<div id <br><textarea id="tagert" cols=100 rows=10 ></textarea> <input type=button onlick="somrAjax">

Ничего не понятно? Сейчас разберёмся. Аргументы, передаваемые Ajax.Request, обозначены в нотации JSON (JavaScript Object Notation). Первый параметр, который получает при создании Ajax.Request, это URL ресурса, к которому идёт запрос. Второй – это параметры запроса, записанные в вышеупомянутой нотации JSON (это только один вариант, они могут быть переданы методу и в качестве строки, сформированной как URL). Третий параметр, в данном случае функция onLoaded(), выполняемая при получении ответа сервера объекта, но на её месте мог быть и массив нескольких обработчиков с функциями, заданными пользователем: var myOpts = {onComplete: showResponse, onLoaded: registerLoaded};

Остальные параметры этого метода:

n requestHeader – список HTTP-заголовков в виде ассоциативного массива, где ключами выступают названия заголовков. n onSuccess/onFilure – значениями этих полей являются пользовательские функции, выполняемые при успешном или неудачном выполнении запроса. n Asynchronous – булевый индикатор асинхронности AJAX‑запроса. По умолчанию имеет значение TRUE. n postBody – содержит данные, передаваемые в теле HTTP‑запроса.

Остальные ещё более интересные возможности содержатся в следующем классе, наследуемом от Ajax.Request, это класс Ajax.Udapter, который решает задачу по вставке function someFunction (req) { возвращённого сервером HTML-кода в заданный DOM-объ $('tagert').value = req.responseText; ект. Ajax.Udapter очень удобен для динамического измене } </script> ния содержания страницы. В дополнение к свойствам родительского класса он содержит и некоторые дополнительные. Во-первых, это insertion (Object, String) – функция, которая вызывается для вставки полученного текста в объект, вызываемая с двумя аргументами – объект, в который будет производиться вставка текста и непосредственно сам текст, полученный в результате запроса. Второе свойство – evalScripts определяет, будут ли выполняться скрипты, полученные в HTTP- ответе. Конструктор этого объекта – Ajax. Updater (container, url, options) содержит новый аргумент – container, значение которого является идентификатором DOM-элемента, в который будет произведена вставка текста, полученного в результате запроса. Ajax.PeriodicalUpdater, наследуемый от Ajax.Base, идёт ещё дальРисунок 3. Главная страница сайта библиотеки script.aculo.us

82

);


веб-программирование ше. В вызове его конструктора используется аргумент container, являющийся идентификатором, или самим DOM-элементом, принимающим текст ответа на запрос. Кроме того, такие его методы, как start(), stop(), updateComplete(), и другие позволяют контролировать выполнение периодических задач в процессе исполнения запроса. Для «низкоуровневой» работы с XMLHttpRequest в базовом классе Ajax предусмотрен метод getTransport(), который просто возвращает объект XMLHttpRequest. Разумеется, учитывая особенности используемого браузера.

Позиционирование Размещать или перемещать в некотором заданном пространстве DOM Рисунок 4. Окошки, созданные с помощью библиотеки Prototype window (в частности HTML) элементы, уже давно вполне решаемая задача. Проблемы, правда, присутс- Effect.Pulsate(), заставляющих видимый объект вибриротвуют – это опять пресловутое различие между браузе- вать, или Effect.Puff(), представляющий собой красивый рами и дикое количество кода (зачастую немотивирован- способ растворить объект в воздухе. Полезна также функно повторяющегося), используемого в целях реализации ция Parallel(), позволяющая одновременную работу нескольсложного позиционирования. Для решения этих проблем ких визуальных эффектов. Жалко, что страница журнала библиотека предлагает объект Position. Его методы позво- не поддерживает DOM-модель и не даёт возможности проляют определить смещение любого DOM-элемента с учё- иллюстрировать вышесказанное, поэтому рекомендую потом прокрутки и смещения родительских элементов. С по- сетить сайт этого проекта. Можно упомянуть ещё небольшую библиотеку Prototype зиционированием тесно связан класс Insertion, управляющий вставкой текста или DOM-элемента, в HTML-страни- window. Это дополнительный класс, позволяющий создацу. Названия его методов – After(), Before(), Bottom(), Top() вать симпатичные окошки, которые вы видите на рис. 4 и некоторые другие объекты (модальные диалоги, динауже говорят об их назначении. мические визуальные эффекты). При разработке приложения для получения подобных окон нужно написать всеБиблиотеки на основе Prototype Как уже говорилось, Prototype – это скорее не продукт го две-три строки кода: для конечного пользователя, а framework для построеvar win = new Window({className: "spread", title: ↵ ния JavaScript-библиотек. Перечислю лишь некоторые "Ruby on Rails", top:70, left:100, width:300, ↵ из них. Библиотека Rico (http://openrico.org) предназначе height:200, url: "http://www.rubyonrails.org/", ↵ showEffectOptions: {duration:1.5}}) win.show(); на для построения сложных визуальных и анимационных эффектов. На демо-странице проекта можно познакомитьНаконец, Prototype используют такие мощные framework, ся и «поиграться» с её основными объектами. На рис. 1 показан компонент Rico.Accordion. Каждая горизонталь- как Ruby On The Rails и Symfony (популярный web application ная панель раскрывает или закрывает свою вкладку с не- framework, для PHP5 http://www.symfony-project.com). зависимым содержимым. Фактически он помещает набор DOM-элементов в заданную разработчиками область Что дальше? с возможностью независимого доступа. На рис. 2 – ком- Честно говоря, описав возможности библиотеки (или понент Rico.Color. Его работа, мне кажется, в пояснени- framework) Prototype, я совсем «забыл» сказать о самом главном – возможности создания собственных полноценях не нуждается. Библиотека script.aculo.us (http://script.aculo.us) также ре- ных объектов и гибкого управления ими. Об этом – в слеализует многочисленные визуальные эффекты. Это пере- дующий раз. таскивание (drag-and-drop) объектов по странице, динамическая сортировка, автозаполнение форм и т. д. Сайт биб- В статье была использована документация библиотеки Prototype лиотеки (см. рис. 3) – прекрасный образец её возможностей. (http://www.prototypejs.org/api), а также неофициальное руВ её составе три основных объекта: Sortable, обеспечива- ководство разработчика, составленное Sergio Pereira (http:// ющий динамическое перемещение объектов, Controls, ре- www.sergiopereira.com/articles/prototype.js.html) и доступное теперь ализующий интерактивные элементы управления и Effect – на русском языке в переводе, выполненным Виктором Кроллом набор самых различных визуальных эффектов, таких как (http://kropp.spb.ru/docs/prototype).

№7, июль 2007

83


ретроспектива

История компании Intergraph Мы – компания и должны приносить прибыль. Если мы приносим прибыль, мы будем существовать очень долго. Джим Тейлор

Дмитрий Мороз Уже полвека корпорация IBM считается лидером по производству мейнфреймов и суперкомпьютеров. За компанией Apple прочно укрепился статус де-факто поставщика техники для вёрстки и дизайна. Подобный список можно продолжить. Что же касается систем автоматизированного проектирования, здесь на протяжении нескольких десятилетий лидирует компания Intergraph, истории которой и посвящена эта статья. 84


ретроспектива Пионеры своего дела казу правительства для проектирова- ного планирования. Они же пригодиВ 1969 году Джеймс Мидлок (James ния печатных плат в 1970 году. лись и для архитектурного проектиMeadlock) покинул пост инженера Состоял он из обычных комплекту- рования, только начинавшего набив корпорации IBM и основал собствен- ющих, доступных на тот момент, элек- рать обороты. ную компанию, M&S Computing, вложив тронно-лучевой трубки, исполнявшей В то время как большинство посв неё 39 тысяч долларов из собствен- роль дисплея, клавиатуры, а также тавщиков САПР ориентировали свои ных сбережений. специального планшета, предостав- продукты лишь на авиакосмическую Он решил остаться в Хантсвил- лявшего оператору ряд команд для промышленность и автомобилестроле (штат Алабама) не только из-за то- рисования. ение, компания Мидлока в роли перго, что сам был родом с юга, но главПозднее инженерами компании вопроходца осваивала новые рынки, ным образом из‑за располагавшего- была разработана специальная плата, что позволило ей в будущем прочно ся здесь центра управления полётами ускорявшая прорисовку изображения закрепиться на них до прихода конNASA, в котором Мидлок ранее раз- на терминале в три раза. курентов. рабатывал программное обеспечение В 1972 году в строй вступила интерКроме системы планирования, для навигации ракетоносителей Са- активная графическая система, соз- M&S Computing первой представила турн (Saturn), запускавших космичес- данная для нужд командования про- дополнение к IGDS, предназначенное кие аппараты Аполлон (Apollo) к Лу- тиворакетной обороны США. для проектирования трубопроводов. не. Основатель M&S Computing считал, В отличие от других компаний, проЧто касается аппаратных разрабочто в таком месте программисты будут изводивших компьютеры для собс- ток, компания выпустила в 1978 году очень востребованны. твенных нужд, Мидлок со товарищи многомониторный графический терКроме самого Мидлока, его ново- использовали серийно производи- минал, состоявший из двух размещёниспечённая компания состояла из че- мые мейнфреймы PDP производства ных рядом дисплеев. тырёх инженеров-программистов, Digital Equipment Corporation (DEC), Кроме того, благодаря испольа также секретаря. экономя, таким образом, средства зованию процессора LSI‑11/2 от DEC M&S Computing первой в отрасли реВ течение первых нескольких лет и время. своего существования M&S Computing Спустя ещё два года компания вы- ализовала локальную вычислительзанималась консультированием пра- полнила заказ на производство сис- ную сеть. вительственных организаций относи- темы планирования для города Нэштельно использования цифровых тех- виль (штат Теннесси). Работала она Выход в лидеры нологий, а также создавала програм- под управлением ПО IGDS (Interactive Поскольку деятельность компании мное обеспечение для ракетной на- Graphics Design Software – програм- M&S Computing была так или иначе вигации. мное обеспечение для интерактивно- связана с графическими технологиКроме того, она приступила к раз- го графического дизайна), первой ком- ями, в 1980 году руководство приняработке интерфейсов пользователя, мерчески доступной интерактивной ло решение об изменении её назваа также систем интерактивной ком- системой автоматического проекти- ния. Отныне компания была известна как Intergraph (от Interactive Graphics – пьютерной графики. рования (САПР). Приблизительно до 1968 года споБлагодаря IGDS оператор мог интерактивная графика). соб общения инженеров и учёных с лёгкостью получить необходимую инОбзаведясь новым названием, с компьютерами был невероятно не- формацию о любой интересующей его компания была готова к конкурентной удобен: им приходилось превращать части города, просто указав на тот или борьбе. А соревноваться было с кем всю графическую информацию в пер- иной блок на карте. и за что. Мидлок считал своим главфораторные карты, ждать, пока будет Система для Нэшвиля сыграла ным конкурентом бывшее место раобработана группа данных, умещаю- с компанией злую шутку. «Согласно боты – IBM. По количеству продаваещихся на одной карте, а затем сни- подписанному с городскими властями мого оборудования для САПР «Голумать результаты с отдельных автоном- контракту мы обязались предоставить бой гигант» опережал Intergraph в неных плоттеров. Как следствие, выпол- им готовый проект за 32 тысячи дол- сколько раз. К счастью для компании, нение приложений в режиме реально- ларов», – вспоминает Мидлок. «Одна- ей удалось заключить несколько очень го времени всегда влекло за собой ко в результате система обошлась нам крупных контрактов, например, с Xerox возникновение задержки, уходившей в 200 тысяч долларов. Ситуация была Corporation и Porshe. на операции с перфокартами и печа- очень плачевна, поскольку из-за этого Ещё одна проблема, с которой притающими устройствами. Система, ис- финансового просчёта компания чуть шлось бороться Intergraph, – труднопользующая интерактивную компью- не прекратила своё существование. сти стремительного роста. Поскольку терную графику, наделяла пользова- Но я верю, что подобный случай укре- количество новых сотрудников неуктеля графическим устройством отоб- пил мнение о нас как о компании, лю- лонно росло, компании пришлось перажения, которое фиксировало в ре- быми средствами выполняющей свои ресмотреть собственную программу жиме реального времени все резуль- обязательства». обучения новичков для увеличения её таты расчётов. К концу 1960-х M&S Computing вы- эффективности. Первый графический терминал шла на рынок нефте- и газодобычи, наВоспользовавшись моментом, был разработан M&S Computing по за- чав предоставлять системы трёхмер- Intergraph также организовала но№7, июль 2007

85


ретроспектива

Графическая карта Edge (1991 г.), устанавливаемая в InterPro 32

вый отдел продаж и сервисной поддержки. Его менеджеры ориентировались на нужды каждого отдельно взятого рабочего, а не на требования всей индустрии. Группам менеджеров присваивались отдельные рынки, например, архитектура, электроника, картография, а также индустриальное строительство. Подобное нововведение быстро дало свои «плоды», позволив компании прочно закрепиться на новых рынках. Например, поставки САПР в 1983 году приносили Intergraph уже 20% всех доходов. Компания сделала первый шаг на рынок печати, начав поставлять оборудование для электронной вёрстки. Intergraph также не отставала и в производстве нового аппаратного и программного обеспечения. В 1980 году она первой на рынке выпустила графический терминал, включавший в себя два монитора с высоким разрешением в 1280х1024 пикселей. Через год Intergraph представила терминал с цветным дисплеем, отображавшим 4096 цветов. А по прошествии ещё 12 месяцев графические терминалы компании обладали встроенным графическим процессором для обработки трёхмерного изображения, работавшим параллельно с центральным компьютером. В это же время Intergraph выпустила две линейки рабочих станций собственного производства, InterAct и InterPro, ориентированных на системы автоматизированного проектирования. Изначально они работали на базе архитектур VAX и Micro VAX производства DEC и требовали подключения к мейнфреймам. В 1984 году компания выпустила

86

первые полностью автономные рабочие станции серии InterPro 32 с 2 Мб оперативной памяти, жёстким диском на 26 Мб, а также флоппи-дисководом на 1,6 Мб. Наконец Intergraph начала предоставлять коммерческую реализацию своей локальной сети с пропускной способностью 2 мегабита за секунду. Что интересно, сетевая технология компании использовала те же протоколы CSMA/CD (Carrier Sense Multiple Access with Collision Detection – передача с контролем несущей и обнаружением столкновений), которые в будущем будет использовать Ethernet. Все эти разработки требовали немалых финансовых затрат, поэтому Мидлок принял решение о выходе компании на фондовую биржу через выпуск акций, который состоялся в 1981 году. Дабы ускорить продвижение собственных продуктов на рынке систем автоматизированного проектирования, в сентябре 1984 года Intergraph инвестировала более 5 млн. долларов в молодую компанию Tangent Systems, специализирующуюся на компьютерных средствах для инженерных расчётов и анализа. Компания Мидлока собиралась использовать дистрибьюторские каналы Tangent для реализации собственного программного обеспечения в США, а также за рубежом. Аналитики одобрили желание Intergraph продвигать свои товары и услуги на новых рынках на фоне экономического спада всей индустрии. В январе 1985 года, в то время как большинство компаний, занимающихся САПР, начало замедлять темпы своего производства, Intergraph лишь увеличивала количество зака-

зов на свою технику. Конечно, спад активности на рынке повлёк за собой небольшое падение цены на акции компании, однако сильно повлиять на её финансовое состояние он не смог. К середине 80-х годов Intergraph на пару с Computervision удерживала второе место в мире по продажам САПР, уступая лишь гиганту IBM. Однако, в отличие от своей соперницы, компания Мидлока неуклонно увеличивала долю принадлежащего ей рынка. В 1984 году Intergraph начала разработку модулей для инженерных расчётов и анализа, совместимых со всеми линейками компьютеров DEC. Этот шаг, а также поддержка со стороны Tangent позволили компании оставить Computervision позади. В марте 1985 года Intergraph сделала серьёзный шаг на пути к завоеванию азиатского рынка, открыв в Японии собственное представительство. Пользуясь дистрибьюторскими каналами японской Mutoh Industries, Intergraph стала одной из немногих компаний, предоставляющих САПР на мировом рынке. В это же время она приобрела компанию The Rand Group, которая занималась разработкой программного обеспечения для инженерного проектирования. Теперь Intergraph предоставляла своим клиентам САПР «под ключ»: подбор аппаратного и программного обеспечения под конкретный случай, его установку и наладку, а также предоставление технической поддержки и сервисного обслуживания. Несмотря на то что компания считалась лидером в поставках комплексных решений для автоматизированного управления, Мидлок со товарищи не собирались идти в кильватере индустрии и вместе с остальными игроками рынка начали плавный переход от больших ЭВМ к персональным компьютерам. Даже в этом случае «Intergraph была не просто поставщиком рабочих станций, отдельных электронных компонентов или же одного лишь программного обеспечения», – вспоминает бывший вице-президент компании Кейт Шонрок (Keith Schonrock). В отличие от большинства своих


ретроспектива соперников, сосредоточивавших свои усилия лишь на определённой категории пользователей, Intergraph не ограничивалась одними лишь узкоспециализированными решениями. Компании удалось избежать этого, используя готовые технологии и продвигая их на новые рынки. Таким образом, Intergraph «диктовала моду» самостоятельно, тогда как большинство её конкурентов попросту шло на поводу у своих клиентов, ограничиваясь тем, что имеет. 1986 год ознаменовался для компании ещё одним приобретением. На этот раз в её руки попала Optronics – разработчик периферии, а также оборудования для сканирования. Финансовые показатели были как всегда велики: за неполный год доходы Intergraph возросли на 33%. Количество сотрудников в середине года достигло 5289 человек, тогда как в 1984 году работало 3483 человека. Intergraph ещё раз реорганизовала собственный отдел продаж, разделив его на несколько частей, отвечавших за картографию и энергетические исследования, САПР, производство электроники и электронную вёрстку. Некоторые биржевые брокеры ожидали от компании большего, чем просто обновления отдела продаж. По их мнению, Intergraph необходима была корпоративная реструктуризация. Критика в основном касалась Мидлока, вернее, его единоличного управления компанией. Для компании с годовым доходом около 500 млн. долларов, по их мнению, необходим был новый уровень управления, включавший в себя совет директоров, а также внештатных консультантов. Что же касается аппаратных разработок, здесь придраться к компании было невозможно, ибо 1986 год ознаменовался появлением…

ций), которую поддержало сразу не- ный линейный буфер, использовавсколько производителей процессоров: шийся для быстрой пересылки данSun (SPARC), MIPS Technologies (MIPS), ных в кэше, а также транслирующий Motorola (88000) и Intel (i960). Даже са- буфер, хранивший до 128 часто исма DEC вела разработки новых микро- пользующихся трансляций виртуальпроцессоров на основе архитектуры ных адресов. RISC с 1982 года, итогом которых стал В поисках процессора для своих выпуск десятилетие спустя процессо- рабочих станций Intergraph остановира Alpha. До этого она, кстати, успела лась как раз на чипе Clipper. выпустить ряд рабочих станций на базе процессора MIPS, работавших под Сам себе режиссёр ОС Ultrix (1989 год). Первоначально Fairchild Semiconductor Ещё одной компанией, разра- планировала начать поставки процесбатывавшей RISC-процессор, была сора в 1985 году, однако трудности Fairchild Semiconductor, «перу» кото- с производством передвинули этот рой принадлежит выпуск первых ин- срок на два года вперёд. тегральных микросхем. Intergraph, на деявшейся полуПолучивший название Clipper, дан- чить крупные партии чипов хотя бы ный чип обладал некоторыми особен- в 1986 году, пришлось выпустить её ностями, выгодно отличавшими его новую рабочую станцию класса Highот других процессоров. Его архитек- End, InterPro 32C лишь «на бумаге», тура имела упрощённую систему ко- поскольку для массового производсманд по сравнению с CISC (Complex тва компании остро не хватало проInstruction Set Computer – компью- цессоров. тер со сложным набором инструкТем не менее новый компьютер перций), однако включала в себя больше вым на рынке обеспечивал произвосложных инструкций, нежели в других дительность 5 MIPS (Million Instructions RISC‑процессорах. per Second – миллионов инструкций Эти команды были реализованы за секунду). в специальном ПЗУ под названием Во время разработки компьютеMacro Instruction ROM, который рас- ра инженеры Intergraph воспользоваполагался внутри процессора. Бла- лись «философией расширяемости» годаря этому Clipper имел несколь- набиравшей популярность архитектуко большую плотность кода по срав- ры IBM РС. нению с другими чипами на основе InterPro 32C включала в себя три RISC‑архитектуры. независимые подсистемы: процессор/ Строго говоря, Clipper не являл- память, графика и сетевая подсистеся микропроцессором в прямом по- ма. Пользователь мог самостоятельнимании этого слова. Это был чипсет, но улучшать компоненты своей рабов состав которого входило три мик- чей станции без необходимости покупросхемы. ки новой системы. Одна из них (называемая CPU‑FPU) К апрелю 1987 года стало яссодержала микропроцессорное ядро, но, что Fairchild не может предостаа также сопроцессор для обработ- вить требуемое количество процессоки чисел с плавающей запятой, а две ров для рабочей станции. В результадругие (CAMMU) – кэш-память, а так- те Intergraph потеряла 25 млн. доллаже устройство управления памятью ров, а также лишилась статуса компа(MMU – Memory Management Unit). нии с «непрерывно увеличивающимПервая микросхема CAMMU отве- ся доходом». чала за инструкции, тогда как вторая – Следующие два года компания посА вместо сердца – за данные. вятила «покупкам». пламенный мотор Чип CPU-FPU содержал тридцать В июне 1987 года Intergraph объВ 19 8 6 г о д у а р х и т е к т у р ы VA X два 32-разрядных регистра для цело- явила о намерении инвестировать и  M i c r oVA X , и с п о л ь з о в а в ш и е с я численных чисел, восемь 64-разряд- в Fairchild 50 млн. долларов, тем саIntergraph в своих системах, были ных регистров для чисел с плавающей мым обзаведясь правами на треть уже морально устаревшими. Балом запятой, а также счётчик команд. компании. правила архитектура RISC (Reduced Каждая из микросхем CAMMU неОднако в октябре ситуация слоInstruction Set Computer – компью- сла «на борту» 4 Кб двусторонней жилась несколько иначе: Intergraph тер с сокращённым набором инструк- ассоциативной кэш-памяти, 16-бит- попросту выкупила всю интеллекту-

№7, июль 2007

87


ретроспектива

Процессор Clipper C4

альную собственность, касавшуюся процессора Clipper, а также подразделение Advanced Processor Division (APD), занимавшееся его разработкой. Отныне компания не зависела от Fairchild, и разрабатывала процессоры для своих рабочих станций самостоятельно. В этом же месяце Intergraph приобрела 50% компании Bentley Systems, разработчика САПР для персональных компьютеров под названием MicroStation. Кстати, первоначально MicroStation представлял собой утилиту для чтения файлов IGDS, однако со временем эволюционировал в полноценную САПР. Последняя покупка состоялась в апреле 1988 года: Intergraph приобрела дополнительные 32% Tangent Systems за 3,5 млн. долларов, став практически единоличным владельцем компании. В условия сделки также входила покупка шести процентов акций разработчика САПР Cadence Design Systems, являвшегося дочерней компанией Tangent. К марту 1989 года Intergraph решила кардинально изменить свой курс, обменяв 82% Tangent на акции Cadence. По словам представителей компании, Tangent, обладавшая сильными позициями на рынках электроники и компьютерной техники, не давала Intergraph возможности выйти на более обширные рынки, которые нужны были ей для развития. Кроме того, компанию не устраивал тот факт, что программное обеспечение, разрабатываемое Tangent, продавалось вместе с рабочими станциями производства Apollo Computers, Sun Microsystems и DEC значительно

88

лучше, нежели с собственными сисК сожалению, её финансовое сотемами InterPro. стояние на протяжении нескольких лет Несмотря на сильную конкурен- ухудшалось, вследствие чего компацию со стороны IBM и DEC, Intergraph нию покинуло множество высококвавсё же смогла выйти в лидеры про- лифицированных сотрудников. даж САПР в Северной Америке к конКогда Intergraph продала Tangent цу 1988 года, а к 1990 году – на второе Systems в начале 1989 года, она покиместо в мире. нула рынок программного обеспечеЗа прошедшее десятилетие доходы ния для инженерных расчётов, однакомпании возросли на 700%, число со- ко благодаря покупке Daisy/Cadnetix трудников – на 500%. Intergraph была он был снова для неё открыт. на пике своей популярности. Вообще 1990 год был для компаДела у компании шли хорошо да- нии наиболее удачным за всю её исже тогда, когда, по предсказаниям ана- торию. Доход Intergraph наконец-то пелитиков, она была обречена на поги- ревалил за отметку в один миллиард бель. В этом был «виноват» её испол- долларов, в результате чего она станительный директор – Джеймс Мидлок. ла гордым членом списка Fortune 500. Он всегда быстро реагировал на пос- Компания также подписала долгосрочтоянно совершенствующиеся компью- ный контракт с Ameritech, который долтерные технологии, вследствие чего жен был приносить ей 7 млн. доллатехническая база компании остава- ров ежегодно. лась на высоте. Неудивительно, что как только Несмотря на то что в одной из ста- компания достигла очередного успетей Industry Week сам Мидлок честно ха, на неё сразу же начала сыпатьпризнался, что его компания «пропус- ся критика. тила бум персональных компьютеров», Пенсионный фонд штата Нью-Йорк рабочие станции Intergraph всё равно обязал Intergraph, наряду с четырьмя оставались конкурентоспособным про- другими компаниями, укомплектовать дуктом на рынке. свой совет директоров большим колиТо же самое касается и програм- чеством председателей, не являющихмного обеспечения. САПР MicroStation, ся её сотрудниками. которой в 1989 году исполнилось всеНегодовали и финансовые аналиго два года, уже занимала третье мес- тики, предрекавшие замедление её то в списке систем автоматизирован- роста. Согласно их оценкам, несмотного проектирования для персональ- ря на хорошую репутацию компании, ных компьютеров. новые клиенты не спешили наведыВ августе 1989 года владельцев ра- ваться в офисы Intergraph. бочих станций Intergraph ждал сюрпИ хотя компания разрослась вдвое риз: сразу несколько известных произ- в период с 1985 по 1991 год, её доход водителей ПО объявили о намерении увеличивался не столь пропорциоперенести свои прикладные програм- нально. Однако больше всего критики в адмные пакеты на операционную систему CLIX (разновидность UNIX System V рес Intergraph шло по поводу методля процессоров Clipper, под которой дов управления компанией, которыми работали компьютеры Intergraph). пользовался Джим Мидлок. Компания в очередной раз увелиВ то время как поставщики САПР чила свои «владения» путём покупки разрабатывали своё программное в октябре компании Quintus Computer обеспечение для двух и более аппаSystems за 6,5 млн. долларов. ратных платформ, Мидлок отказывалПодобная участь ждала ещё од- ся поступать подобным образом. ного разработчика САПР, компанию Из-за этого, по признанию вицеDaisy/Cadnetix. Преимущества куплен- президента по корпоративному марной в ноябре 1990 года за 14 млн. дол- кетингу Intergraph Роберта Глазьера ларов компании для Intergraph были (Robert Glasier), она потеряла нескольочевидны: Daisy/Cadnetix обладала ко многомиллионных контрактов. С другой стороны, по его словам: очень сильными позициями на рынке Европы, исследовательским цент- «Все разработчики программного ром в Израиле, а также большой кли- обеспечения стараются держаться одентской базой. ной, максимум двух платформ, пос-


ретроспектива кольку знают, во сколько им обойдётся поддержка большего их количества. Мы в этом уже убедились». Ещё один уникальный для компании аспект заключался в том, что, в то время как рынок закрытых комплексных систем фактически был уже «мёртв», подобная продукция от Intergraph продолжала продаваться на удивление резво. Подтверждению этого факта служит заключенный в апреле 1991 года контракт с Агентством военной картографии (Defense Mapping Agency) на сумму 362 млн. долларов. Компания обязалась создать систему для планирования военных действий во время операции «Буря в пустыне» (Desert Storm). В 1991 году в недрах APD стартовала работа по разработке нового процессора Clipper C400 (его предшественник, C300, был выпущен в 1989 году). Проект завода по переработке газа, построенный благодаря аппаратно-программным Для достижения нового уровня просредствам Intergraph изводительности в С400 были объедиТандем SPARC-Windows NT – вот нены две технологии: первая (супер- и поддержке, в конечном итоге станут скалярная обработка) позволяла ядру «бутылочным горлышком» для даль- новая цель Intergraph, которая, однако, просуществовала недолго. выполнять несколько инструкций од- нейшего развития компании. В результате в 1992 году Intergraph Вышедшая внезапно на сцену корновременно, а вторая (суперконвейерная обработка) – обеспечивала высо- объявила о подписании соглашения порация Intel предложила Intergraph кое быстродействие путём увеличения с Microsoft, согласно которому послед- сделку, от которой последняя не смогняя перенесёт свою новую операцион- ла отказаться. частоты работы чипа. Согласно подписанному соглашеRISC-процессоры второго поколе- ную систему Windows NT, ориентирония использовали одну из этих техно- ванную на рабочие станции и серве- нию, разработчик процессоров лицензировал патентную базу Intergraph логий, однако на момент своего вы- ра, на платформу Clipper. Год спустя, в июле 1993 года, по С5, а взамен предоставлял ей свои хода только С400 использовал сраIntergraph объявила о концентрации процессоры раньше начала их официзу обе. Ещё одно отличие С400 от своих на стратегии «стандартной платфор- альных поставок, да к тому же по цепредшественников – использование мы», намерении прекратить разработ- нам ниже рыночных. Отныне компания вплоть до прев составе чипсета четырёх микросхем: ку собственных процессоров, и перекращения выпуска собственных рабомикропроцессорного ядра, сопроцес- ходе на чипы SPARC. Выбор на эту архитектуру пал не чих станций в 1999 году первой на рынсора, MMU, а также кэш-памяти. Ирония судьбы – С400, являвший- спроста. Ещё после покупки Daisy/ ке представляла системы с чипами ся наиболее совершенным RISC-про- Cadnetix Intergraph пришлось продол- Pentium, Pentium Pro, Pentium II и III, цессором, оказался не только послед- жить поддержку рабочих станций Sun, а также их Xeon-вариантами. Что же касается не нужного боним чипом семейства Clipper, разра- для которых Dazix разрабатывала своё ботанным компанией, но и наименее программное обеспечение. К тому же, лее процессорного подразделения «живучим». «Пламенный мотор» отра- в начале 90-х именно Sun являлась Advanced Processor Division, оно вмесботал своё уже через год после выхо- «номером один» в мире на рынке ра- те со своими 70 сотрудниками перекобочих станций, что также сыграло не- чевало в руки Sun. да в свет. маловажную роль. Новая стратегия больно ударила Новейший процессор С5, разра- по финансовому состоянию компании. Ветер перемен Несмотря на успехи компании по про- батываемый APD в то время, канул Всего за 1993 год компания потеряла почти 165 млн. долларов, а за 1994‑й – даже комплексных систем, Мидлок в Лету. Отныне приоритетной задачей 72,6 млн. долларов. прекрасно осознавал, что в перспекПоложительный момент заключалтиве собственная аппаратно-програм- подразделения являлась помощь Sun мная архитектура, необходимость в разработке следующего поколения ся в том, что рынок рабочих станций на базе архитектуры х86 рос с невев её постоянном усовершенствовании 64-разрядных чипов.

№7, июль 2007

89


ретроспектива роятной скоростью, в результате чего пособны. Компания продолжала выу Intergraph появилось множество но- пускать рабочие станции на базе провых клиентов. цессоров Pentium, однако они приноПредставив в 1994 году свою пер- сили ей одни лишь убытки. В конце вую рабочую станцию на базе процес- 1998 года IBM и SGI выразили желание сора Pentium, компания смогла за не- купить Intergraph. В августе 1999 гополный год реализовать на 41% боль- да компания объявила о прекращеше систем по сравнению с годом ра- нии производства аппаратного обеснее. Правда, на прибыли этот показа- печения и увольнении 400 сотруднитель практически не отразился – до- ков. Поиск потенциального клиента ход Intergraph от продаж компьютеров на её компьютерную технику законприбавил всего 4%. чился в июле 2000 года, когда компания Intergraph объявила о подписании Ты мне больше не дружок договора с компанией SGI и продаже На протяжении последующих трёх лет ей линейки рабочих станций и сервекомпания продолжала планомерно те- ров Zx10. рять деньги. На рынок рабочих станВ этом же году нашла себе хоций на базе архитектуры х86 один зяина и Intense 3D, дочерняя компаза другим вышли «гиганты» IBM, Dell, ния Intergraph, занимавшаяся произCompaq и другие, отнявшие хороший водством и продажей графических «кусок пирога» у Intergraph. карт сторонним компаниям. За вреОднако самый сильный удар компа- мя своего существования (Intense 3D нии нанес её партнёр – Intel. В 1996 го- «ушла в плаванье» в июле 1997 года) ду производитель процессоров начал она стала поставщиком видеоадаптетребовать от Intergraph прекращения ров для рабочих станций производства изымания лицензионных отчислений IBM, DEC, Compaq и, конечно же, самой за патенты по С5, а также лицензи- Intergraph. Новым владельцем компаровании всей патентной базы компа- нии стал производитель графических нии, относящейся к производству про- процессоров – 3DLabs (на чипах котоцессоров. Естественно, Intergraph от- рой, кстати, и были построены видеоветила отказом и Intel задействовала карты Intense 3D). своё монопольное положение на рынОтныне компания занималась иске, проведя ряд нелегальных дейс- ключительно разработками програмтвий, дабы заставить компанию вы- много обеспечения, а также поставполнить свои требования. Среди них кой комплексных технических решебыло повышение цен на чипы, а так- ний и системной интеграцией. же сокрытие технической информации о новых процессорах с целью уве- Время собирать урожай личения у Intergraph сроков разработ- В 2001 году, спустя 32 года, свой ки новых рабочих станций. В резуль- пост исполнительного директора потате компания потеряла в 1996 году кинул основатель Intergraph Джеймс 301 млн. долларов, а цена её акций Мидлок. Его место занял Джим Тейупала с 20 до 8 долларов за штуку. лор (Jim Taylor), также посвятивший Загнанной в угол компании ничего работе в компании всю свою жизнь – не оставалось, как обратиться в суд. он был одним из четвёрки первых ин17 ноября 1997 года Intergraph подала женеров компании. иск против Intel, обвинив её по трём В начале 2002 года Intergraph пропунктам: нарушении собственной па- вела очередную реструктуризацию, тентной базы, недобросовестном от- в результате которой была разделеношении к компании, а также наруше- на на четыре подразделения: Решении антимонопольного права. ния для правительства, Картография, Судебная тяжба с Intel непосредс- Топливо и Энергетика, а также Обтвенным образом повлияла на бизнес щественная безопасность и коммукомпании. Intergraph, в то время забо- никации. тившаяся лишь об отстаивании своСудебный процесс между Intergraph их прав в суде, более не могла быс- и Intel длился на протяжении почти пятро реагировать на изменения рын- ти лет. 17 апреля 2002 года производика, вследствие чего её компьютеры тель процессоров решил уладить иск и серверы оказались неконкурентос- мирным путём, в результате чего вы-

90

платил истцу 300 млн. долларов. В эту сумму, кроме моральной компенсации, входила покупка патентной базы по чипу С5, а также лицензирование ряда других патентов Intergraph. После завершения судебного процесса против Intel Intergraph принялась за «окучивание» и других игроков рынка. «Под удар» попали производители компьютеров Dell, Gateway и Hewlett-Packard. И если первой компании благодаря Intel удалось ускользнуть от правосудия, то остальным пришлось расстаться с весьма крупными суммами. Следующими в «перекрестье прицела» Intergraph попали японские производители Fujitsu, NEC и Toshiba, судебная тяжба с которыми длится до сих пор. На сегодняшний день в «копилке» Intergraph лежит 865 миллионов долларов, полученных в результате судебных процессов, и это ещё не предел. Однако не стоит считать, что последние пять лет компания занимается исключительно «выкачиванием» денег из других игроков рынка. После реструктуризации Intergraph в 2002-м её финансовые показатели начали опять повышаться, достигнув 548 млн. долларов – лучшего показателя за последние 12 лет существования компании. За это время Джима Тейлора на посту исполнительного директора сменил Хелси Вайз (Halsey Wise), также ставший президентом Intergraph. Очередная реорганизация и сокращение подразделений с четырёх до двух (топливо и энергетика, а также безопасность, правительство и инфраструктура) позволило ещё более повысить доходную часть, доведя этот показатель в 2005-м до 577 млн. долларов. В завершение можно сказать лишь одно: Intergraph, несмотря ни на что, движется вперёд. И пускай это уже не тот лидер рынка, каким компания была лет двадцать назад, Intergraph особо не расстраивается. Успешное развитие, хороший доход, безоблачное будущее. Остальное – не важно. 1. http://www.intergraph.com. 2. http://www.fundinguniverse.com. 3. http://www.wikipedia.org. 4. http://www.computer-business-review. com. 5. http://www.byte.com.


книжная полка

Qt 4: программирование GUI на C++ Жасмин Бланшет, Марк Саммерфилд

Книга позиционируется как «единственное официальное руководство по практическому программированию в среде Qt 4.1». Ее авторы уже работали над подобным изданием для Qt 3 и являются менеджерами (один, правда, в прошлом) по документированию в компании Trolltech, подарившей миру Qt. На редкость приятно оформленное руководство описывает в конкретных примерах различные возможности применения кроссплатформенных

средств разработки для создания приложений с графическим пользовательским интерфейсом (на C++). Основное содержание разбито на 3 части, характеризующиеся различными уровнями сложности: базовый, средний и продвинутый. В первой все начинается с простейшего аналога традиционному «Hello, world» – создания окна с единственным виджетом с текстом приветствия. После этого следует рассмотрение варианта с несколькими элементами управления, постепенно расширяется описание интерфейса окон и возможностей взаимодействия с пользователем. Завершается базовая часть вопросами создания собственных виджетов и их внедрения в Qt Designer. Во второй части затронуты такие аспекты, как обработка событий, операции ввода-вывода (файлы, каталоги, межпрограммное взаимодействие), сеть (протоколы FTP, HTTP, TCP и UDP), двухмерная и трехмерная (QtOpenGL)

графика, работа с реляционными базами данных (на примере MySQL) и документами XML, создание элементов системы помощи. В заключительной части – интернационализация (юникод, различные локализации для приложения), многопоточность, создание плагинов, специфичные для различных платформ возможности, несколько страниц о Qtopia для разработки ПО для встраиваемых устройств. Кроме того, в книге приводится информация об установке Qt для поддерживаемых платформ и краткое руководство по C++ для разработчиков на Java и C#.

n Издательство: n Год издания: n Количество страниц: n ISBN: n Цена:

«КУДИЦ-ПРЕСС» 2007 648 978-5-91136-038-2 ≈ 282 руб. К н и г а п р е д о с т а в л е н а и з д ат е л ь с т в о м «КУДИЦ-ПРЕСС».

Мастерская CSS: профессиональное применение Web-стандартов Энди Бадд, Камерон Молл, Саймон Коллизон

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

92

овладел базовыми навыками в рабо- ентском браузере), верстке документе с CSS, неоднократно применял их тов (в 2 и 3 колонки, «замороженные», на практике и теперь хочет научиться «эластичные» и «жидкие» макеты). В отсоздавать более сложные структуры. дельные главы вынесены трюки и фильКак это зачастую бывает, в книге тры, а также анализ возможных ошибок содержатся рецепты для некоторых (в том числе, есть и небольшой список конкретных проблем. Однако авторы популярных ошибок, встречающихся стараются не просто предоставить го- в конкретных браузерах). Особую центовые решения, но обучить продвину- ность представляют два приложения, той технике написания кода CSS-таб- в которых вы найдете подробные прилиц. Таким образом, материал нацелен меры оформления двух сайтов. на то, что читатель будет не просто деМинус издания – в нем не раслать кальки с приведенных фрагмен- сматривается седьмая версия Internet тов кода, но и понимать, как это функ- Explorer (хотя и упоминается несколько ционирует, стремиться самостоятель- раз о ее выходе в скором времени). но преобразовывать и развивать предn Издательство: «Вильямс» лагаемые идеи. n Год издания: 2007 Приводятся приемы по грамотной Количество страниц: 272 стилизации различных элементов веб- n ISBN: 978-5-8459-1199-5 страниц, работе с изображениями (на- n Цена: ≈ 157 руб. пример, представлен ряд методов заме- n ны картинок на текст для случаев, когда К н и г а п р е д о с т а в л е н а и з д ат е л ь с т в о м отображение первых отключено в кли- «Вильямс».


книжная полка

Применение UML 2.0 и шаблонов проектирования, 3-е издание Крэг Ларман

Эта книга – новая редакция известного фундаментального труда по объектно-ориентированному анализу и проектированию от человека, призывающего все новых и новых специалистов учиться «мыслить объектами». Она удобно структурирована и состоит из 6 частей (40 глав). В введении описаны некоторые базовые понятия и процессы, в последующих частях –

сами фазы: начальная развития (она разбита на  итерации), а в последней сравниваются адаптивное и предиктивное планирование. На начальной фазе подробно рассматриваются процессы определения предъявляемых к проекту (основных и дополнительных) требований и описания прецедентов в различных форматах. На первой итерации второй фазы – модели предметной области и выделение концептуальных классов, системные диаграммы последовательностей и диаграммы пакетов UML, объектное проектирование с помощью CASE-средств, диаграммы взаимодействия и классов UML, объектное проектирование с использованием шаблонов GRASP, формирование программного кода. На второй – использование дополнительных шаблонов GRASP и шаблонов GoF, применение UML для визуализации моделей.

На третьей – диаграммы видов деятельности (моделирование процессов), концепции обобщений и специализации, архитектурный анализ, применение дополнительных шаблонов GoF, работа с базой данных, документирование (создание документов SAD). На протяжении всей книги представленная теория дополняется двумя примерами ее практического использования: система автоматизации торговой точки и игра «Монополия». Все примеры программного кода написаны на языке Java.

n Издательство: n Год издания: n Количество страниц: n ISBN: n Цена:

«Вильямс» 2007 736 978-5-8459-1185-8 ≈ 698 руб. К н и г а п р е д о с т а в л е н а и з д ат е л ь с т в о м «Вильямс».

Операционные среды, системы и оболочки. Основы структурной и функциональной организации. Учебное пособие Станислав Назаров

Судя по аннотации, книга близка к тому, чтобы претендовать на звание всеобъемлющего и доступного для всех учебного пособия по операционным системам для студентов экономических вузов. Вдобавок, в качестве важной особенности обозначено соответствие современным технологиям. Однако все это привело не только к позитивным результатам, поскольку

№7, июль 2007

при прочтении многих материалов остается ощущение неосновательности и неполноты в описании конкретных фундаментальных понятий и механизмов. Среди рассматриваемых тем есть как основные моменты из базовых курсов технических вузов: общие представления об операционных системах, процессы и потоки, многозадачность, организация и распределение памяти и виртуальная память, подсистема ввода-вывода и файлов системы, сетевые операционные системы (UNIX и Windows 2000), – так и менее освещаемые в этих учебных программах достижения IT: виртуальные машины,

службы каталогов (Active Directory), сетевые файловые системы, различные типы атак, мониторинг и оптимизация ОС, восстановление после сбоев, а также интерфейсы ОС (программный на примере разработки под Windows и пользовательский). В конце каждой главы приведены контрольные вопросы для проверки усвоения материала.

n Издательство: n Год издания: n Количество страниц: n ISBN: n Цена:

«КУДИЦ-ПРЕСС» 2007 504 978-5-91136-036-8 ≈ 440 руб. К н и г а п р е д о с т а в л е н а и з д ат е л ь с т в о м «КУДИЦ-ПРЕСС».

Обзор книжных новинок подготовил Дмитрий Шурупов

93


подписка на 2007 год

Редакционная подписка для физических лиц n Вы можете оформить подписку

n Вы можете оформить подписку

n Журнал высылается почтой прос-

на любой российский адрес. n При заполнении квитанции обя‑ зательно РАЗБОРЧИВО укажи‑ те фамилию, имя, отчество пол‑ ностью, почтовый индекс и ад‑ рес получателя (область, город, улица, номер дома, номер квар‑ тиры), контактный телефон.

с любого месяца на любой срок. n В графе «Сумма» проставьте сумму за выбранное количество номеров. Стоимость одного номера журнала 150 руб. За 10 месяцев (с марта по декабрь) – 1500 руб. НДС и почтовые расходы включены в стоимость.

той бандеролью только после поступления денег на расчетный счет и копии заполненного и оплачен‑ ного бланка, отправленной в ре‑ дакцию по факсу: (495) 628‑82‑53 или на элек тронный а д рес: info@samag.ru.

94


подписка на 2007 год Российская Федерация

n Подписной индекс: годовой – 20780, полугодовой – 81655

Каталог агентства «Роспечать» n Подписной индекс: 87836 Объединенный каталог «Пресса России» Адресный каталог «Подписка за рабочим столом» Адресный каталог «Библиотечный каталог» n Альтернативные подписные агентства: Агентство «Интер-Почта» (495) 500-00-60, курьерская доставка по Москве Агентство «Вся Пресса» (495) 787-34-47 Агентство «Курьер-Прессервис» Агентство «ООО Урал-Пресс» (343) 375-62-74 ЛинуксЦентр www.linuxcenter.ru n Подписка On-line http://www.arzi.ru http://www.gazety.ru http://www.presscafe.ru

СНГ В странах СНГ подписка принимается в почтовых отделениях по национальным каталогам или по списку номенклатуры «АРЗИ»: n Азербайджан – по объединенному каталогу российских изданий через предприятие по распространению

печати «Гасид» (370102, г. Баку, ул. Джавадхана, 21)

n Казахстан – по каталогу «Российская Пресса» через ОАО «Казпочта» и ЗАО «Евразия пресс»

n Беларусь – по каталогу изданий стран СНГ через РГО «Белпочта» (220050, г. Минск, пр-т Ф. Скорины, 10)

n Узбекистан – по каталогу «Davriy nashrlar» российские издания через агентство по распространению печати «Davriy nashrlar» (7000029, г. Ташкент, пл. Мустакиллик, 5/3, офис 33) n Армения – по списку номенклатуры «АРЗИ» через ГЗАО «Армпечать» (375005, г. Ереван, пл. Сасунци Давида, д. 2) и ЗАО «Контакт-Мамул» (375002, г. Ереван, ул. Сарьяна, 22) n Грузия – по списку номенклатуры «АРЗИ» через АО «Сакпресса» ( 380019, г. Тбилиси, ул. Хошараульская, 29) и АО «Мацне» (380060, г. Тбилиси, пр-т Гамсахурдия, 42) n Молдавия – по каталогу через ГП «Пошта Молдовей» (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134) по списку через ГУП «Почта Приднестровья» (МD-3300, г. Тирасполь, ул. Ленина, 17) по прайс-листу через ООО Агентство «Editil Periodice» (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134) n Подписка для Украины: Киевский главпочтамт Подписное агентство «KSS», тел./факс (044)464-0220

Подписные индексы:

20780* 81655** по каталогу агентства «Роспечать»

87836 по каталогу агентства «Пресса России» *

годовой полугодовой

**

№7, июль 2007

95


СИСТЕМНЫЙ АДМИНИСТРАТОР №7(56), Июль, 2007 год УЧРЕДИТЕЛИ Владимир Положевец Александр Михалев РУКОВОДИТЕЛЬ ПРОЕКТА Петр Положевец РЕДАКЦИЯ Исполнительный директор Владимир Положевец Ответственный секретарь Наталья Хвостова sekretar@samag.ru Технический редактор Владимир Лукин Главный редактор электронного приложения «Open Source» Дмитрий Шурупов Внештатные редакторы Алексей Барабанов Иван Максимов Дмитрий Горяинов Кирилл Сухов РЕКЛАМНАЯ СЛУЖБА тел./факс: (495) 628-8253 Евгения Тарабрина reсlama@samag.ru Верстка и оформление maker_up@samag.ru Дизайн обложки Дмитрий Репин Николай Петрочук По вопросам распространения обращайтесь по телефону: (495) 628-8253 (доб. 120) 107045, г. Москва, Ананьевский переулок, дом 4/2, стр. 1 тел./факс: (495) 628-8253 Сайт журнала: www.samag.ru ИЗДАТЕЛЬ ЗАО «Издательский дом «Учительская газета» Отпечатано типографией ГП «Московская Типография №13» Тираж 15000 экз. Журнал зарегистрирован в Министерстве РФ по делам печати, телерадиовещания и средств массовых коммуникаций (свидетельство ПИ № 77-12542 от 24 апреля 2002 г.). За содержание статьи ответственность несет автор. За содержание рекламных материалов ответственность несет рекламодатель. Все права на опубликованные материалы защищены.

96

Читайте в следующем номере: Gmail как внешний фильтр для корпоративной почты Уже многие оценили качество фильтрации спама и вирусов такого сервиса, как Gmail. Он позволяет размещать почтовую службу для целого домена на своих серверах, после чего почта становится доступна как через web, так и по протоколу pop3. Такая комбинация возможностей и дает нам способ использовать Gmail как внешний фильтр для почты. Подробности – в августовском выпуске журнала.

mod_python и mod_perl Модули сервера Apache mod_python и mod_perl позволяют встроить интерпретаторы языков Python и Perl непосредственно в сервер и значительно увеличить производительность веб-приложений. Perl – старый и хорошо зарекомендовавший себя игрок на этом рынке. Но в последние годы Python занял уверенные позиции в области веб-разработок и привлекает всё большее внимание. Читайте в следующем номере обзор возможностей этих средств.

Панель управления хостингом SysCP Как упростить управление хостингом? Даже при тщательно спланированной архитектуре и выборе компонентов будущей системы, без некоторой автоматизации процесса потребуется очень много времени, чтобы решить все воз-

можные задачи. Решить задачу поможет инструмент System Control Panel (SysCP), о котором пойдет речь в следующем номере журнала.

Axigen Mail Server: почтовый сервер для малого офиса Сегодня почтовый сервер на базе UNIX-подобной ОС ассоциируется с непонятной новичку комбинацией вроде Postfix + Doveco + Squirrelmail + Clam AV + S pam As s as sin + Б Д + PostfixAdmin. Далеко не каждый решится строить такую систему. Румынская компания GeCAD Technologies LTD, предлагает свое решение вопроса – быстрый, защищенный почтовый сервер AXIGEN Mail Server с открытой архитектурой. О нём мы расскажем в августовском номере «Системного администратора».

Создание COM‑компонентов с помощью VBScript Вы создаете много скриптов, и вам надоело переносить код из одного файла в другой? Есть отличное решение – создайте COM-объекты на основе своих скриптов. В следующем номере журнала в качестве примера создадим COM‑объект Detect.Domain, который содержит несколько методов. Используя их, можно определить длинное имя домена (DC=Microsoft,DC=Com), короткое имя домена (Microsoft) и DNS-имя домена (Microsoft.Com).

Уважаемые читатели! Продолжается подписка на 2-ое полугодие 2007 года. Приобрести новые и старые номера журнала вы можете через интернет-магазин LinuxCenter.ru.

Доставка почтой в любую точку России.

056 Системный Администратор 07 2007  

Библиотека Prototype – ваш путь в Web 2.0 Групповые политики в доменах Active Directory OpenWRT – Linux-дистрибутив для встраиваемых систем...

Read more
Read more
Similar to
Popular now
Just for you