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

98
№7(56) июль 2007 №7(56) июль 2007 подписной индекс 20780 www.samag.ru Групповые политики в доменах Active Directory MOSS 2007: оцените удобство! OpenWRT – Linux-дистрибутив для встраиваемых систем Централизованная настройка UNIX-систем с помощью Puppet Как работает служба Network Load Balancing Особенности инсталляции ОС Solaris Библиотека Prototype – ваш путь в Web 2.0 MySQL vs PostgreSQL 2 октября 2007 12.00-17.00 Москва, ВВЦ, Павильон №69 Выставка «Softool» Малый конференц-зал nginx, его возможности и использование для повышения скорости работы Web-сервера Игорь Сысоев, Рамблер Передовые технологии OpenSolaris для системных администраторов Филипп Торчинский, Sun Microsystems Что нового в PostgreSQL 8.3? Иван Золотухин, Постгресмен В программе* Приглашаем читателей на День рождения журнала! * в программе возможны изменения Новые возможности Windows Server 2008 Данила Корнев, Microsoft

Upload: vladimir-gromadin

Post on 07-Mar-2016

261 views

Category:

Documents


7 download

DESCRIPTION

Библиотека Prototype – ваш путь в Web 2.0 Групповые политики в доменах Active Directory OpenWRT – Linux-дистрибутив для встраиваемых систем MOSS 2007: оцените удобство! Централизованная настройка UNIX-систем с помощью Puppet Москва, ВВЦ, Павильон №69 №7(56) июль 2007 подписной индекс 20780 www.samag.ru

TRANSCRIPT

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

№7(

56)

июль

200

7

№7(56) июль 2007подписной индекс 20780www.samag.ru

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

MOSS 2007: оцените удобство!

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

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

Как работает служба Network Load Balancing

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

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

MySQL vs PostgreSQL

2 октября 200712.00-17.00

Москва, ВВЦ, Павильон №69

Выставка «Softool»Малый конференц-зал

nginx, его возможности и использование для повышения скорости работы Web-сервераИгорь Сысоев, Рамблер

Передовые технологии OpenSolaris для системных администраторовФилипп Торчинский, Sun Microsystems

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

В программе*

Приглашаем читателей на День рождения журнала!

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

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

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

�№7, июль 2007

в номере

37, 57, 73 BUGTRAQ

КНИЖНАЯ ПОЛКА92

ТЕНДЕНЦИИ3

АДМИНИСТРИРОВАНИЕ

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

Александр Емельянов[email protected]

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

[email protected]

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

�8

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

[email protected]

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

32

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

[email protected]

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

Андрей Шетухин[email protected]

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

42

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

Дмитрий Столяров[email protected]

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

54

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

[email protected]

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

58

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

[email protected]

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

[email protected]

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

68

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

Сергей Косько[email protected]

Капитан корабля74Наброски к документальному фильму о директоре Softline Игоре Боровикове. Оксана Родионова

[email protected]

ЧЕЛОВЕК НОМЕРА

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

78

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

Кирилл Сухов[email protected]

WEB-ПРОГРАММИРОВАНИЕ

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

Дмитрий Мороз [email protected]

РЕТРОСПЕКТИВА

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

�№7, июль 2007

тенденции

Лицензия GPLv� вызвала смешанные чувстваОбнародованная в конце июня Организацией свободного ПО лицензия 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 проектов.

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 заключается в радикальной политике в отношении лицензирования всех

компонентов дистрибутива, ратующей за «свободу» в кон-тексте 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

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

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

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

Александр Емельянов

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

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

�№7, июль 2007

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

Постараемся обобщить инфор-мацию по технологии развора-чивания и применения группо-

вых политик (ГП) в службе каталогов. В частности:n в чем выгода для администратора

при использовании ГП;n сущность объектов ГП и их место

в каталоге AD;n отличие ГП домена от локальных

политик рабочих станций;n как создаются, назначаются и при-

меняются ГП в домене;n наследование и приоритеты для

ГП;n утилиты gpupdate, gpresult и RSoP;n другие утилиты для управления

и диагностики неисправностей в применении ГП;

n будущее ГП – что нового в пла-не групповых политик в Windows Vista.

Для чего нужны групповые политики в доменеВ предыдущей статье [1] я говорил об управлении пользователями в сре-де Active Directory. Cлужба каталогов облегчает работу IT-подразделения по администрированию информаци-онных ресурсов предприятия. Техно-логии Intellimirror и CCM (Change and Configuration Management – управле-ние изменениями и конфигурация-ми) позволяют управлять рабочими местами, используя перемещаемые профили и перенаправление ката-логов, автономные папки и распро-странение программ. Многие из этих задач легко выполняются при помо-щи групповых политик, обеспечивая при этом централизованное управ-ление, а также гибкий механизм на-стройки и отладки. Групповые поли-тики позволяют:n назначать сценарии запуска, вхо-

да и выхода;n распространять программное обес-

печение в сети при помощи публи-кации или назначения;

n однозначно определять набор на-строек безопасности для удален-ных машин;

n определять политики паролей для пользователей домена;

n конфиг урировать параметры Internet Explorer (даже несмотря на всю его «дырявость», по разным

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

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

n накладывать ограничения на рабо-чий стол;

n определять настройки таких кате-горий, как автономные папки, дис-ковые квоты и др., не исключением являются настройки самих группо-вых политик.

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

Структура объектов групповой политики и их место в службе каталоговОбъект групповой политики (GPO, Group Policy Object) состоит из двух частей: конфигурация компьютера (Computer Configuration) и конфигура-ция пользователя (User Configuration) (см. рис. 1). Он является контейнером для групп политик, применяемых со-ответственно к машинам и пользова-телям сети.

В «Конфигурации компьютера» ад-министратор может настроить пара-метры безопасности, политики паро-лей пользователей, параметры ауди-та, использование групп с ограничен-ным доступом (Restricted Groups), па-раметры реестра и так далее.

В разделе «Конфигурация поль-зователя» настраиваются парамет-ры рабочего окружения пользовате-ля (настройки рабочего стола, вид и ограничения для панели задач и ме-ню «Пуск»), перенаправление папок, а также параметры 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. В этой

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

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

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

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

Локальные политики рабочей станцииКаждая рабочая станция под управ-лением операционных систем семейс-тва Windows 2000 имеет свои локаль-ные политики, и администратор доме-на имеет возможность редактировать их. Они схожи с групповыми политика-ми домена, но применяются для всех локальных пользователей компьюте-ра без исключения. Также невозмож-но настроить ряд установок, таких, на-пример, как перенаправление катало-гов и установка приложений. Несмот-ря на это, структура объекта локаль-ных групповых политик такая же, как и GPO домена. Размещается он в папке \Windows\system32\GroupPolicy.

При помощи команды gpedit.msc вы можете редактировать локальные политики рабочей станции. Синтаксис строки для запуска gpedit.msc для про-смотра локальной политики удален-ной машины будет выглядеть следую-щим образом:

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

шины (видимо, 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, список контроля доступа), опре-деляются области действия политики

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

Gpedit.msc /gpcomputer: Имя_Компьютера

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

�№7, июль 2007

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

на основе групп. На вкладке «Фильтр WMI» (WMI Filter) вы можете выбрать, будет ли применяться к объекту поли-тик фильтр WMI (Windows Management Instrumentation), и если да, то какой.

При создании объект групповой политики привязывается к контейне-ру, для которого вы его создали. Этот GPO будет храниться в Active Directory и может быть применен к другим кон-тейнерам – сайтам, доменам и орга-низационным единицам. Одновремен-но с этим вы можете удалить привязку GPO к контейнеру, не удаляя сам объ-ект GPO. Групповые политики данного GPO к этому контейнеру применяться не будут, но сам объект все еще будет существовать в службе каталогов. Та-ким образом, может возникнуть ситу-ация, когда какой-либо объект группо-вой политики не будет связан ни с од-ним контейнером, но он все еще будет существовать в службе каталогов, и вы в любой момент сможете привязать его к сайту, домену или OU.

Каждый контейнер может иметь связь с несколькими GPO, которые бу-дут отображены в списке на вклад-ке «Групповая политики». И, чем вы-ше политика, тем выше ее приоритет-ность. Выигрывающей является самая верхняя в списке политика. Изменить приоритетность вы можете, передви-гая объекты вверх-вниз и меняя тем са-мым очередность. Важно понимать, что применение параметров при воздейс-твии многих политик происходит снизу вверх, и, если политика в объекте GPO не сконфигурирована, она не будет воз-действовать на параметр. Таким обра-зом, для параметра будет установлено значение, определенное самым верх-ним в списке объектом GPO, в котором политика сконфигурирована.

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

жащая в интервале 60-120 минут. Эту величину можно изменить при помо-щи групповых политик, но не рекомен-дуется делать ее очень маленькой, по-тому что это повлечет за собой затраты системных ресурсов из-за постоянного обращения к контроллеру домена. Для контроллеров домена групповые поли-тики обновляются каждые 5 минут.

За обработку групповых политик на компьютерах клиентов отвечает набор динамических библиотек – кли-ентских расширений групповых поли-тик. И, к слову говоря, если на локаль-ной машине не будет файла scecli.dll (на компьютерах часто можно видеть событие с источником SceCli и описа-нием «Политика безопасности в объ-ектах групповой политики успешно применена»), то групповые политики на нем и вовсе выполняться не будут.

Применение групповых политик пользователя и компьютера в систе-мах Windows NT 5 происходит по-раз-ному. В таблице показано, как это происходит в различных системах по умолчанию. Попросту говоря, в сис-теме Windows XP политики применяют-ся после того, как пользователь уже видит экран входа в систему. При вхо-

де в систему он сразу же видит рабо-чий стол, не дожидаясь применения всех политик. Для повышения безопас-ности такое поведение можно изме-нить с помощью параметра Computer Configuration/Administrative Templates/System/Logon/Always wait for the network at computer startup and logon.

По умолчанию политики пользова-теля применяются после политик ком-пьютера. Но может возникнуть ситуа-ция, когда встречаются политики, воз-действующие на один и тот же пара-метр. В случае такого конфликта, по-литики пользователя берут верх. Од-нако такое поведение не всегда прием-лемо. Включение Loopback Processing (режим обратной обработки) позволя-ет выйти из этой ситуации:n при установленной опции Merge

(слияние) происходит объедине-ние двух одинаковых для конфи-гурации компьютера и пользовате-ля политик: в случае, если полити-ка для компьютера не определена, а для пользователя задана, выиг-рывает пользовательская полити-ка; в случае же, если политики кон-фликтуют – выигрывает политика компьютера;

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

Операционная система Загрузка Вход в систему Обновление политик

Windows 2000 Синхронно Синхронно Асинхронно

Windows XP Асинхронно Асинхронно Асинхронно

Windows 2003 Server Синхронно Синхронно Асинхронно

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

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

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

n при установленной опции Replace (замена) пользовательские полити-ки не обрабатываются.

Наследование и порядок применения групповых политик в иерархии службы каталоговГлавная формула применения объек-тов 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»);

n использование списков контроля до-ступа (ACL) и инструментария WMI.

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

Поиск и устранение неисправностей при работе с групповыми политикамиНетрудно понять, что групповые поли-тики в доменах 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. Как вы пом-

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

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

�№7, июль 2007

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

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

Утилита Dcgpofix поможет восста-новить начальные настройки для груп-повых политик по умолчанию домена и контроллера домена.

Консоль GPMC.MSCМы рассмотрели большинство средств по созданию, настройке и отладке групповых политик. Но из-за их раз-розненности существуют определен-ные неудобства для администрато-ра. Поэтому компания Microsoft вы-пустила единый инструмент управ-ления групповыми политиками – кон-соль GPMC.MSC (см. рис. 5), который позволяет выполнять все основные операции по администрированию ГП. Он не входит в состав ни одной из опе-рационных систем, но доступен для свободного скачивания на официаль-ном сайте Microsoft.

GPMC.MSC является незамени-мым инструментом администратора по управлению групповыми политика-ми в рамках домена, который интегри-рует в себе функционал вышеописан-ных утилит. В дополнение к этому вы можете:n создавать резервные копии объек-

тов GPO и осуществлять их восста-новление;

n составлять отчеты в формате HTML;n смотреть сконфигурированные на-

стройки политик;n копировать политики и импортиро-

вать настройки политик;n использовать функцию Drug’n’Drop

для назначения привязки объектов GPO к контейнерам.

С помощью GPMC.MSC нельзя вы-полнить обновление групповых поли-

тик, для этого вам придется прибег-нуть к gpupdate.

Будущее групповых политикНу и напоследок нельзя не сказать не-сколько слов о реализации механизма групповых политик в вышедшей срав-нительно недавно Windows Vista. На-чну с того, что в предыдущих верси-ях операционных систем за обработ-ку групповых политик отвечал процесс Winlogon, тогда как в Vista они пред-ставляют собой целую службу, которую из соображений безопасности нельзя остановить. Консоль GPMC.MSC те-перь является встроенным компонен-том операционной системы.

Vista имеет несколько локальных объектов GPO, что позволяет по-раз-ному настроить параметры локальных рабочих станций для администрато-ров и обычных пользователей. Однако в рамках домена групповые политики Active Directory имеют более высокий приоритет над локальными. Помимо этого, администраторы домена могут выключить локальные политики.

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

вают управление новыми параметрами групповых политик в рамках домена.

В заключение хотелось бы дать не-сколько советов по работе с групповы-ми политиками:n не стройте слишком сложных стра-

тегий по развертыванию ГП в доме-не; чем сложнее схема, тем труднее потом будет найти и устранить при-чину неполадки;

n избегайте применения большого количества GPO с конфликтующи-ми параметрами;

n старайтесь не увлекаться использо-ванием режимов запрета перекры-тия и блокировки наследования;

n по возможности документируйте изменения, это позволит быстрее отследить причину возникновения конфликта или неполадки;

n не экспериментируйте на функцио-нирующем домене, лучше исполь-зуйте моделирование.

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

1. Александр Емельянов. Администриро-вание пользователей в домене Active Directory. //«Системный администра-тор», №4, 2007 г.

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

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

10

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

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

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

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

Андрей Бирюков

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

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

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

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

11№7, июль 2007

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

щью Windows Explorer, не выполнять никаких действий или спросить поль-зователя.

В разделе Default Programs можно указать, какие приложения должны по умолчанию использоваться для вы-полнения определенных типов файлов. Также здесь можно указать, какая про-грамма должна по умолчанию обраба-тывать трафик, приходящий по опре-деленному протоколу уровня приложе-ний (например ftp или https).

Немного другую форму принял раздел, содержащий настройки се-

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

Заглянем в настройки сетевого ин-терфейса (Manage network connections), там тоже появились новые возможнос-

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

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

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

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

Панель управленияПосмотрим, какие функции появились в Control Panel (см. рис. 2).

В разделе Auto Play можно указать, какое действие выполнять при под-ключении к системе того или ино-го носителя. Зачастую бывает край-не нежелательно, когда при установ-ке компакт-диска в привод начинает выполняться какое-либо приложение (autoplay). Это нежелательно с точки зрения безопасности, к тому же мо-жет отнимать дополнительные ресур-сы системы. Здесь можно запретить выполнение autoplay и указать, какое действие выполнять: открыть с помо-

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

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

12

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

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

Кроме стандартного IP версии 4, теперь имеется поддержка IP версии 6. Многие Linux- и BSD-системы уже до-вольно давно поддерживают шестую версию протокола IP, однако сервер-ная Windows впервые включила эту поддержку в установку по умолча-нию. Компонента Link-Layer Topology Discovery Mapper предназначена для поиска компьютеров и устройств в сети, а также для определения про-пускной способности сети. Responder позволяет другим узлам сети видеть данную машину.

В общем, реализация стека TCP/IP и средств настройки сети в новой вер-сии операционной системы претерпела существенные изменения, что не мо-жет не радовать. Правда, хочется наде-яться, что новые сетевые службы и сер-висы не будут содержать такого коли-чества уязвимостей, как предыдущие версии, в особенности Windows 2000.

Инструменты администратораМного нововведений ожидает адми-нистратора в Administrative Tools. В этой статье я не буду описывать работу в Active Directory в качестве контрол-лера домена для данной операционной системы, так как там тоже есть новов-ведения, и это будет отдельной темой. А в рамках этой статьи мы будем рас-сматривать функционал сервера, не яв-ляющегося контроллером домена.

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

Немного напоминает Microsoft Operations Manager в упрощенном ви-де. Однако на этом сходство с систе-мами промышленного мониторинга

не заканчивается. Если вас интересу-ют, к примеру, события Error, то вам до-статочно два раза кликнуть на крести-ке слева от названия журнала, и вы по-лучаете список всех источников сооб-щений данного типа, а также статис-тические данные по тому, сколько раз то или иное событие происходило. На-жав на интересующее событие, вы по-лучите не только содержимое сообще-ния об ошибке, но также и список всех аналогичных сообщений, происходив-ших в другие дни. В небольших сетях, где не используются другие решения для мониторинга, средства, предлага-емые Windows Server 2008, могут ока-заться очень полезными.

Однако кроме средств мониторин-га событий можно также и реагировать на них. В разделе «Actions» выбираем «Attach Task To This Event…». Запуска-ется соответствующий мастер. Есть три варианта ответных действий: за-пуск приложения/сценария, отправка письма по электронной почте и сооб-щение на экран. Наиболее интересен первый вариант – запуск приложения (см. рис. 6).

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

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

Да и само количество журналов событий, представленных в Event Log, по умолчанию намного больше, чем это было в предыдущих версиях (рис. 7).

Так что теперь все события не будут сыпаться в одну кучу и не надо будет тратить время на поиск нужного.

В целом Event Log в новой опе-рационной системе претерпел зна-чительные изменения, причем в луч-шую сторону.

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

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

Рисунок 4. Свойства сетевого интерфейса

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

13№7, июль 2007

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

как служба содержит реализацию принципиально новых технологий, мне хотелось бы описать NPS подробнее.

Прежде всего NPS пришел на смену IAS (Internet Authentication Server) RADIUS-серверу, входившему в состав Windows. Однако функционал NPS не ограничивается толь-ко поддержкой аутентификации по протоколу RADIUS.

Одним из основных элементов Network Policy Server является поддержка технологии NAP (Network Access Protection). Она позволяет ограничить доступ к сети, раз-решая его только хостам, удовлетворяющим требованиям безопасности. Фактически это некоторый аналог проак-тивной системы защиты. С помощью NAP можно создавать различные политики для проверки состояния компьютера, перед тем как разрешить ему доступ в сеть. Компьютерам, не удовлетворяющим этим требованиям, можно, к приме-ру, разрешить доступ только в карантинную зону, где они смогут установить необходимые обновления, или же за-претить доступ совсем.

Технология NAP аналогична Cisco Network Admission Control (NAC) – программно-аппаратному комплексу по кон-тролю за доступом в сеть. Однако Cisco NAC поддержива-ется только оборудованием Cisco, что существенно услож-няет ее внедрение. NAP не имеет таких жестких аппарат-ных привязок.

Основным элементом NAP является как раз Network Policy Server. NPS не входит в состав установки по умол-

чанию, поэтому ее нужно добавить дополнительно (см. рис. 8).

Действия, которые необходимо применять к подключаю-щемуся узлу, определяются с помощью политик Connection Request Policies. Данные политики определяют набор правил, которые использует NPS для проверки попыток соединений. Для того чтобы определить состояние узла, используются спе-циальные маркеры System Health Validators (SHV), которые со-общают NPS о состоянии системы машины, запрашивающей

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

Рисунок 6. Запуск приложения

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

14

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

подключение (NAP клиента). Опреде-лить состояния данного маркера можно следующим образом (см. рис. 9).

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

n Client fails all SHV checks – ни од-на проверка не пройдена. Как пра-вило, таких пользователей лучше не пускать в сеть вообще.

n Client passes one or more SHV checks – клиент прошел одну или несколько проверок. Здесь все определяет то, какие проверки про-шел пользователь. Как правило, в такой ситуации лучше всего раз-решить доступ только в карантин-ную сеть, где он сможет установить недостающие обновления и патчи.

n Client fai ls one or more SHV checks – клиент не прошел одну или несколько проверок. Случай аналогичный предыдущему. Раз-ница лишь в том, что для вас при-оритетнее.

n Client reported as transitional by one or more SHV’s – транзитный маркер возвращается, когда ма-шина только подключилась к се-ти и состояние SHV еще не опре-делено.

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

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

маркер будет иметь одно из следую-щих состояний:n Client passes all SHV checks – про-

верки всех маркеров прошли ус-пешно. В таком случае, как прави-ло, пользователь получает полный доступ к сети (естественно, в рам-ках своих полномочий).

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

15№7, июль 2007

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

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. Понятно, что такие машины тоже лучше в сеть не пускать.

Далее, в NPS можно определить различные действия, которые при-меняются к рабочим станциям, соот-ветствующим тем или иным состоя-ниям SHV.

В частности, можно определить политики, позволяющие доступ в сеть только в определенные промежут-ки времени, или ограничить доступ только определенными ресурсами (см. рис. 10).

Теперь необходимо немного пояс-нить, как все это работает.

Клиентская машина, на которой ус-тановлена Windows XP SP2 или Vista, пытается установить соединение. Это выражается в RADIUS Access-Request-запросе к серверу 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 для различных реализаций.

Настраиваем защитуНо вернемся к обсуждению непосредс-твенно Windows Server 2008.

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

Прежде всего мастер проверяет те-кущее состояние системы, в частности какие службы запущены на сервере.

Затем администратору предлагает-ся добавить или удалить службы или их компоненты на основе тех ролей, кото-рые выполняет данный сервер (напри-мер, файл-сервер или DNS-сервер). При этом для каждой службы можно получить ее краткое описание.

Далее мастер предлагает настро-ить состояние служб, режим запуска (Disabled/Manual/Automatic).

Следующим этапом в настройке Security Configuration является Network Security. Здесь предлагается настроить политики межсетевого экрана Windows (о котором мы подробно поговорим чуть позже) в соответствии со специ-альными шаблонами (например, кли-ент DHCP или DNS).

После настроек безопасности се-

ти выполняются настройки Registry Settings (см. рис. 11). Здесь опреде-ляются политики доступа к данному серверу на уровне приложений и про-токолов. То есть можно определить те требования, которые предъявляются к подключающимся хостам. Напри-мер, можно ли подключаться машинам с операционной системой Windows 98 или Windows CE.

Далее описываются способы ау-тентификации для удаленных ма-шин (Domain Accounts, Local Accounts on the Remote Computers, File Sharing Passwords) и способы аутентификации для локальных пользователей.

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

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

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

16

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

На следующем этапе можно настроить политики аудита, аналогично тому, что обычно делается через Group Policy, но только с помощью более удобного интерфейса.

По завершении работы мастера вам предлагается со-хранить созданную политику. Применить созданную поли-тику можно как сразу, так и позже.

Новый диспетчер задачСреди прочих компонент, входящих в состав Administrative Tools в Windows Server 2008, можно отметить Server Manager, в консоли которого можно оперативно получить все сведе-ния о системе: версию, IP-адрес, используемые сетевые протоколы, установленные обновления, роли.

Также нововведения появились в Task Scheduler (см. рис. 12). Теперь задачи можно привязывать к установ-ленным на сервере приложениям.

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

Межсетевой экранИ, наконец, поговорим о межсетевом экране, встроенном в Windows Server 2008. Различий с firewall, использовав-шимся в Windows 2003, довольно много, я бы даже сказал, что межсетевой экран в Windows 2008 – это совершенно новый продукт.

Теперь в межсетевом экране можно создавать пра-вила как для входящего, так и для исходящего трафика. (см. рис. 13).

При этом сразу появляется возможность редактиро-вания отдельно для доменных (Domain) профилей и отде-льно для частных (Private) профилей пользователей. В каж-дом правиле можно определить не только какое приложе-ние, какой порт и по какому протоколу использует. Так-же можно определить, какие пользователи и какие маши-ны могут устанавливать соединения с данным сервером. Ещё можно определить интерфейсы, к которым применя-ется то или иное правило.

Отдельно присутствует набор правил для защищенных соединений (см. рис. 14).

Как видно, имеется четыре готовых шаблона:n Isolation – ограничивает соединение, основываясь

на аутентификации пользователя, членстве в домене.n Authentication exemption – запрещает соединения

от определенных компьютеров.n Server-toServer – создает соединения между компью-

терами.n Tunnel – туннельные соединения с авторизацией меж-

ду шлюзами.

Режим Custom позволяет самостоятельно определить правила защищенного соединения.

Для каждого шаблона требуются свои, заранее заданные настройки. Шаблон Custom позволяет самостоя-тельно задать нужные настройки. Ду-маю, встроенный межсетевой экран в Windows Server 2008 вполне спосо-бен выполнять задачи по защите ре-сурсов сервера без помощи каких-ли-бо сторонних программных и аппарат-ных средств.

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

В новой операционной системе сделан акцент на улучшении средств безопасности, добавлены такие средства, как NPS, межсетевой эк-ран и другие.

Улучшен функционал, связанный

Рисунок 11. Настройки Registry Settings

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

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

17№7, июль 2007

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

с мониторингом событий и уведомле-нием администраторов.

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

Что касается недостатков, то они, конечно, тоже присутствуют.

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

Также уже есть некоторые про-блемы с совместимостью, в частнос-ти, не удалось установить Microsoft Forefront Security, антивирусный про-дукт от той же компании Microsoft.

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

Напоследок несколько слов о до-полнительных источниках информа-ции.

Помимо основной страницы, пос-вященной этому продукту, ht tp://www.microsoft.com/windowsserver2008 вы также можете многое узнать из фо-рума TechNet, который можно найти по адресу [5].

И наконец, самое главное, Windows Server 2008 Beta 3, как и любой бета-продукт, доступен для свободного ска-чивания. Так что, если вас заинтере-совала новая операционная система, то установить ее можно с диска, при-лагающегося к журналу.

Также любую из существующих ре-дакций можно получить по следующе-му адресу [6].

1. http://www.microsoft.com/downloads/details.aspx?FamilyID=298ff956-1e6c-4d97-a3ed-7e7f fc4bed32& displaylang=en – Step-by-Step Guide: Demonstrate IPsec NAP Enforcement in a Test Lab.

2. http://www.microsoft.com/downloads/details.aspx?FamilyID=8a0925ee-

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=729bba00-55ad-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 te 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.

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

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

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

18

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

Нелли Садретдинова

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

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

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

19№7, июль 2007

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

В начале 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 (входит в поставку) автономно на один сервер от адми-

нистратора потребуется минимум действий.

Полностью автоматически бу-дут развернуты «Центр администри-рования Sharepoint», семейство уз-лов и главный узел портала, доступ-ный по стандартному для http 80-му порту.

Е д инс твенное, пона добитс я предварительно установить – .NET Framework 3.0 (также можно скачать с сайта Microsoft).

Если установка производится на ферму серверов с использованием полноценной версии SQL-сервера, по-требуется некоторая настройка. Наибо-лее распространенный сценарий раз-мещения для средней фермы – это два сервера, на одном из которых развер-нут сервер баз данных, а на другом – все приложения Sharepoint. О других сценариях можно узнать в 2007 Office Resource Kit [1].

Для понимания дальнейших дейс-твий следует упомянуть, что в новой версии Sharepoint появилось такое по-нятие, как «поставщик общих служб» (Shared Services Provider или SSP), су-щественное расширившее возмож-ности «Управления общими служба-ми» в предыдущей версии. SSP пред-ставляет собой набор служб, которые являются общими для целого набора узлов и семейств узлов, и, соответс-твенно, имеют общие настройки безо-пасности, поиска, личных узлов и дру-гих параметров. Центр администриро-вания поставщика общих служб пред-ставляет собой отдельное веб-прило-жение с собственными настройками безопасности.

После окончания установки будет запущен «Мастер настройки и конфи-гурирования продуктов и технологий Sharepoint». Потребуется указать сер-вер баз данных и доменную учетную запись для служб Sharepoint.

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

мого;n для пула веб-приложений;n для пула приложения поставщика

общих служб;n для запуска поставщика общих

служб.

О требованиях и рекомендациях к этим учетным записям также можно узнать в 2007 Office Resource Kit [1].

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

Что приятно, в процессе конфи-гурации можно указать порт для уз-ла центрального администрирова-ния (раньше он выбирался случай-ным образом, и запомнить его бы-ло нелегко). После завершения рабо-ты мастера должна открыться стра-ница центрального администрирова-ния Sharepoint.

Возможные проблемы: если стра-ница администрирования не открыва-ется или выдает ошибку, чаще всего это связано с неправильной регистра-цией ASP .NET 2.0. Чтобы исправить ошибку, нужно заново зарегистриро-вать .NET 2.0, выполнив команду:

из директории «%windir%\Microsoft.NET\Framework\v2.0.xxxx»), проверить, пра-вильно ли указана ли версия .NET в на-стройках сайта IIS «Центр администри-рования Sharepoint» (или другого веб-приложения, с которым возникли про-блемы), и перезапустить IIS.

Когда администратор первый раз открывал страницу управления SPS 2003, у него сразу же возникал вопрос: что делать дальше? В новой версии продукта эту проблему раз-работчики учли. Теперь на главной странице администрирования сразу же открывается список задач, кото-рые необходимо выполнить для пер-воначальной настройки портала, при-чем каждая задача содержит ссылку на подробную справку на русском язы-ке (см. рис .1).

Из предложенного списка для быс-трого запуска портала с минимальным набором возможностей на ферме сер-веров понадобится выполнить всего четыре задачи:1) Включить службы «Веб-приложе-

ние Windows SharePoint Services» и «Поиск Office SharePoint Server» в разделе «Операции/Топология и службы/Службы на сервере».

aspnet –regiis –r

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

20

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

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

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

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

21№7, июль 2007

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

2) Создать три веб-приложения: для поставщика общих служб, лич-ных узлов и семейства узлов основ-ного портала. Теперь для этого не нужно открывать консоль управле-ния IIS, достаточно воспользовать-ся разделом «Управление прило-жениями/Создание или расшире-ние веб-приложения».

3) Следующий этап – создание пос-тавщика общих служб в разделе «Управление приложениями/Со-здание или настройка общих служб данной фермы».

4) Последним создается семейство узлов основного портала: на стра-нице «Управление приложениями» нужно выбрать из списка веб-при-ложение, которое вы ранее созда-ли для семейства узлов, и перейти к разделу «Создание семейства веб-узлов».

Ну вот, теперь можно открыть глав-ный узел семейства узлов. Настрой-ки узла, управление пользователя-ми и группами, редактирование теку-щей страницы и создание новых стра-ниц доступны в меню «Действия узла» (см. рис. 2).

Обратите внимание, что одни пара-метры изменяются для отдельного уз-ла, другие – только для всего семейс-тва узлов, и некоторые настраиваются на обоих уровнях (см. рис. 3).

Настройка и разработка узлов в но-вом портале, в частности, с исполь-зованием нового продукта Microsoft Sharepoint Designer, пришедшем на смену Frontpage, тоже во многом отличается от предыдущей версии, и описание всех интересных возмож-ностей – тема для отдельной статьи. Скажу лишь, что многие элементы ста-ло возможным легко редактировать с помощью веб-интерфейса, напри-мер, это верхняя и левая панели ссы-лок и логотип.

Миграция со старой версии порта-ла на MOSS 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\порт_приложения». Например, если вы используете новую

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

22

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

очень популярную веб-часть «Средс-тво просмотра RSS» или «Просмотр веб-страниц» из Интернета вам, воз-можно, потребуется настроить прок-си-сервер.

Для этого в файл web.config доста-точно вставить строки:

или:

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

Управление доступомВ MOSS 2007 для каждого веб-прило-жения необходимо определить постав-щика проверки подлинности («Управ-ление приложениями/Безопасность приложений/Поставщики проверки подлинности»). В этой роли могут вы-ступать встроенная проверка подлин-ности Windows, формы или служба единого входа.

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

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

ности Kerberos может понадобиться для чтения RSS-потоков внутри са-мого Sharepoint. В MOSS 2007 каждая библиотека документов или список мо-гут транслироваться в виде RSS-пото-ка. Это удобно, когда нужно собрать в одном месте информацию из раз-ных узлов и веб-приложений. Как раз для чтения такого потока с учетом прав доступа пользователей и потребуется Kerberos (за исключением случая, ког-да к библиотеке или списку, выступаю-щим в качестве источника, разрешен анонимный доступ).

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

Если эти возможности для вас не-актуальны, можно использовать про-верку подлинности NTLM.

Кроме того, изменилась схема до-ступа к данным. Администратор пор-тала теперь не имеет по умолчанию доступа ко всем узлам и семействам узлов. Для каждого семейства узлов и для каждого узла нужно явно ука-зать основного и дополнительного ад-министратора. Чтобы сделать все узлы веб-приложения доступными для ад-министратора (или наоборот, недо-ступными для какого-либо пользова-теля), можно воспользоваться «Поли-тикой для веб-приложения» («Управле-ние приложениями/Безопасность при-ложений»).

Кроме того, разрешениями для пользователей теперь можно уп-равлять не только на уровне узла, библиотеки документов или списка, но и на уровне отдельных элементов или документов. В случае интегра-ции с Rights Management Server (RMS) можно разграничивать доступ внутри документа.

Внимание! При создании узла до-ступ на чтение не предоставляется всем пользователями автоматически. Для этого нужно в разделе «Парамет-ры узла/Разрешения» выбрать пункт меню «Добавить пользователя», да-лее «Добавить всех пользователей, имеющих учетные записи» или же яв-ным образом добавить к читателям группу «NT AUTHORITY\Authenticated Users». Если доступны несколько до-

менов, возможно, понадобится дать доступ пользователям только одно-го из них. В этом случае нужно доба-вить группу «yourdomain\domain users» (см. рис. 8).

Авторизация на основе формО возможности авторизации незави-симо от домена давно мечтали мно-гие администраторы и разработчики Sharepoint. В новой версии Sharepoint сделать вариант авторизации на ба-зе форм достаточно просто, при-чем, если воспользоваться стандарт-ным SQL Membership провайдером ASP.NET, для этого не придется пи-сать ни единой строчки кода. Можно также создать Role Manager (менед-жер ролей), в этом случае «Роль» бу-дет аналогична группе пользовате-лей домена.

К сожалению, для подробного рас-смотрения развертывания аутенти-фикации с помощью форм в этой ста-тье места не найдется, однако для тех, кто хорошо знаком с администрирова-нием 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].

4) Указать созданные Membership и Role Manager в качестве постав-щика проверки подлинности и уп-равляющего ролями для выбранно-го веб-приложения в разделе «Уп-равление приложениями» центра администрирования.

5) Создать семейство узлов Sharepoint, указать в качестве администратора пользователя из Membership.

6) Открыть семейство узлов и до-бавить разрешения для досту-па к сайту нужных пользователей из Membership.

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

<system.net> <defaultProxy> <proxy usesystemdefault="true" />

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

23№7, июль 2007

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

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

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

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

24

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

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

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

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

25№7, июль 2007

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

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

Интернет-сайт легко создать средствами нового портала, доста-точно выбрать шаблон «Публикация/Портал публикации» при создании но-вого семейства узлов. Однако следу-ет обратить внимание, что для этого потребуется дополнительное лицен-зирование.

Внимание! Вопреки распростра-ненному в Интернете мнению, все веб-части бизнес-компонентов на интернет-узлах работают, нужно только вклю-чить корпоративные компоненты в «Уп-равлении возможностями» семейства узлов и конкретного узла, т.к. по умол-чанию они отключены.

Внешний сайт, создаваемый по умолчанию, смотрите на рис .9.

Но это еще не самое интересное. Замечателен факт, что для каждого веб-приложения можно настроить од-новременно до пяти (!) способов аутен-тификации в зависимости от так назы-ваемой «зоны».

«Зоны» различаются по адресу URL. Допустим, у вас есть веб-при-ложение с внутренним адресом http://moss_server и стандартной аутентифи-кацией Windows. А вы хотите сделать его доступным для партнеров через Интернет и использовать для них ав-торизацию на основе форм.

В этом случае вам нужно расши-рить это веб-приложение со стра-ницы «Управление приложениями» и указать в поле«URL-адрес доме-на со сбалансированной нагрузкой» URL, который будет использоваться для доступа через Интернет, напри-мер, http://www.mycompany.ru. Зна-чение в поле «Зона» означает все-го лишь название зоны и ни на что не влияет. Можно выбрать, например, «Интернет».

После этого на странице «Пос-тавщики проверки подлинности» для приложения http://moss_server вы найдете две зоны – «По умолчанию» и «Интернет». Для зоны «Интернет» можно настроить отдельного постав-щика проверки подлинности на ос-нове форм.

В результате одно и то же веб-при-ложение будет доступно:

n по адресу http://moss_server из ло-кальной сети со стандартной аутен-тификацией Windows;

n по адресу http://www.mycompany.ru из Интернета с аутентификацией на основе форм.

Синхронизация с AD и профили пользователейЕще одна исполненная мечта ад-министраторов. В WSS 3.0 можно не только легко импортировать про-фили пользователей из Active Directory, но и настроить синхронизацию по рас-писанию.

Сделать это можно в настрой-ках поставщика общих служб, раз-дел «Свойства и профили пользо-вателей». Как и в предыдущей вер-сии, можно также настроить сопос-тавление свойств Active Directory и профиля пользователя в Sharepoint (см. рис. 10).

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

Интеграция с почтовой системойПараметры почтового сервера для ис-ходящей почты и входящей почты на-страиваются в разделе «Операции/Топология и службы». Если отправ-кой уведомлений по электронной поч-те администратора Sharepoint не уди-вишь, то прием входящей электрон-ной почты – весьма полезная воз-можность.

Для включения этой возможнос-ти не понадобится почтовый сервер, достаточно установить виртуальный SMTP-сервер IIS и настроить парамет-ры входящей почты в разделе центра администрирования «Операции».

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

Адрес, с которого будет собирать-ся почта, в этом случае выглядит как «name@server», где name – имя, ука-занное в параметрах библиотеки доку-ментов Sharepoint, а server – имя front-end сервера Sharepoint.

Эта возможность весьма удобна для сбора отзывов или заявок в служ-

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

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

Backup и базы данныхЕсли SPS 2003 хранил всю необходи-мую информацию в трех базах дан-ных, то MOSS 2007 использует их мно-жество. Это база данных конфигура-ции портала, отдельная база данных для поставщика общих служб, отде-льная база для каждого веб-приложе-ния, база для хранения результатов ин-дексации и некоторые другие.

Вместо отдельной утилиты для ре-зервного копирования портала теперь нам доступен раздел «Резервное копи-рование и восстановление» на страни-це «Операции». Здесь же можно про-смотреть полный список всех баз дан-ных (см. рис. 11).

Эти средства позволят выполнить однократное сохранение данных пор-тала, однако настроить регулярное копирование по расписанию невоз-можно.

Рекомендуется сохранить полный список баз данных и воспользовать-ся стандартными средствами резерв-ного копирования Microsoft SQL Server или выполнять копирование с помо-щью стандартного планировщика за-даний и утилиты командной строки stsadm. Позволяют выполнять резер-вные копии портала и некоторые спе-циализированные программные про-дукты, например, ArcServ.

Внимание! Стандартные средства резервного копирования по-прежне-му не включают директорию, где хра-нятся схемы, шаблоны, иконки, сти-левые таблицы и др. Если вы или ва-ши разработчики вносите изменения в эти файлы, директорию нужно ко-пировать отдельно. Для MOSS 2007 и WSS 3.0 она находится по адре-су: «системный диск:\Program Files\

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

26

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

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

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

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

27№7, июль 2007

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

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

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/Надежные расположения данных» указать адрес этой биб-лиотеки.

n Проверить, включены ли компо-ненты корпоративного выпуска Sharepoint на всех необходимых уровнях в «Управлении возможнос-тями».

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

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

В предыдущей версии отображать данные из других источников мож-но было только посредством встав-ки на страницу веб-части «Представ-ление данных» с помощью Microsoft Office Frontpage.

Каталоги бизнес-данных облада-ют рядом преимуществ по сравнению с этим способом:

n с помощью BDC можно отображать бизнес-данные в одном из столб-цов обычного списка или библио-теки Sharepoint;

n бизнес-данные можно легко встав-лять на страницы посредством веб-интерфейса и связывать между собой;

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

n BDC позволяют дополнять профили пользователей данными из внеш-них систем, например, кадровых;

n BDC позволяют осуществлять по-иск средствами Sharepoint во внеш-них источниках;

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

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

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

28

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

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

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

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

29№7, июль 2007

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

Для использования бизнес-данных необходимо:n создать файл определения при-

ложения (примеры можно найти в SDK [2]);

n импортировать файл определения и настроить параметры безопас-ности на странице управления пос-тавщиком общих служб в разделе «Каталог бизнес-данных» для ката-лога в целом и для каждого прило-жения и сущности в отдельности;

n проверить, включены ли компонен-ты корпоративного выпуска в «Уп-равлении возможностями»;

n добавить на страницу веб-часть «Список бизнес-данных» или дру-гие подходящие веб-части.

Однако каталоги бизнес-данных достаточно сложны в настройке – в на-писании XML-файлов с определени-ем приложения не так-то просто разо-

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

Впрочем, сейчас появились сторон-ние программные продукты для визу-ального создания файлов определе-ний приложений (например, MOSS BDC Design Studio или BDC Meta Man), но они работают далеко не со всеми базами данных и не работают с ODBC.

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

Для этого необходимо:n Запустить встроенный сервис

«Microsoft Single Sign On» («Служ-ба единого входа Microsoft»).

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

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

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

крытие, просмотр, изменение эле-ментов и документов);

n корзина на двух уровнях (на уров-не узла, доступная всем пользова-телям, и на уровне семейства уз-лов, доступная только админист-ратору);

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

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

30

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

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

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

РазочарованияХотелось бы отметить один негатив-ный момент – в русской версии MOSS 2007 не везде корректно выполнен перевод.

Например, «master page» переведе-на как «Главная страница», в то время как на самом деле – это основной шаб-лон или образец. Так в меню появля-ются рядом пункты «Главная страни-ца» и «Начальная страница».

Таких неудачных примеров можно найти достаточно, поэтому при возник-новении непонимания стоит подумать и о нюансах перевода.

Широко рекламируемый и долго-жданный workflow (рабочие процес-

сы) в Sharepoint оставляет желать лучшего.

Возможности для разработки до-статочно сложных процессов есть – это и 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. 2007 Of f ice Resource Kit – ht tp: //technet2.microsoft.com/Office/en-us/l ib rar y/9d f1c7d2-30a9 - 47bb -a3b2-5166b394fbf51033.mspx?mfr=true.

2. Sharepoint Server 2007 SDK – http://www.microsoft.com/downloads/details.aspx?FamilyID=6d94e307-67d9-41ac-b2d6-0074d6286fa9&DisplayLang=en.

3. Planning and architecture for Office SharePoint Server 2007 – книга, две части которой можно скачать по адресам: http://go.microsoft.com/fwl ink /?LinkID=79552&clc id=0x409 и h t t p : / /go .m ic roso f t .c om / f w l i nk /?LinkId=85548&clcid=0x409.

4. Все о Sharepoint на сайте Microsoft – h t t p : / /o f f i c e .m i c roso f t .c om / ru - ru /sharepointserver/default.aspx.

5. Самый активный русскоязычный форум по Sharepoint – http://www.gotdotnet.ru/Forums/SharePoint/default.aspx.

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

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

32

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

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

Андрей Бирюков

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

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

33№7, июль 2007

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

Отказ ключевых бизнес-прило-жений всегда является боль-шой проблемой для систем-

ных администраторов. Для ее решения можно использовать службу Microsoft Clustering Service, входящую в состав Windows Server 2003 Enterprise Edition. Однако, кроме этой службы в состав Windows Server 2003 также входит служба Network Load Balancing. В чем же различие между этими двумя клас-терными службами?

Microsoft Cluster Service прежде всего дублирует систему хранения дан-ных, позволяя реализовать отказоус-тойчивость посредством замены вы-шедшего из строя узла другими узла-ми кластера. Такое построение клас-тера удобно при реализации отказо-устойчивости для таких приложений, как Microsoft Exchange, баз данных Microsoft SQL и других.

Другим решением, позволяющим также построить масштабируемую сис-тему является Network Load Balancing. Данная служба дублирует сетевые службы, распределяя нагрузку между всеми узлами кластера. Служба NLB в основном используется при работе с такими приложениями, как служба Web, FTP, Terminal Service.

Технология NLBОбсудим теоретические основы тех-нологии. NLB – это драйвер сетево-го обмена Windows 2003. Он действу-ет независимо от сетевого стека TCP/IP и прозрачен для этого стека. Основ-ным элементом службы NLB является Windows Load Balancing, приложение, отвечающее за распределение нагруз-ки между узлами кластера.

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

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

Выбор режима работы NLB-кластераУзел может быть создан и настроен для работы в одном из четырех режи-мов, каждый из которых имеет свои достоинства и недостатки. Это следу-ющие режимы:n один сетевой адаптер в одноадрес-

ном режиме;n один сетевой адаптер в групповом

(многоадресном) режиме;n несколько сетевых адаптеров в од-

ноадресном режиме;n несколько сетевых адаптеров

в групповом режиме.

Выбор режима функционирования кластера зависит от обстоятельств, требований и ограничений, налагае-мых на структуру кластера. Рассмот-рим каждую из них.

Один сетевой адаптер, работаю-щий в одноадресном режиме, явля-ется в некотором смысле самым прос-тым типом, и узел с одним адаптером немного дешевле, чем с несколькими. Но при этом налагаются существен-ные ограничения: снижается произво-дительность сети в целом, отключают-ся обычные соединения между узла-ми кластера, и наконец, в таком клас-тере нет поддержки NetBIOS. Конеч-но, последний пункт многим покажется не очень критичным, так как NetBIOS сейчас мало кем используется, но все же такое ограничение есть.

Один сетевой адаптер в груп-повом (многоадресном) режиме предназначен для кластеров, в кото-рых один или несколько узлов имеют один сетевой адаптер. Соответствен-но, между узлами в кластере можно устанавливать обыч-ные соединения. Это свойс-тво позволяет обойти одно из наиболее неудобных огра-ничений работы с одним се-тевым адаптером в одноад-ресном режиме. К недостат-кам этой модели можно от-нести: снижение общей про-изводительности сети, воз-можны проблемы с комму-таторами, которые не подде-рживают групповые MAC-ад-реса. Также в таком класте-ре нет поддержки NetBIOS.

Несколько сетевых адаптеров в одноадрес-

ном режиме – данная конфигурация, как правило, является наиболее пред-почтительной. В ней используется вто-рой сетевой адаптер на каждом узле кластера, что позволяет получить сле-дующие преимущества: нет ограниче-ний на обычные сетевые соединения между узлами, возможна поддержка NetBIOS через первый сконфигури-рованный адаптер, не снижается про-изводительность сети и не возникает проблем с коммутаторами.

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

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

Теперь обсудим некоторые момен-ты, связанные с предварительной на-стройкой NLB-кластера.

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

Во-вторых, неплохо бы позаботить-

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

Рисунок 1. Создание NLB-кластера

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

34

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

ся об организации отказоустойчивого подключения сетевого оборудования, которое применяется в NLB-класте-ре. Также для определенных моделей оборудования можно использовать VRP (Virtual Router Protocol) и HRSP (Hot Router Standby Protocol). Это поз-воляет маршрутизатору преобразовы-вать основной IP-адрес кластера и дру-гие групповые адреса в соответству-ющий аппаратный адрес. Некоторые модели маршрутизаторов и коммута-торов не удовлетворяют данным ус-ловиям, и тогда в них можно создать статическую ARP-запись или исполь-зовать службу балансировки нагруз-ки сети в стандартном одноадресном режиме.

В-третьих, на адаптере, для кото-рого включена служба NLB, можно использовать только протоколы сте-ка TCP/IP. Никакие другие протоколы (например IPX) для данного адаптера устанавливать не нужно. Также про-следите, чтобы на каждом из узлов были открыты все необходимые пор-ты на межсетевом экране (если он ис-пользуется), например, если кластери-зуется FTP-сервер, то необходимо от-крыть 20-й и 21-й порты на всех узлах. Не забудьте проверить, на всех ли уз-лах кластера запускается данное при-ложение.

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

от взлома (находится за межсетевым экраном). Механизм удаленного уп-равления использует протокол UDP по порту 2504. Команды, используе-мые для удаленного управления клас-тером, отправляются на сетевой адап-тер, использующий службу NLB. Затем данные команды передаются всем уз-лам кластера уже по локальной, внут-ренней подсети кластера, с использо-ванием широковещательных сообще-ний. Это гарантирует получение ко-манд всеми узлами кластера, даже если он работает в одноадресном ре-жиме. Поэтому необходимо уделить особое внимание защите внутренней подсети кластера, так как широкове-щательные сообщения легко можно перехватить.

Если средства удаленного управ-ления включены, то с помощью про-граммы nlb.exe можно осуществлять управление кластером по сети.

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

В качестве примера я буду развора-чивать NLB-кластер для распределе-ния нагрузки службы Terminal Service. Средства удаленной работы в Windows приобретают все большую популяр-ность, так как возможность использо-вать не очень мощные рабочие стан-ции в качестве клиентской консоли только для создания соединения с сер-вером терминалов является доволь-но привлекательной, ведь вся основ-

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

Мы будем реализовывать двухуз-ловой NLB-кластер, в котором в ка-честве приложения будет развернута служба Terminal Service.

РеализацияИтак, приступим к установке класте-ра с распределенной нагрузкой NLB. Для этого необходимо настроить се-тевые параметры кластера, парамет-ры узла и необходимые порты. Как уже упоминалось ранее, для реше-ния задачи необходимо использовать несколько сетевых адаптеров. Соот-ветственно, и описывать настройку я буду для нескольких сетевых адап-теров. Если вы собираетесь исполь-зовать один сетевой адаптер, так что-бы все используемые IP-подсети ра-ботали внутри одной кабельной сети, то за подробной инструкцией обра-титесь к статье базы знаний Microsoft за номером 323431.

О т к р о й т е р а з д е л « N e t w o r k Load Balancing Manager» из папки «Administrative Tools». В левой пане-ли щелкните правой кнопкой мыши на «Network Load Balancing Clusters» и выберите пункт «New Cluster» (созда-ние кластера). Далее, в окне «Cluster Parameters» нужно ввести IP-адрес, маску подсети и полностью опреде-ленное доменное имя (FQDN), под ко-торым будет известен данный кластер (cм. рис. 1).

Очевидно, что IP-адрес должен быть фиксированный, то есть он не мо-жет быть динамическим адресом, вы-деляемым внешним DHCP.

Затем необходимо определиться, в каком режиме должен работать клас-тер – в одноадресном (unicast) или мно-гоадресном (multicast), и указать, нужно ли разрешить удаленное управление (флажок «Allow remote control»), а за-тем щелкнуть по кнопке «Next».

Как уже упоминалось ранее, с уда-ленным администрированием нужно быть очень аккуратным, во избежа-ние возможных проблем с безопас-ностью.

Если необходимо, чтобы кластер имел дополнительные IP-адреса, вве-дите их в окне «Cluster IP Address», по-том нажимите «Next».

Затем можно определить прави-ла для портов или оставить их конфи-гурирование до момента, когда этот кластер будет запущен. С помощью Рисунок 2. Добавление узлов

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

35№7, июль 2007

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

правил для портов можно управлять поведением различных типов трафи-ка TCP/IP.

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

В следующем окне «Connect» вве-дите имя или IP-адрес первой хост-машины, которая будет включена в этот кластер. Щелкните по кноп-ке «Connect», чтобы подсоединиться к данному узлу и получить на экране список доступных сетевых интерфей-сов. Выделите интерфейс, через ко-торый будет проходить открытый тра-фик этого кластера (в отличие от час-тного, межузлового трафика, который используется узлами для обмена ин-формацией).

В окне «Host Parameters» вы мо-жете задать приоритет (в поле Priority) для данного узла кластера (для реше-ния нашей задачи повышения отказо-устойчивости указываем приоритет, равный единице) и выделенный IP-ад-рес, который будет использоваться для подсоединения к этому конкрет-ному серверу (в отличие от кластера в целом). Это должен быть фиксиро-ванный IP-адрес, а не адрес, выдан-ный DHCP.

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

Последним этапом вам необходи-мо задать начальное состояние узла

на момент запуска Windows. Указыва-ем состояние Started. Затем нажима-ем «Finish».

При необходимости добавить еще один узел в уже существующий NLB-кластер необходимо выполнить следующее. В консоли «Network Load Balancing Manager» выбираем уже су-ществующий кластер и нажимаем пра-вую кнопку мыши, затем «Add Host To Cluster». В окне Connect указываем имя или IP-адрес узла, добавляемого в наш кластер (см. рис. 2).

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

Далее аналогично уже описанным ранее действиям указываем парамет-ры для данного узла, приоритет, состо-яние на момент запуска. После нажа-тия «Finish» получаем следующую кар-тину (см. рис. 3).

В случае, если по каким-либо при-чинам вам необходимо вывести узел из кластера, достаточно выбрать дан-ный хост и, нажав правую кнопку мы-ши, указать Delete Host.

Настраиваем каталог сеансовИтак, NLB-кластер успешно создан. Вообще его уже можно использовать для решения своих задач, указывая в качестве IP-адреса адрес самого кластера. Например, для решения на-шей задачи с терминальным сервером вы уже можете подсоединиться к клас-теру по его IP-адресу и использовать службу терминалов в режиме распре-деленной нагрузки. Но тут возника-ет небольшая проблема, свойствен-

ная именно серверам терминалов. Что делать с разъединенными сеанса-ми пользователей, ведь в случае вы-хода из строя одного из узлов класте-ра часть пользовательских сессий мо-гут «повиснуть».

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

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

Однако в случае кластера с распре-делением нагрузки Session Manager, служба, отвечающая за распреде-ление терминальных сессий, ничего не знает о сеансах на других серве-рах. Поэтому Microsoft ввела понятие каталога сеансов (Session Directory). Каталог сеансов поддерживает дина-мическую базу данных, которая хра-нит соответствия имен пользовате-лей и открытых сеансов на всех терми-нальных серверах кластера. Это поз-воляет пользователям подключаться к своим сеансам на любом сервере в кластере независимо от того, на ка-кой сервер его изначально направила служба NLB.

Настроим данную службу на нашем кластере. Session Directory может ис-

Рисунок 3. Консоль управления NLB Рисунок 4. Настройки службы Session Directory

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

36

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

пользовать любую редакцию WS2K3. Вы даже можете создать каталог се-ансов на одном терминальном серве-ре в кластере, хотя это не рекомендует-ся, поскольку остановка этого сервера для обслуживания или установки ПО может затронуть весь кластер.

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

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

После создания сервера каталога сеансов нужно настроить терминаль-ные серверы. Для этого можно прибег-нуть либо к помощи консоли Terminal Services Configuration, либо воспользо-ваться редактором групповых политик.

Также, если вы используете 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).

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

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

веб-сервиса или для какого-либо спе-циализированного приложения с рас-пределением нагрузки. В статье приво-дится лишь пример одного из возмож-ных способов использования Network Load Balancing.

Однако есть несколько общих сове-тов по оптимизации работы NLB-клас-тера. Прежде всего необходимо ясно понимать, где вероятнее всего нахо-дится «узкое» место вашего кластери-зованного приложения. В случае с тер-минальным сервером, например, бу-дут активно использоваться процес-сор и память узлов кластера. Следова-тельно, следует заранее позаботиться о том, чтобы мощность была достаточ-ной для работы в NLB-кластере.

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

Также для оптимизации внесите правку в реестр на каждом из узлов кластера, изменив значение следую-щего ключа с 1, используемой по умол-чанию, на 0: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\WLBS\Parameters\MaskSourceMAC.

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

ЗаключениеНа этом завершается серия статей, посвященная кластерным технологи-ям в Windows Server 2003. Надеюсь, что описанные технологии пригодят-ся в нелегком деле обеспечения не-прерывности работы корпоративных IT-систем.

1. Microsoft.com. Статья № 323437.2. http://www.microsoft.com/Rus/Business/

In f ras t ruc tu re / Un i f i ed /Sca lab i l i t y /Default.mspx.

3. Ч. Рассел. Microsoft Server 2003. Спра-вочник администратора.

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

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

37№7, июль 2007

bugtraq

Переполнение буфера в 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 с сайта про-изводителя.

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

Выполнение произвольного кода в 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.Решение: В настоящее время способов устранения уязви-мости не существует.

Переполнение буфера в 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.Решение: Установите исправление с сайта производите-ля.

Несколько уязвимостей в 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 с сайта производителя.

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

2. Уязвимость существует из-за ошибки при провер-ке подлинности номера активного листа. Удаленный поль-зователь может с помощью специально сформированно-го Excel-файла вызвать повреждение памяти и выполнить произвольный код на целевой системе.

3. Уязвимость существует из-за ошибки при обработ-ке начальных атрибутов, ассоциированных с рабочим лис-том. Удаленный пользователь может с помощью специаль-но сформированного Excel-файла выполнить произвольный код на целевой системе.URL производителя: www.microsoft.com.Решение: Установите исправление с сайта производите-ля.

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

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

38

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

Андрей Шетухин

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

О сравнении производительности MySQL и PostgreSQL написана не одна статья, и всезнающий

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

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

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

VS

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

39№7, июль 2007

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

дут свои дневники, пишут и читают комментарии, но и чи-тают записи своих друзей.

Сервер и настройки системыСервер – HP ProLiant DL380 2xXeon3.2, RAM 5 Гб, SCSI HDD u320.

Операционная система – Linux Debian, kernel 2.6.18.

Установленное ПО:

К сожалению, настройки как MySQL, так и PostgreSQL

достаточно сложны, и предоставить их в этой статье вмес-те с достойным описанием не позволяет объем.

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

MySQL:

PostgreSQL:

Схема БД представлена на рисунке.Для PostgreSQL:

# cat /proc/meminfo

MemTotal: 5016868 kBMemFree: 4087256 kBBuffers: 152704 kBCached: 643356 kBSwapCached: 0 kBActive: 492940 kBInactive: 339252 kBHighTotal: 0 kBHighFree: 0 kBLowTotal: 5016868 kBLowFree: 4087256 kBSwapTotal: 7815580 kBSwapFree: 7815532 kBDirty: 80 kBWriteback: 0 kBAnonPages: 6820 kBMapped: 15812 kBSlab: 76636 kBPageTables: 1084 kBNFS_Unstable: 0 kBBounce: 0 kBCommitLimit: 10324012 kBCommitted_AS: 297940 kBVmallocTotal: 34359738367 kBVmallocUsed: 4100 kBVmallocChunk: 34359734091 kB

core file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedmax nice (-e) 0file size (blocks, -f) unlimitedpending signals (-i) unlimitedmax locked memory (kbytes, -l) unlimitedmax memory size (kbytes, -m) unlimitedopen files (-n) 65535pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) unlimitedmax rt priority (-r) 0stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) unlimitedvirtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited

# ulimit -a

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)

# InnoDBsync_binlog = 0innodb_buffer_pool_size = 2048Minnodb_additional_mem_pool_size = 64Minnodb_log_files_in_group = 2innodb_log_file_size = 512Minnodb_log_buffer_size = 8Minnodb_flush_log_at_trx_commit = 0

# MyISAMkey_buffer = 1024Mtable_cache = 1024sort_buffer_size = 16Mread_buffer_size = 4Mread_rnd_buffer_size = 4Mmyisam_sort_buffer_size = 4Mquery_cache_size = 16M

shared_buffers = 500000temp_buffers = 4000max_prepared_transactions = 0work_mem = 128000maintenance_work_mem = 256000max_stack_depth = 8192max_fsm_pages = 200000max_fsm_relations = 10000max_files_per_process = 1000stats_start_collector = onstats_command_string = offstats_row_level = onautovacuum = on

Схема БД

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 ↵ USING btree (user_name);

CREATE TABLE friends(

VS

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

40

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

Для MySQL:

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

Методика тестированияРаспредение количества запросов на чтение и запись бы-ло выбрано в отношении 80% и 20% соответственно. Пос-ле запуска на тестирование производилась выдержка в те-чение нескольких десятков секунд для стабилизации ре-зультатов. На каждую СУБД производилось пять тестов, результат усреднялся.

Тестировались следующие запросы (в процентах от об-щего числа):n чтение френдленты (95%);n чтение постов и комментариев (5%);n запись постов и комментариев к ним (95%);n создание новых пользователей и изменение свойств

уже существующих (5%).

Эти четыре типа запросов дают практически полную эмуляцию работы блогосервиса.

Для PostgreSQL запросы выглядят так:Чтение френдленты:

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

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

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

Создание пользователя:

Редактирование свойств пользователя:

Для MySQL:Запрос чтение ленты. Общий вид запроса следую-

щий:

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;

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;

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;

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;

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;

SELECT * FROM posts WHERE (posts_id = PostId);

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

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

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

SELECT NewUser(UserName)

SELECT ModifyUser(UserId, UserName);

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;

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

41№7, июль 2007

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

Для максимально оптимальной выборки необходимо на внутренний запрос подключить индекс по первичному ключу таблицы friends, а для внешнего запроса – первичный ключ по таблице posts.

Однако, поскольку MySQL всех версий не умеет адекватно оптимизировать внешний запрос вне зависимости от созданных индексов и их явного указния через FORCE(key list), раз-биваем сложный запрос на два простых: в пер-вом запросе получаем список пользователей, а во втором – выбираем посты.

и

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

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

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

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

Создание пользователя:

Редактирование свойств пользователя:

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

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

Именно поэтому в высоконагруженных проектах не-допустимо использование «универсальных» фреймвор-ков для БД, поскольку ни один из них не учитывает архи-тектуру проекта, в котором используется, а большинство их них не учитывает даже порядка использования индек-сов в СУБД.

Поговорим про оптимизацию кода. Разумеется, коли-чество «служебных» запросов (проверок наличия или от-сутствия пользователя, комментариев и т. п.) можно сокра-тить, введя, например, users_id как хэшированное имя поль-зователя или разместив в памяти хэштаблицу ID и имен пользователей. Однако здесь мы тестируем производи-тельность именно СУБД, а не всего программного комп-лекса в целом.

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

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

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

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

Удачи!

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

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 InnoDB (read/write per sec)

MySQL MyISAM (read/write per sec)

PostgreSQL (read/write per sec)

1 600/60 500/20 4000/1500

5 1100/110 600/50 12000/3000

10 1100/110 600/50 14000/4000

11-17 800/70 400/30 14000/4000

20 и более Отказ от обслуживания Отказ от обслуживания 14000/4000

Результаты тестирования СУБД MySQL и PostgreSQL в зависимости от количества подключений

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

42

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

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

Дмитрий Столяров

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

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

43№7, июль 2007

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

OpenWRT – это дистрибутив для встраиваемых устройств, основанный на GNU/Linux.

Изначально OpenWRT был создан для Linksys WRT54G и подобных мо-делей, но со временем он включил поддержку многих других архитектур от различных производителей. К са-мым популярным моделям маршру-тизаторов, на которых он использует-ся, относятся Linksys WRT54G и ASUS WL-500g (см. «Поддерживаемые мо-дели маршрутизаторов»). Оборудо-вание, на котором устанавливается OpenWRT, следует концепции SOC (System-on-a-chip), при которой все компоненты компьютера интегриру-ются в один чип. То есть фактичес-ки описываемые модели маршрути-заторов являются небольшими ком-пьютерами. Далее везде под поняти-ями «маршрутизатор» и «роутер» бу-дут пониматься устройства именно та-кого класса.

Появление OpenWRT стало воз-можным благодаря тому, что многие производители роутеров в качест-ве базового программного обеспе-чения использовали свободное ПО, что обязывало их опубликовывать собственные наработки на аналогич-ных правах.

Первое время единственным ин-терфейсом управления OpenWRT бы-ла командная строка (SSH/telnet), поз-же появился веб-интерфейс (webif). Сейчас на замену webif пришел webif^2, отдельно разрабатываемый в рамках проекта X-Wrt (см. «Установка веб-ин-терфейса»). Веб-интерфейс, как это часто бывает, не дает доступа к уп-равлению всем имеющимся функцио-налом, но зато более удобен для мно-гих конечных пользователей.

Одна из ключевых особенностей OpenWRT – использование файловой системы, поддерживающей запись и специально созданной для flash-на-копителей – JFFS2. Эта ФС учитывает специфику перезаписи flash-памяти, относясь к ней гораздо бережнее.

Ее наличие дало возможность ис-пользования системы управления пакетами – ipkg (см. «Общие сведе-ния о работе в OpenWRT»). ipkg – это версия пакетного менеджера Debian (dpkg), адаптированная для исполь-зования во встраиваемых системах и КПК.

Тек уща я с табильна я верс ия OpenWRT – White Russian 0.9. Все примеры будут приводиться именно для этой версии.

Мотивация к использованиюПрежде всего надо понять, что, собс-твенно, нужно. Если требуется марш-рутизатор, подключающийся к провай-деру и предоставляющий доступ не-скольким компьютерам посредством NAT, и он вполне стабильно работает, OpenWRT – это не ваш случай.

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

Случай первый: несколько VPN‑подключенийДопустим, из домашней сети необ-ходимо часто подключаться к рабо-чей, и вам не нравится постоянно включать/отключать VPN-соединение на вашем компьютере. Или же вы хо-тите, чтобы ваш роутер был подклю-чен к нескольким местам одновре-менно, например, к провайдеру (пос-редством PPPoE), а также в вашу ра-бочую сеть (по протоколу PPTP) и к ва-шему коллеге, с которым вы играете в компьютерные игры (с использова-нием OpenVPN). Причем так, чтобы все это работало прозрачно, не тре-бовало сложной настройки при каж-дом подключении. Такая конфигура-ция реализуема на роутерах под уп-равлением OpenWRT (см. «Настрой-ка PPTP-клиента»).

Случай второй: VPN‑доступ в вашу локальную сетьВы часто сталкиваетесь с необходи-мостью подключаться удаленно к се-ти, в которой роль главного маршрути-затора выполняет SOC-роутер.

Если вы используете OpenWRT, у вас появится возможность настро-ить VPN-сервер. Более того, вы смо-жете выбрать, какую именно VPN-ре-ализацию использовать: OpenVPN, PPTP или L2TP. Такой VPN-сервер бу-дет на приемлемом уровне обслужи-вать 1-2 клиентов, что является до-статочным для малых сетей (см. «На-стройка VPN-сервера с использова-нием PPTPD»).

Случай третий: загрузка файловВы загружаете много больших фай-лов или часто пользуетесь пиринго-выми сетями, но вам неудобно дер-жать ваш компьютер включенным во время закачки. Такая задача разре-шима, если роутер имеет USB-порт. К нему потребуется подключить flash-накопитель, а затем с помощью таких утилит, как wget или ctorrent (консоль-ный BitTorrent-клиент), загружать фай-лы на накопитель.

После этого, подключив flash-нако-питель к вашему компьютеру или со-единившись с предварительно уста-новленным на маршрутизаторе FTP-сервером (см. «Настройка FTP-сер-вера»), вы получите доступ к загру-женным файлам. Кроме flash-нако-пителя может быть использован жес-ткий диск, подключаемый также пос-редством USB (однако для USB HDD, скорее всего, понадобится внешнее питание).

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

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

Аппаратные доработкиМногие маршрутизаторы обладают не-большим объемом памяти, при этом их ад-ресная шина имеет разрядность, достаточ-

ную для адресации большего объема ОП. Таким образом, становится возможной за-мена модулей памяти меньшего размера (например, 8 Мб) на большие (например, 16 или 32 Мб). Историю успеха такой ап-паратной модернизации вы можете под-робнее изучить на русскоязычном форуме, посвященном прошивкам для ASUS [9]. За-мечу, что такие эксперименты наиболее ин-тересны любителям «олова и паяльника».

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

44

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

тановить веб-сервер (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 журнала).

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

В системе присутствуют скрипты инициализации. Они расположены в директории /etc/init.d/ и являются обычны-ми shell-скриптами.

Важным компонентом системы является пакетный ме-неджер ipkg. Он очень прост в использовании, быстро ра-ботает и обладает достаточным функционалом. Рассмот-рим основные его функции:n ipkg update – обновляет список пакетов (загружая его

из источников, указанных в конфигурационном фай-ле);

n ipkg upgrade – обновляет все установленные пакеты;n ipkg install <имя_пакета> – устанавливает пакет (в ка-

честве параметра может принимать имя пакета, а также путь или HTTP URL, указывающий на файл пакета);

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 обладает компонентом, реа-лизующим эту задачу:

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

Как уже сообщалось, существуют и другие интерфейсы управления, доступные через 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, она примон-тирована в /.

$ ls -l /bin/rm

$ busybox

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

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

$ echo $SHELL

/bin/ash

$ ls -l /usr/bin/dropbearkey

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

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

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

45№7, июль 2007

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

Выглядит это следующим образом:

Процесс прошивки OpenWRT в маршрутизаторОбщепринятым и наиболее универсальным способом на-чальной установки является инсталляция посредством tftp (легковесный FTP, работающий поверх UDP, а не TCP). За-грузчик рассматриваемого устройства создан таким обра-зом, что может принять образ прошивки по tftp и записать его на встроенную flash-память. Для проведения этой опе-рации потребуется клиент tftp.

Для установки выберем минимальный образ системы, ко-торый можно скачать по адресу: http://downloads.openwrt.org/whiterussian/0.9/micro.

Названия файлов в этой директории формируют-ся следующим образом: openwrt-<модель|архитектура>-<версия_ядра>-squashfs.<bin|trx>. Для используемой мо-дели маршрутизатора нужен образ openwrt-brcm-2.4-squashfs.trx. Информация об особенностях выбора и ин-сталляции версии OpenWRT именно для различных ро-утеров опубликована на странице документации сайта разработчиков [5].

Настройку локального адреса маршрутизатора на 192.168.1.1 можно осуществить через стандартный веб-интерфейс.

Для того чтобы перевести ASUS WL-500g в режим ин-сталляции по tftp, необходимо отключить провод пита-ния, зажать кнопку «restore», подключить кабель питания и отпустить кнопку. Характерным признаком того, что ро-утер ожидает tftp-подключения, будет мигающий индика-тор «PWR».

Запуск клиента tftp и установка новой прошивки:

Строка «\x01\x01\xa8\xc0» – не что иное, как 1.1.168.192, записанное в шестнадцатеричной системе счисления.

В случае Linksys-процесс будет выглядеть следующим образом:

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

Далее необходимо подключиться к маршрутизатору по telnet, изменить пароль пользователя root, отключить за-пуск telnetd и установить имя маршрутизатора:

В этом примере используется утилита nvram. Она поз-воляет управлять практически всеми конфигурационны-ми параметрами. Последние сохраняются в специальную область постоянной памяти. Рассмотрим ее основные воз-можности:n nvram set <имя_параметра>=<значение_парамет-

ра> – установить значение параметра;n nvram get <имя_параметра> – получить значение па-

раметра;n nvram unset <имя_параметра> – удалить параметр;n nvram show – вывести полный список параметров

и их значений;n nvram commit – записать параметры в постоянную па-

мять (количество циклов перезаписи ограничено, не де-лайте это слишком часто).

Теперь, для того чтобы подключиться к маршрутизато-ру, необходимо использовать SSH:

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

та на маршрутизаторе:

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

# mount

/dev/root on /mnt/rom type squashfs (ro)/dev/mtdblock/4 on /mnt/jffs type jffs2 (rw)/jffs on / type mini_fo (rw)

$ tftp 192.168.1.1tftp> get ASUSSPACELINK\x01\x01\xa8\xc0 /dev/nulltftp> binarytftp> put openwrt.trx ASUSSPACELINKtftp> quit

$ tftp 192.168.1.1tftp> rexmt 1tftp> ntracetftp> binarytftp> put openwrt.bintftp> quit

# telnet 192.168.1.1root@OpenWrt # passwdroot@OpenWrt # nvram set telnet_enable=0root@OpenWrt # nvram set wan_hostname=routerroot@OpenWrt # nvram commitroot@OpenWrt # reboot

$ ssh 192.168.1.1 -l root

Password:root@router:~#

# 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

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

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

46

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

DNS-сервер – 192.168.2.1. Стоит обратить внимание на то, что на данном этапе маршрутизатор имеет доступ в Интер-нет через LAN-порт. Такая настройка удобна на стадии кон-фигурации. Команда ifup заново инициализирует группу ин-терфейсов (в данном случае имя группы lan).

Чтобы указать для WAN-порта статический IP-адрес, нужно у названий параметров изменить префикс с lan на wan (например: wan_proto=static).

Теперь можно обновить список пакетов из Интернета и установить более функциональную версию ipkg (по умол-чанию установлен shell-скрипт):

Специфика сетевых соединенийРассмотрим несколько подробнее внутреннее устройс-тво сетевых соединений SOC-маршрутизатора. Как вид-но на схеме (рис. 1), внутри устройства находится 5-пор-товый коммутатор. Модуль Wi-Fi подключен посредс-твом MINI-PCI, и OpenWRT видит его как одно из обычных Ethernet-соединений.

Таким образом, внешние виды соединений в OpenWRT проецируются следующим образом:n Порты, помеченные как LAN на маршрутизаторе, до-

ступны через eth0.n Порт, помеченный как WAN на маршрутизаторе, досту-

пен через eth1.n Доступ к беспроводному соединению осуществляется

через eth2.

Для того чтобы клиенты, подключенные локально в Ethernet-порты и через беспроводное соединение, име-ли доступ друг к другу, из соединений eth0 и eth2 собран Ethernet-мост, обеспечивающий между ними прозрачную передачу данных на канальном уровне.

Для рассматриваемого роутера настройки будут вы-глядеть так:

Рассмотренная схема является достаточно простой, од-нако маршрутизаторы, обладающие большей функциональ-ностью, обычно устроены несколько сложнее. Рассмотрим внутреннее сетевое устройство роутера на примере 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 будут выглядеть следующим образом:

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

Локальный интерфейс будет сконфигурирован как мост из двух других соединений:

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

На этом шаге у маршрутизатора уже настроен доступ к Интернету.

В зависимости от типа USB, которым обладает марш-рутизатор, возможны следующие варианты:

UHCI USB 1.1:

wan_ifname=eth1lan_ifname=br0lan_ifnames="eth0 eth2"

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

vlan0hwname=eth0vlan0ports="1 2 3 4 5*"vlan1hwname=eth0vlan1ports="0 5*"

wan_ifname=vlan1

lan_ifname=br0lan_ifnames="vlan0 eth2"

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

# ipkg update# ipkg install ipkg

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

47№7, июль 2007

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

OHCI USB 1.1:

USB 2.0:

Не подошедшие модули ядра рекомендуется удалить следующим образом:

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

Модуль usb-storage зависит от scsi_mod и sd_mod (они установлены в системе по умолчанию), поэтому сна-чала надо загрузить их.

При установке модулей ядра ipkg создает файлы в ди-ректории /etc/modules.d, поэтому после перезагрузки они будут подгружаться автоматически.

Кроме того, может понадобиться поддержка некоторых файловых систем, таких, как vfat, ext2, ext3. Рассмотрим пример подключения поддержки ФС ext2:

Для управления таблицей разделов можно установить fdisk:

Если же существует необходимость в работе с ФС ext2/ext3 прямо с маршрутизатора, можно установить e2fsprogs. Этот набор утилит отсутствует в репозиториях, настроенных в системе по умолчанию, так что в конфигу-рационный файл ipkg надо добавить дополнительное хра-нилище пакетов:

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

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

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

Создание swap в первом разделе уже подключенного и настроенного USB-накопителя:

Настройка автоматической активации swap:

После перезагрузки маршрутизатора можно проверять состояние swap:

Перенос корня на USB-накопительТак как используемый роутер имеет всего 4 Мб flash-памя-ти, целесообразно использование внешнего USB-накопи-теля в качестве корневого устройства. Если вы не собира-етесь устанавливать большое количество пакетов или в ва-шем маршрутизаторе установлен достаточный объем па-мяти, пропустите этот шаг.

Создадим файловую систему ext2 на втором разделе USB-накопителя, куда будет производиться перенос. При-монтируем ее к /tmp и скопируем со встроенной flash-па-мяти данные:

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

На месте стандартного init разместим shell-скрипт, под-гружающий необходимые модули (поддержки USB и нуж-ной ФС) и изменяющий корневой каталог. Создадим файл /sbin/init следующего содержания:

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

# ipkg install kmod-usb2# insmod usbcore# insmod ehci-hcd

# ipkg remove <имя_пакета>

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

# ipkg install kmod-ext2# insmod ext2

# ipkg install fdisk

# echo "src kamikaze-backports ↵ http://downloads.openwrt.org/backports/rc5/" >> ↵ /etc/ipkg.conf# ipkg update # ipkg install e2fsprogs

# ipkg install swap-utils

# mkswap /dev/scsi/host0/bus0/target0/lun0/part1

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

# free

total used free shared buffersMem: 14308 10696 3612 0 668Swap: 31336 0 31336Total: 45644 10696 34948

# 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

# rm /sbin/init

#!/bin/shfor module in usbcore usb-ohci scsi_mod sd_mod ↵ usb-storage ext2; do { insmod $module}; donesleep 5smount /dev/scsi/host0/bus0/target0/lun0/part2 /mnt[ -x /mnt/sbin/init ] && { mount -o move /proc /mnt/proc && \

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

48

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

Добавим права на запуск:

После перезапуска системы картина выглядит следу-ющим образом:

Таким образом, теперь маршрутизатор имеет 90 Мб па-мяти для установки пакетов вместо 4 Мб.

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

Для ее установки необходимо выполнить следующую команду:

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

матически, и все необходимые пакеты будут установлены. Через несколько минут вы сможете обратиться к вашему роутеру по протоколу HTTP. Логин и пароль – системные, то есть те же, что используются для доступа по SSH. Ин-терфейс интуитивно понятен и прост в освоении, поэтому никаких примеров его использования приведено не будет. X-Wrt предоставляет доступ ко всем настройкам (благода-ря наличию возможности прямого редактирования nvram и файлов), но работает не так быстро, как SSH. Стандарт-ную же конфигурацию достаточно приятно проводить че-рез него (рис. 3).

Одной из приятных особенностей X-Wrt является то, что не требуется перезагрузка роутера после изменения тех или иных настроек, как это происходит в стандартных про-шивках. Более того, сначала необходимые изменения со-бираются в «корзину», а потом разом подтверждается все (это уменьшает количество перезаписываний nvram).

Используемый в рассматриваемой версии X-Wrt webif^2 находится на стадии разработки, но достаточно стабилен, хотя некоторые проблемы (случайные сообщения об ошиб-ках, пропадающие так же неожиданно, как и появляющие-ся) периодически возникают. Также он не всегда коррект-но осуществляет настройку тех или иных служб.

Замечу, что основная аудитория OpenWRT – это продви-нутые пользователи или администраторы ОС GNU/Linux, ко-торым гораздо ближе и удобнее командная строка.

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

Все как в обычном Linux:

Далее приведу список параметров, хранящихся в 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 (посредством Рисунок 3. Веб-интерфейс для управления OpenWRT

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

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

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>&- }}

exec /bin/busybox init

# chmod +x /sbin/init

# mount

/dev/root on /mnt/rom type squashfs (ro)/dev/mtdblock/4 on /mnt/jffs type jffs2 (rw)/jffs on /mnt type mini_fo (rw)/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% /

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

49№7, июль 2007

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

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

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

Настройка PPTP-клиентаПервым делом необходимо установить модули ядра и PPTP-клиент.

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

В этом примере:n somepear – название точки доступа;n vpn.foo.bar – адрес PPTP-сервера;n someuser – имя пользователя;n somepass – пароль пользователя.

Для того чтобы установить дополнительные правила маршрутизации или брандмауэра, можно воспользовать-ся скриптами pppd ip-up и ip-down. Рассмотрим следую-щий пример:

В этом примере добавляется маршрут к сети 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).

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 сле-дующим образом:

При такой настройке маршрутизатор будет выпол-нять роль точки доступа 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):

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

не разрешенные локально (средствами lease файла или /etc/hosts), отвечать сообщением об отсутствии та-кого имени.

# ifup.pppoe wan# ifdown wan

# 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

# cat > /etc/ppp/ip-up.d/somepear#!/bin/shinterface_name=$1remote_ip=$4ipparam=$5if [ "${ipparam}" = "pptp:somepear" ]; then /sbin/route add -net 10.0.0.0 netmask 255.255.248.0 ↵ gw $remote_ip dev $interface_namefi

nvram set wl0_mode=apnvram set wl0_ssid=some_essidnvram set wl0_infra=1nvram set wl0_channel=4nvram set wl0_macmode=disablednvram commit

#!/bin/sh[ ! -f /tmp/dhcp.lease ] && { touch /tmp/dhcp.lease}dnsmasq -C /etc/dnsmasq.conf

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

50

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

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, сначала нужно выполнить следующую команду:

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

Таблица брандмауэра nat, правила, отвечающие за ог-раничение открытия новых TCP-соединений (не более 50 в секунду):

Таблица брандмауэра nat, правило, реализующее ме-ханизм NAT:

Таблица брандмауэра filter, правила, блокирующие не-корректные пакеты:

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

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

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

Добавлять собственные правила необходимо в файл /etc/firewall.user. Правила, добавленные через веб-интер-фейс, хранятся в файле /etc/config/firewall.

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

Настройка VPN-сервера с использованием PPTPDДемон PoPToP портирован под OpenWRT и достаточно хорошо работает. Разумеется, CPU, который установлен на маршрутизаторе, не сможет справиться с многомега-битным VPN-трафиком и с большим количеством одновре-менных подключений.

Однако задачу предоставления более или менее ка-чественного доступа нескольким пользователям успешно решается такой конфигурацией. Установка производится следующим образом:

Допустим, необходимо предоставлять доступ в сеть не-скольким пользователям. Пользователи должны видеть друг друга, а также все компьютеры, находящиеся в локальной сети. Маршрутизатор является «центральным», и через не-го проходит весь трафик. Рассмотрим процесс конфигура-ции такой системы.

/etc/ppp/options.pptpd – конфигурационный файл pppd, в нем описывается множество параметров ppp. Среди них: допустимые способы аутентификации, методы шифрова-ния данных, адрес VPN-сервера для VPN-клиентов и мно-

-A NEW -m limit --limit 50/sec --limit-burst 100 -j RETURN -A NEW -j DROP-A PREROUTING -m state --state NEW -j NEW

-A POSTROUTING -o $WAN -j MASQUERADE

-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

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

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

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

# ipkg install pptpd

# ipkg install iptables-utils

# iptables-save

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

51№7, июль 2007

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

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

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

Для того чтобы клиенты, непосредственно подключен-ные (по Ethernet) к маршрутизатору (будем называть их ло-кальными), имели связь с VPN-клиентами и наоборот, су-ществует два способа.

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

Второй способ: использовать технологию proxyarp. В этом случае маршрутизатор на ARP-запрос разрешения IP-адреса VPN-клиента, переданный локальным клиентом, будет отвечать MAC-адресом LAN-порта. Таким образом, ни для локальных, ни для внешних клиентов не требуется дополнительная маршрутизация.

Проксирование протокола ARP включается следую-щим образом:

/etc/ppp/chap-secrets – файл паролей, в нем в стандартном формате хранятся записи пользователей.

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

Также существует файл /etc/pptpd.conf, содержащий ос-новные параметры PoPToP, значения по умолчанию устро-ят большинство пользователей.

Кроме того, понадобится настройка брандмауэра, не-обходимо добавить следующие правила:

Для того чтобы работала передача трафика между ло-кальной сетью и виртуальными клиентами ($WAN – имя ва-шего внешнего интерфейса, например: eth1 или ppp0) до-бавим правила:

Добавление этих правил лучше всего осуществлять с использованием /etc/firewall.user.

Запуск и останов производится посредством скрипта инициализации следующим образом:

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

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

Для настройки отредактируем конфигурационный файл /etc/vsftpd.conf:

При такой конфигурации будут использоваться систем-ные учетные записи пользователей, но при этом них бу-дет разрешена аутентификация только тем пользователям, имена которых перечислены в файле /etc/vsftpd.users.

Сразу после аутентификации будет происходить смена корня процесса (chroot) в домашнюю директорию пользо-вателя. Поддержка сессий аутентификации (PAM и wtmp) отключена за ненадобностью.

Следующим шагом добавим одного пользователя, раз-решим ему пользоваться FTP и установим для него па-роль:

mppe required,no40,no56,stateless

nomppe

echo "proxyarp" >> /etc/ppp/options.pptpd

# cat /etc/ppp/options.pptpd | grep ^name

name "pptp-server"

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

iptables -t nat -A prerouting_rule -i $WAN -p tcp ↵ --dport 1723 -j ACCEPTiptables -A input_rule -i $WAN -p tcp ↵ --dport 1723 -j ACCEPT

iptables -A forwarding_rule -s 192.168.1.0/24 ↵ -d 192.168.1.0/24 -j ACCEPTiptables -A output_rule -o ppp+ -s 192.168.1.0/24 ↵ -d 192.168.1.0/24 -j ACCEPTiptables -A input_rule -i ppp+ -s 192.168.1.0/24 ↵ -d 192.168.1.0/24 -j ACCEPTiptables -A forwarding_rule -i ppp+ -o $WAN -j ACCEPT

# /etc/init.d/S50pptpd start# /etc/init.d/S50pptpd stop

# ipkg install vsftpd

background=YESlisten=YESwrite_enable=YESlocal_umask=022check_shell=NO

local_enable=YESchroot_local_user=YESanonymous_enable=NOsession_support=NOuserlist_enable=YESuserlist_deny=YESuserlist_file=/etc/vsftpd.users

iptables -A output_rule -p 47 ↵ -j ACCEPTiptables -A input_rule -p 47 ↵ -j ACCEPT

# echo "users:x:100:" >> /etc/group

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

52

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

Настроим правила брандмауэра, добавив следующие строки в файл /etc/firewall.user:

Настроим автоматическую загрузку:

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

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

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

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

Теперь, чтобы отправить письмо с маршрутизатора, до-статочно набрать команду:

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

Настройка cronOpenWRT по умолчанию идет в поставке с работающим де-моном cron (часть BusyBox). Для его активации необходи-мо выполнить лишь действие:

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

Настройка cron для ежечасной синхронизации, выполня-емой от имени пользователя root, будет выглядеть так:

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

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

Удачи!

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.

# nvram set cron_enable=1 && nvram commit# /etc/init.d/S60cron start

# ipkg install ntpclient

echo "0 * * * * /usr/sbin/ntpclient ↵ -h europe.pool.ntp.org -s" >> /etc/crontabs/root

iptables -t nat -A prerouting_rule -i $WAN -p tcp ↵ --dport 21 -j ACCEPTiptables -A input_rule -i $WAN -p tcp ↵ --dport 21 -j ACCEPT

# mv /etc/init.d/vsftpd /etc/init.d/S65vsftpd

# vsftpd# killall vsftpd

# ipkg install ssmtp

mailhub=mail.foo.bar.ru

# ssmtp [email protected]

To: [email protected]: [email protected]: Some notification messageHello world!

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

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

54

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

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

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

Для решения этих проблем еще в середине 90 -х Брюсом Перен-сом (Bruce Perens) был создан пакет BusyBox [1]. Сейчас проект позицио-

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

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

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

Дмитрий Шурупов

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

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

55№7, июль 2007

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

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

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

Еще на стадии компиляции (а точ-нее, до самого процесса сборки) мож-но выбрать только те базовые утилиты, которые нужны. Реализовано это в сти-ле настройки ядра Linux. Вместо более распространенного среди собираемых с automake приложений способа в виде скрипта «configure» для предваритель-ной конфигурации BusyBox нужно вы-полнить одну из следующих команд:

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

Аргумент «menuconfig» вызывает более удобную конфигурацию в виде меню с интерфейсом на базе curses (см. рис. 1).

Аргумент «defconfig» автоматичес-ки включает все доступные опции, под-готавливая к сборке BusyBox «общего назначения».

Так же, как и в случае с ядром Linux, после настройки создается конфи-гурационный файл .config, к которо-му можно затем всегда возвращать-ся командой:

Это актуально при переходе на бо-лее новую версию BusyBox со старой конфигурацией (чтобы при настройке работать только с появившимися в оче-редном релизе опциями).

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

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

Далее все традиционно:

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

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

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

Где используется 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 (для КПК)

и MoviX (популярный компактный дистри-бутив с набором мультимедийных Open Source-решений), в установщиках Debian, Gentoo, Red Hat, Mandriva и других проек-тов, а также во многих Linux-основанных ус-тройствах (Sharp Zaurus, роутеры, AP...).

В OpenWRT, (смотрите стр.42-52 жур-нала), в качестве командной оболочки и базовых системных средств использу-ется именно BusyBox. Более подробный список продуктов, использующих BusyBox, доступен на сайте http://www.busybox.net/products.html.

$ make config$ make menuconfig$ make defconfig

$ make oldconfig

$ make$ sudo make install

$ bb

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

$ busybox <функция> [аргументы]

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

56

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

покажет в текущей оболочке (напри-мер, bash) результат выполнения ко-манды «ls -l /» в BusyBox (см. рис .2).

Полный список доступных функ-ций в установленной версии BusyBox можно посмотреть в выводе команды «busybox» без аргументов. Просмотр помощи по конкретной функции осу-ществляется так:

Это приобретает особую актуаль-ность ввиду того, что базовые утили-ты в составе BusyBox ограничены в своих возможностях, поэтому список

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

Начинка BusyBoxПомимо альтернатив-ного набора coreutils (ls, cat, mv, cp, rm, chmod, df, ln, date, wc, nice, test...) в состав BusyBox входит и мно-жество других про-грамм.

Среди них, во-пер-вых, стоит выделить

наличие нескольких минималистских командных оболочек: ash (60 Кб; от-ветвление от dash из Debian, основан-ного на ash из NetBSD; рекомендован для использования с BusyBox), hush (18 Кб; понимает грамматику Bourne shell), lsh (всего 10 Кб; только самый простой функционал), msh (30 Кб; minix shell).

Для работы с архивами есть та-кие утилиты, как tar, gzip, bzip2, ar, zip, rpm, dpkg. Для обработки содержимого файлов есть как awk, sed, patch, так и текстовые редакторы ed и vi.

Широко представлены сетевые средства: и клиентские, и серверные. Среди демонов выделю httpd (с подде-ржкой авторизации, CGI), dnsd, telnetd, inetd, udhcpd. Для FTP есть ftpget,

ftpput и клиент tftp. Кроме того, при-сутствует и собс-твенная версия GNU wget. Из про-чих стандартных утилит: ifconfig, route, traceroute, ping/ping6, netstat, n s l o o k u p , a r p и arping.

К р о м е т о -г о , п р и м е ч а -тельны реализа-ции hdparm для п р о с м о т р а / у с -т а н о в к и п а р а -метров жестко-го диска, syslogd для ведения ло-гов, средств рабо-ты с системными учетными запися-

ми (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 (вывод списка без сортировки). Другие, на мой взгляд, еще менее значительны. Общие тен-денции, думаю, очевидны.

Подводя итогиНасколько существенно отсутствие тех или иных возможностей, определяется общими предъявляемыми требования-ми и конкретными задачами. По субъ-ективным же впечатлениям, в BusyBox-редакциях базовых утилит представ-лены все основные, т.е. повседневно используемые (большинством в боль-шинстве же случаев) возможности. Ко-нечно, большинство – не все, и зада-чи бывают разные, но в целом – заслу-га авторов налицо. Им действительно удалось отобрать необходимое.

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

И со своими задачами BusyBox справляется отлично. Вместе с тем проект активно развивается: с января 2006 года уже вышло 16 релизов, в 5 из которых были представлены значи-тельные нововведения (версии 1.x.0). Другим показателем роста BusyBox яв-ляется тот факт, что все больше разра-ботчиков в своих продуктах предпочи-тают его применение другим возмож-ным вариантам.

1. http://www.busybox.net.2. http://www.busybox.net/download.html.

$ busybox --help <функция>

Рисунок 3. Исполнение элементарных скриптов в BusyBox

Рисунок 4. Сетевые средства в «make menuconfig» BusyBox

$ busybox ls -l /

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

57№7, июль 2007

bugtraq

Несколько уязвимостей в продуктах McAfeeПрограмма: McAfee Common Management Agent (CMA) 3.x, McAfee ePolicy Orchestrator 3.x, McAfee ProtectionPilot 1.x.Опасность: Высокая.Описание: 1. Уязвимость существует из-за опустошения целочисленных, которое позволяет удаленному пользова-телю вызвать повреждение памяти и выполнить произволь-ный код на целевой системе.

2. Уязвимость существует из-за ошибки проверки гра-ниц данных при обработке echo-пакетов. Удаленный поль-зователь может с помощью специально сформированно-го пакета вызвать переполнение стека и выполнить про-извольный код на целевой системе.

3. Уязвимость существует из-за ошибки проверки гра-ниц данных. Удаленный пользователь может с помощью специально сформированного пакта вызвать поврежде-ние памяти и выполнить произвольный код на целевой системе.

4. Уязвимость существует из-за целочисленного пере-полнения. Удаленный пользователь может вызвать пере-полнение буфера и выполнить произвольный код на целе-вой системе.URL производителя: www.mcafee.com.Решение: Установите исправление с сайта производите-ля.

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

Несколько уязвимостей в TrillianПрограмма: Trillian Basic 3.1.6.0, возможно, другие версии.Опасность: Высокая.Описание: 1. Уязвимость существует из-за того, что aim:// URI-обработчик не проверяет aim:// URI перед записью дан-ных в файл, указанный в параметре ini=. Удаленный поль-зователь может с помощью специально сформированного aim:// URI записать произвольные файлы на целевую сис-тему. Пример:

2. Уязвимость существует из-за ошибки проверки гра-ниц данных при обработке aim:// URI в плагине aim.dll. Уда-ленный пользователь может с помощью специально сфор-мированного aim:// URI вызвать переполнение буфера и вы-полнить произвольный код на целевой системе. Пример:

URL производителя: www.ceruleanstudios.com.Решение: В настоящее время способов устранения уязви-мости не существует. В качестве временного решения ре-комендуется отключить обработчик 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>

<a href = 'aim:///#1111111/11111111111111111111111111111111111111111111111111111111111112222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222226666666AAAABBBB6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666'>#2</a>

Множественные уязвимости в 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Программа: Microsoft Office Publisher 2007.Опасность: Высокая.Описание: Уязвимость существует из-за недостаточной проверки значений памяти перед записью данных приложе-ния с диска в память. Удаленный пользователь может с по-мощью специально сформированной страницы Publisher (.pub) выполнить произвольный код на целевой системе.URL производителя: www.microsoft.com.Решение: Установите исправление с сайта производите-ля.

Выполнение произвольных команд в Microsoft Internet Explorer и NetscapeПрограмма: Microsoft Internet Explorer 7.x, Netscape 9.0b2, возможно, более ранние версии.Опасность: Высокая.Описание: Уязвимость существует из-за того, что Netscape регистрирует обработчик navigatorurl:// URI в системе и поз-воляет вызвать Netscape с произвольными опциями. Уда-ленный пользователь может с помощью специально сфор-мированного веб-сайта, посещенного с помощью браузера Internet Explorer, передать Netscape специально сформиро-ванный параметр -chrome и выполнить произвольные ко-манды на системе.Решение: В настоящее время способов устранения уязви-мости не существует.

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

58

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

Следует признать, что админис-траторы Windows-сетей нахо-дятся все-таки в более выгод-

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

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

ет процесс написания команд, с ходу создать правильную конфигурацию очень сложно, а созданные конфигу-рации прочитать через некоторое вре-мя практически не реально. Несмот-ря на GPL-лицензию Cfengine, факти-чески проект одного человека, кото-рый контролирует все изменения и не очень заинтересован в построении от-крытого общества. В результате воз-можности Cfengine вполне удовлет-воряют разработчика, а для осталь-ных администраторов это скорее лиш-няя головная боль. Чтобы улучшить Cfengine, сторонними разработчика-ми были созданы различные дополне-ния, что часто только ухудшало ситуа-цию. Автор нескольких таких модулей к Cfengine Люке Каниес (Luke Kanies) в итоге решил разработать подобный инструмент, но лишенный многих не-достатков Cfengine.

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

Сергей Яремчук

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

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

59№7, июль 2007

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

Возможности PuppetPuppet [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 и ус-тановим его атрибуты:

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

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

А затем обращаемся к этой секции при описании ре-сурса:

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

Другой вариант создания псевдонима хорошо подходит в том случае, когда приходится иметь дело с разными опе-рационными системами. Например, создадим ресурс, опи-сывающий файл sshd_config:

В этом примере мы столкнулись с возможностью выбо-ра. Отдельно указан файл для Solaris, для всех остальных будет выбран файл /etc/ssh/sshd_config. Теперь к этому ре-сурсу можно обращаться как к sshdconfig, в зависимости от операционной системы будет выбран нужный путь. Напри-мер, укажем, что в случае, если демон sshd запущен и по-лучен новый файл, следует перезапустить сервис:

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

file { "/etc/passwd": owner => root, group => root, mode => 644,}

[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"

file { "/etc/passwd": alias => passwd}

file { sshdconfig: name => $operatingsystem ? { solaris => "/usr/local/etc/ssh/sshd_config", default => "/etc/ssh/sshd_config" }

service { sshd: ensure => true, subscribe => File[sshdconfig]}

$homeroot = "/home"

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

60

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

Теперь к файлам конкретного пользователя можно об-ратиться как:

В параметр $name будет подставлено учетное имя поль-зователя. В некоторых случаях удобно определить значе-ние по умолчанию для некоторого типа. Например, для ти-па exec очень часто указывают каталоги, в которых он дол-жен искать исполняемый файл:

В том случае, если нужно указать на несколько вло-женных файлов и каталогов, можно использовать пара-метр recurse:

Несколько ресурсов могут быть объединены в классы или определения. Классы являются законченным описани-ем системы или сервиса и используются обособленно:

Как и в объектно-ориентированных языках, классы мо-гут переопределяться. Например, в FreeBSD группой-вла-дельцем этих файлов является wheel. Поэтому, чтобы не переписывать ресурс полностью, создадим новый класс freebsd, который будет наследовать класс linux:

Для удобства все классы можно вынести в отдельный файл, который нужно подключать директивой include. Оп-ределения могут принимать многочисленные параметры в качестве аргументов, но не поддерживают наследования и используются в том случае, если нужно описать много-кратно используемые объекты. Например, определим до-машний каталог пользователей и команды, необходимые для создания новой учетной записи:

Теперь, чтобы создать новую учетную запись, достаточ-но обратиться к user_homedir:

Отдельно стоят описания узлов (node), которые подде-рживают наследование, как и классы. При подключении клиента к серверу Puppet будет произведен поиск соот-ветствующей секции node и выданы специфические толь-ко для этого компьютера настройки. Для описания всех ос-тальных систем можно использовать node default. Описа-ние всех типов приведено в документе «Type Reference», с которым необходимо ознакомиться в любом случае, хо-тя бы для того, чтобы понять все возможности языка Puppet. Различные типы позволяют выполнять указанные коман-ды, в том числе и при выполнении определенных условий (например, изменение конфигурационного файла), рабо-тать с cron, учетными данными и группами пользователей, компьютерами, монтированием ресурсов, запуском и ос-тановкой сервисов, установкой, обновлением и удалени-ем пакетов, работой с SSH-ключами, зонами Solaris и так далее. Вот так просто можно заставить обновлять список пакетов в дистрибутивах, использующих apt, ежедневно между 2 и 4 часами:

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

Установка PuppetДля работы Puppet потребуются Ruby (начиная с версии 1.8.1 и выше) с поддержкой OpenSSL и библиотеками XMLRPC, а также библиотека Faster [6]. В репозитарии Ubuntu 7.04, который использовался при тестовой установке, уже вклю-чен пакет puppy:

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

Exec { path => "/usr/bin:/bin:/usr/sbin:/sbin" }

file { "/etc/apache2/conf.d": source => "puppet:// ↵ puppet://server.domain.com/config/apache/conf.d", recurse => "true"}

class linux { file { "/etc/passwd": owner => root, group => root, ↵ mode => 644; "/etc/shadow": owner => root, group => root, ↵ mode => 440 }}

class freebsd inherits linux { File["/etc/passwd"] { group => wheel }; File["/etc/shadow"] { group => wheel }}

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":

user_homedir { "sergej": group => "sergej", fullname => "Sergej Jaremchuk", ingroups => ["media", " admin]}

schedule { daily: period => daily, range => [2, 4]}exec { "/usr/bin/apt-get update": schedule => daily}

$ sudo apt-cache search puppet

puppet - centralised configuration management for networkspuppetmaster - centralised configuration manangement control daemon

$ sudo apt-get install puppet puppetmaster

${homeroot}/$name

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

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

61№7, июль 2007

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

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

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

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

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

Файлы puppetd.conf и puppetmasterd.conf похожи. В них указываются некоторые параметры работы демонов на кли-ентской системе и сервере. Клиентский файл отличается только наличием параметра server, указывающего на ком-пьютер, на котором запущен puppetmasterd:

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

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

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

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

Сначала, чтобы сервер узнал о новом компьютере, на клиентской системе вводим команду:

Если будет выдана другая строка, следует проверить работу сервера:

Межсетевой экран должен разрешать соединения на порт 8140.

На сервере получаем список сертификатов, нуждаю-щихся в подписи:

И подписываем сертификат клиента:

Теперь клиент может свободно подключаться к серве-ру и получать настройки.

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

Удачи!

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.

$ ruby -ropenssl -e "puts :yep"

yep

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

yep

$ sudo /usr/bin/puppetmasterd --nonodes

class sudo { file { "/etc/sudoers": owner => root, group => root, mode => 440, }}

node default { include sudo}

$ sudo /usr/bin/puppetmasterd --mkusers

[puppetd]server = grinder.comlogdir = /var/log/puppetvardir = /var/lib/puppetrundir = /var/run# отсылаем отчет серверуreport = true

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

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

all: [email protected]

$ sudo puppetd --server grinder.com --waitforcert 60 --test

info: Requesting certificatewarning: peer certificate won't be verified in this SSL sessionnotice: 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

$ sudo puppetca --list

nomad.grinder.com

$ sudo puppetca –sign nomad.grinder.com

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

62

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

Начнем с определений. Что такое операционная система? Следуя википедии [6] – это программа

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

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

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

По терминологии мира PC-совмес-тимых компьютеров встроенным про-граммно-аппаратным средством слу-жит BIOS. При работе с другими сис-темами обычно используется слово firmware.

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

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

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

Владимир Василькин

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

63№7, июль 2007

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

ответствующей литературе. Настрой-ки BIOS зависят от производителя ма-теринской платы.

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

В таком случае процесс инсталля-ции происходит по следующей схеме:1. Настройка firmware на загрузку вре-

менной ОС.2. Загрузка временной ОС.3. Выполнение процессов копирова-

ния (инсталляции).4. Настройка firmware на загрузку но-

вой ОС и загрузка новой ОС.

Пункт 4 состоит из двух действий по причине того, что настройка firmware может происходить как средствами са-мой firmware, так и инструментами вре-менной ОС.

Здесь хотел бы подчеркнуть, что все сказанное выше относится абсо-лютно к любым сочетаниям операци-онных систем, как временной, так и но-вой. Например, в качестве временной ОС может служить какой-нибудь дис-трибутив Linux, а новой – MS Windows или Solaris. Перепрошивка сотового телефона, например, может выглядеть как сочетание MS Windows – Symbian.

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

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

Самый простой способ инсталля-ции – это побитное копирование всего носителя. Очень хорошо для этого под-ходит команда dd, которая присутству-

ет практически в любом UNIX-подоб-ном дистрибутиве. Используя эту ко-манду, мы можем просто продублиро-вать носитель, например, копируя жес-ткий диск на второй такой же.

Также подобным способом можно восстанавливать систему из резерв-ной копии. Загрузка временной ОС мо-жет происходить из любого источни-ка. Конфигурация новой ОС также мо-жет быть осуществлена как из времен-ной системы, так и после загрузки но-вой. Восстановление из резервной ко-пии редко рассматривается как вари-ант установки операционной системы. Мы тоже не будем на нем останавли-ваться подробно. Тем более что в офи-циальной документации по инсталля-ции Solaris 10 этот способ не описан.

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

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

Версии системыПоследняя версия Solaris на момент написания статьи – 10, а если быть точ-ным – 10 11/06. Наименование версии включает в себя месяц и год выпус-ка обновления, разделенные прямым слешем. По планам обновления сис-темы должны выпускаться раз в квар-тал. По историческим причинам ко-манда uname в ОС Solaris выдает на-звание SunOS. Версии системы счи-таются после символов «5.». Напри-мер, у Solaris 10 вывод команды будет следующий:

Более подробно информацию о версии установленной системы мож-но посмотреть в файле /etc/release или командой showrev.

На базе кода Solaris 10 основан проект OpenSolaris, целью которого является дальнейшее развитие этой операционной системы, в том чис-ле и силами независимых разработ-чиков [4]. На официальном сайте до-ступны ссылки для скачивания шес-ти дистрибутивов на базе OpenSolaris. Часть из этих проектов поддержива-ется непосредственно фирмой Sun Microsystems, остальные – другими разработчиками. Периодичность об-новлений зависит, конечно, от созда-телей дистрибутива.

Также доступна документация по созданию своей системы на базе OpenSolaris.

Последнюю версию Solaris 10, OpenSolaris, можно скачать с офици-альных сайтов [2, 4] или других ис-точников [5] совершенно бесплатно. При желании диски с системой мож-но купить.

Обычно, если четких требований к версии ОС не существует, ставится новейший релиз из доступных. Пос-ле чего на систему устанавливает-ся рекомендованный набор патчей – «Recommended Solaris Patch Clusters», скачать который можно с сайта [2].

До 10 версии в Solaris был предус-мотрен также набор дополнительных патчей для повышения версии систе-мы – Maintenance Update. Тогда процесс установки происходил в три этапа:1. Установка базового дистрибутива.2. Установка последнего Maintenance

Update.3. Ус т а н о в к а п о с л е д н е й в е р -

сии Recommended Solaris Patch Clusters.

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

С точки зрения инсталляции систе-мы в Solaris 10 мало что изменилось, так что большая часть сказанного бу-дет применима к предыдущим верси-ям: Solaris 8 и 9. Различия есть, но они в основном незначительные; некото-рые особенности будут указаны. При-меры в статье будут применимы для версии Solaris 10 11/06, если не ука-зано иное.

# uname -s -r

SunOS 5.10

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

64

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

Интересно, что официально под-держивается обновление системы с версии 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), что, конечно же, являет-

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

Требования к частоте процессо-ра по современным меркам совсем небольшие. Для работы системы не-обходим x86-совместимый процес-сор с частотой 120 МГц или процес-сор SPARC с минимальной частотой 200 МГц.

Размер использования пространс-тва на жестком диске сильно зависит от количества установленных пакетов. Требования могут отличаться от рели-за системы и составляют от 2 до 7 Гб дискового пространства.

Требования к конкретному релизу можно посмотреть в соответствующем «Release Notes» на сайте [1] или [4], ес-ли вы используете OpenSolaris.

Методы инсталляции SolarisВ официальных документах [1] можно выделить несколько типов инсталля-ции, рассмотрим их:

Basic или «используя программу‑инсталлятор»Как следует из названия – это самый простой вид инсталляции.

Под словом «простой» подразуме-вается «требующий наименьшей ква-лификации» системного администра-тора. Процесс установки таким спосо-бом мало отличается от установки дру-гих популярных ОС. Он подразумева-ет загрузку временной ОС (с диска CD, или DVD, или используя загрузку по се-ти) и ответы на простые вопросы про-граммы-инсталлятора.

В Solaris 10 существует два вида программы-инсталлятора – с тексто-вым и графическим интерфейсами. Графический инсталлятор использу-ет Java, требования к системе в слу-чае его использования повышаются; в некоторых случаях могут быть выше, чем требования к рабочей системе.

Этот вид установки подробно рас-смотрен в нескольких документах на ресурсе [1].

Solaris Flash ArchivesFlash здесь значит не «USB-накопи-тель», а всего лишь способ инсталля-ции, который больше похож на клони-рование (этот термин также употреб-ляется в документациии).

Суть метода состоит в том, что можно использовать одну рабочую систему как шаблон (master system). И реплицировать эту инсталляцию на другие системы, называемые кло-нами (clone system).

Можно «клонировать» системы как полностью перезаписывая инфор-мацию на носителе (установка «с ну-ля»), так и внося лишь частичные из-менения. Причем в клонировании мо-жет участвовать не только системное программное обеспечение, но и дру-гие файлы.

Этот метод – удобный способ уп-равления большим количеством од-нотипных серверов, на которые вре-мя от времени приходится наклады-вать патчи.

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

Более подробно ознакомиться с этим видом установки Solaris 10 мож-но на сайте [1] в книге No: 817-5668-11 «Solaris 10 Installation Guide: Solaris Flash Archives (Creation and Installation)».

Custom JumpStartЭто самый популярный метод установ-ки Solaris. Вернее, самый популярный способ – установка системы по сети, используя технологию JumpStart.

JumpStart отличается от других ме-тодов подходом к конфигурации систе-мы и особенно полезен, если исполь-зуется несколько серверов под управ-лением Solaris (обычно так и происхо-дит – если в организациии появляет-ся система под управлением Solaris – то не одна ).

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

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

65№7, июль 2007

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

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

Если инсталляция происходит с CD – все равно при-дется уделять свое внимание процессу установки для сме-ны дисков.

Подробнее с эти видом установки можно ознакомиться в книге No: 817-5506-12 «Solaris 10 Installation Guide: Custom JumpStart and Advanced Installations».

Solaris Live UpgradeВ среде Solaris давно существует два способа установ-ки программного обеспечения: стандартный метод и Live Upgrade.

Стандартный способ – когда установка и обновле-ние происходит с остановкой работы сервисов на рабо-чей системе.

Альтернативный вариант – Live Upgrade. В данном слу-чае слово Upgrade не нужно понимать буквально как «об-новление». Это всего лишь название способа установки ПО, слово не несет привычной смысловой нагрузки.

В случае использования альтернативной технологии системное программное обеспечение может быть уста-новлено на работающей системе, но на неактивную пар-тицию (часть диска) или неактивный DiskSet – «набор дис-ков» – если используется много дисков. То есть делается копия рабочей конфигурации, на копию накатываются пат-чи; или же система прогружается полностью «с нуля». По-том происходит переключение путем перезагрузки на но-вую партицию (или DiskSet). В случае возникновения проб-лем возможно переключение на старую, рабочую конфигу-рацию. Время простоя системы при обновлении подобным способом минимально.

Более подробно ознакомиться с этим видом уста-новки Solaris 10 можно на сайте [1]. Например, в книге No: 817-5505-12 «Solaris 10 Installation Guide: Solaris Live Upgrade and Upgrade Planning».

Существует еще один (довольно популярный) способ обновления ПО, похожий на Solaris Live Upgrade, но приме-нимый также к другим системам. Устройства хранения об-новляемой системы должны быть объединены в «зеркало» (RAID-1 и т. п.). В таком случае перед обновлением систе-мы диски разбиваются на две части: активную часть и ре-зервную копию.

Вся работа по обновлению системы происходит над од-ной «половинкой» зеркала – активной частью. После ус-пешного завершения работ диски опять объединяют в зер-кало. Происходит синхронизация дисков с активной части на резервную копию.

В случае неудач в процессе обновления ПО возможна загрузка с резервной копии. В таком случае синхрониза-ция дисков происходит в обратную сторону.

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

Также разработчики предоставляют возможноть ус-тановить систему через сети общего пользования, в том числе через Интернет. В таком случае установку можно произвести только на SPARC-совместимые системы. Ис-пользуются протоколы HTTP или HTTPS. Если интересно – процесс подробно описан на сайте [1]. Например, в книге No: 817-5504-12 «Solaris 10 Installation Guide: Network-Based Installations».

На практике чаще всего настраивают инсталл-сер-вер и системы прогружают по сети, используя техноло-гию JumpStart.

Выбор набора устанавливаемых программОдна из особенностей операционной системы Solaris то, что она состоит из пакетов.

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

Например, после установки FreeBSD команда pkg_info не покажет ни одного пакета. В момент инсталляции мы мо-жем выбрать лишь комбинацию из крупных наборов фай-лов: исполняемые файлы, документация, исходные тексты и т. п. При установке MS Windows можем наблюдать подоб-ную ситуацию (точно не будет исходных текстов). В обоих случаях программа-установщик распаковывает файлы ОС из архивов и копирует их на диск. В одном случае исполь-зуются CAB-файлы, в другом – TGZ.

В отличие от них установка всей системы Solaris про-исходит командой pkgadd. Например, при установке набо-ра пакетов «Entire Solaris Software Group Plus OEM Support» ставится 984 системных пакета в Solaris 10, 1055 пакетов в Solaris 9.

Системные пакеты обычно имеют префикс SUNW.Поэ-тому их количество проверить легко:

Установленное в систему ПО можно посмотреть в фай-ле /var/sadm/install/contents. Способ используется чаще, чем стандартный whereis из UNIX. Например, где находит-ся файл bash, в какой пакет входит, можно посмотреть ко-мандой grep:

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

$ pkginfo | grep SUNW | wc -l

# uname -a; echo ; grep '/bash ' /var/sadm/install/contents

SunOS mncomp 5.10 Generic_118833-33 sun4u sparc SUNW,Sun-Blade-100

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

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

66

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

Например, как-то раз мне при-шлось столкнуться с интересным слу-чаем. Долгое время работал сервер под управлением 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 подробнее.

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».

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

Кроме конфигурационных фай-лов настройку системы можно про-

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

67№7, июль 2007

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

изводить, используя утилиты sys-unconfig(1M) и sysidtool(1M).

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

Настройки сетиДля каждого сетевого интерфейса, в том числе использующего DHCP для своей настройки, необходим файл /etc/hostname.hme0, где hme0 – имя ин-терфейса.

Для протокола IPv6 используются файлы вида: /etc/hostname6.hme0.

В этих файлах лежат настройки ин-терфейсов, используемые командой ifconfig. Можно ограничиться одним файлом для настройки, но обычно до-полнительно используется информа-ция из других источников. В основном это файлы /etc/hosts и /etc/netmasks.

Могут использоваться не только файлы, но и другие информационные службы: DNS, LDAP, NIS, NIS+ и т. п. Откуда конкретно берется информа-ция, можно посмотреть в файле /etc/nsswitch.conf.

Подробную информацию по ис-пользуемым файлам можно посмот-реть в соответствующих разделах до-кументации.

Настройки DHCPЕсли сетевой интерфейс использует протокол DHCP для своей настройки, то в системе создается файл /etc/dhcp.hme0, где hme0 – имя интерфейса.

Имя системыЧасто hostname путают с именами ин-терфейсов, хранящимися в файлах /etc/hosts, /etc/hostname*. Интерфейсов может быть несколько, а имя у систе-мы – одно. В системном руководстве (man) говорится, что если сетевых ин-терфейсов несколько, то именем сис-темы служит имя Primary Interface. На практике дело обстоит несколько ина-че. Начиная с версии 10, информация об имени системы хранится в следую-щих файлах:n/etc/nodename;n/etc/inet/hosts;n /etc/inet/ipnodes.

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

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

Маршруты по умолчаниюИнформация о маршрутах по умолча-нию хранится в файле /etc/defaultrouter, по одной строчке на маршрут. Про-грамма-инсталлятор предлагает ука-зать только один маршрут. Файл чи-тается только при загрузке системы. Текущие настройки маршрутизации на работающей системе можно пос-мотреть командой:

Управлять настройками маршрути-зации можно командой route.

Осмелюсь напомнить, что для кор-ректной работы шлюз должен нахо-диться в той же подсети, что и один из работающих интерфейсов.

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

TimeZone, localesИнформация о временной зоне, гео-графическом регионе и другая хра-нится в файле /etc/TIMEZONE, кото-рый является символической ссылкой на /etc/default/init.

Остальные вопросыОстальные вопросы касаются раз-бивки дисков, набора устанавливае-мых пакетов и т. п. Конкретные воп-росы и ответы на них зависят от типа инсталляции.

Настройки файловой системы хра-нятся в файле /etc/vfstab, синтаксис которого походит на подобные файлы из других систем. Информацию об уста-новленной системе можно посмотреть командой showrev с различными ключа-ми, а также в каталоге /var/sadm.

Например, информация об уста-новленных пакетах хранится в файле /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.

netstat -rn

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

68

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

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

Сергей Косько

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

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

69№7, июль 2007

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

Один из вариантов такой реплика-ции можно реализовать с помо-щью специальной базы данных

Oracle Standby. Её можно применять совместно с обычным резервным ко-пированием. Режим Standby DB обес-печивает опция Data Guard базы дан-ных Oracle. Конфигурация Data Guard состоит из одной производственной и одной или более резервных баз дан-ных standby, которые находятся в осо-бом режиме, предусматривающем не-прерывный приём и применение потока изменений от производственной базы. Изменения передаются по универсаль-ной сети между разнесёнными геогра-фически серверами средствами Oracle Net [1]. Упрощённую схему взаимодейс-твия смотрите на рисунке.

В зависимости от конкретных тре-бований по времени восстановления и допустимой потери данных при ава-рии (recovery time objective, recovery point objective [2]). Возможны различ-ные сценарии реализации:n Physical standby DB – резервная

база данных является точной фи-зической копией основной, нахо-дится в монтированном состоянии и при этом переносится поток redo-информации.

n Logical standby DB – резервная ба-за данных не является точной копи-ей основной, открыта в режиме чте-ния–записи и при этом переносит-ся поток SQL-команд.

Конфигурация Oracle Data Guard может находиться в трёх режимах за-щиты: максимальной производитель-ности (maximum performance), мак-симальной доступности (maximum availability) или максимальной защи-ты (maximum protection) [3]. Измене-ния передаются копированием журна-лов базы данных, текущих или архив-ных. Их запись осуществляется двумя процессами LGWR или ARCn. Процесс LGWR ведёт запись активных журна-лов, дополнительные настройки вы-нуждают его передавать изменения на резервный сервер с помощью так на-зываемых standby redo log-файлов. Процесс ARCn переносит обычные ар-хивные журналы, дополнительные на-стройки вынуждают его передавать их ещё и на удалённый сервер. Если вы-браны режимы максимальных доступ-ности или защиты, поток изменений

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:

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

передаётся с помощью данных, запи-сываемых процессом LGWR. В режи-ме максимальной производительнос-ти возможна передача изменений как LGWR, так и ARCn.

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

Поскольку БД Logical Standby не яв-ляется точной копией основной ба-зы и не поддерживает некоторые ти-пы данных, SQL-команды, имеет тре-бования по обеспечению уникальнос-ти строк в таблицах [4], рассмотрим реализацию именно Physical Standby DB. Мне кажется, что использовать БД Logical Standby лучше не как резерв-ную копию, а в качестве базы для от-чётов. Выберем для работы основ-ной и резервной баз следующие на-стройки: производственная база ра-ботает в режиме maximum availability, переданные изменения применяются резервной базой в режиме Real-Time Apply Redo. Для такого режима рабо-ты инициатором передачи информа-ции об изменениях выступает как раз процесс LGWR. Разница между режи-мами защиты заключается в том, что в режиме maximum protection транзакция фиксируется только тогда, когда за-пись произведена и в локальные жур-налы, и удалённо, в случае невозмож-ности удалённой записи база данных останавливается, а в режиме maximum performance для продолжения работы достаточно только локальной записи, и основная БД продолжает свою рабо-ту, даже если связь с резервной базой отсутствует.

Режим maximum availability пред-ставляет компромиссный вариант, пе-реключаясь между двумя режимами автоматически. Если связь работа-ет без ошибок, передача происходит синхронно, если произошел сбой, ав-томатически осуществляется переход в менее строгий режим. После устра-нения сбоев режим максимальной за-щиты восстанавливается [5].

Что необходимо для создания тес-товой среды:n Два сервера одинаковой архитек-

туры, они могут отличаться по коли-честву процессоров, памяти, дис-ков, релизом операционной систе-мы и т. п. Пусть сервер primary DB будет называться Poltava, а сервер standby – Fastiv.

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

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

70

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

Создадим файлы standby redo log. Они нужны толь-ко для работы БД standby, но мы создадим их и на primary, и на standby, в случае переключения ролей между базами не будет необходимости в их создании.

Файлы standby redo необходимо создать не меньшего размера, чем online redo log, и в количестве n+1 от количес-тва redo group (cм. листинг 1).

Установим параметры в файлах параметров init.ora/spfile.ora для primary и standby (см. листинг 2).

Настроим Oracle Net для сетевых адресов Poltava и Fastiv.

Пример настроек файлов listener.ora и tnsnames.ora при-ведены в листинге 3.

Создание резервной БД standbyСоздадим резервные копии базы данных и файла паро-лей и перенесем скопированные файлы на резервный сер-вер Fastiv.

Поскольку значения ORACLE_SID для основной и ре-зервной баз отличаются, файлы паролей тоже будут иметь разные имена, например, orapwORCL и orapwORCL1.

Создадим standby control file и скопируем его на сервер standby в местоположение, указанное в файле параметров базы данных standby:

Листинг 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) ) )

SQL>ALTER DATABASE CREATE STANDBY CONTROLFILE AS ↵ '/tmp/standby.ctl';

Листинг 1. Добавление файлов Standby Redo

#!/bin/sh#sqlplus "/ as sysdba" <<EOFALTER 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;exitEOF

Листинг 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/

SQL>ALTER DATABASE FORCE LOGGING; *.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE*.DB_FILE_NAME_CONVERT=('/tstb/ORCL','/tstb/ORCL1') *.LOG_FILE_NAME_CONVERT=('/tstb/ORCL','/tstb/ORCL1')

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

71№7, июль 2007

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

Переключим основную базу данных в режим maximum availability следующей командой:

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

Операции с БД во время работыВо время работы необходимо выполнять определённые действия – пуск, остановка, открытие для чтения, регис-трация пропущенных логов, активация резервной базы (failover), обмен статусом (switchover). Рассмотрим эти опе-рации:

Скрипт stbstart отвечает за старт БД standby в режиме real-time apply. Остановку БД standby обеспечивает скрипт stbshut (см. листинг 4).

Проверим механизм передачи изменений переключе-нием журналов. На primary:

на standby:

Скрипт stbreadonly отвечает за запуск БД standby в ре-жиме read-only (см. листинг 5). Доставка Redo в этом случае продолжается, однако изменения будут отложены до выхо-да из этого режима.

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

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

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

Регистрация пропущенных логов наглядно показана в листинге 8.

SQL>STARTUP MOUNT;SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE ↵ AVAILABILITY;

Листинг 4. Пуск и остановка БД Physical Standby

#!/bin/sh#sqlplus "/ as sysdba" << EOFstartup nomount;alter database mount standby database ;ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING ↵ CURRENT LOGFILEDISCONNECT FROM SESSION;exitEOF

#!/bin/sh#sqlplus "/ as sysdba" << EOFALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;SHUTDOWN IMMEDIATE;exitEOF

SQL>ALTER SYSTEM SWITCH LOGFILE;

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

Листинг 5. Запуск БД standby в режиме read-only

#!/bin/sh#sqlplus "/ as sysdba" << EOFspool readonly.logALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;alter database open read only;exitEOF

Листинг 6. Обмена ролями между базами Poltava и Fastiv

#!/bin/sh#sqlplus "/ as sysdba" <<EOFspool switchover.logREM connect primary connect sys/manager@poltava as sysdbacolumn 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 modeconnect sys/manager@fastiv as sysdbacolumn 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;exitEOF

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

Листинг 7. Активация резервной базы данных в случае аварии

#!/bin/sh#sqlplus "/ as sysdba" <<EOFspool failover.logcolumn 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;exitEOF

Листинг 8. Определение и разрешение вручную пропусков передачи журналов

SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# ↵ FROM V$ARCHIVE_GAP;

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

72

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

Автоматизация мониторинга работыПоскольку БД primary находится в режиме maximum availability, то в случае остановки резервного сервера основ-ная БД продолжит свою работу. Между состоянием primary и standby образуется разрыв. Для обнаружения и устране-ния поломки потребуется время, в течение которого основ-ная база данных не резервируется. В этот момент, в случае повторной аварии уже на основной базе данных, возможна потеря данных. Чтобы своевременно обнаруживать и уст-ранять подобные ситуации, необходимо автоматизировать процесс наблюдения за работой обеих БД.

Это можно сделать, например, с помощью пакета fetchlog [6]. На базе этого программного обеспечения со-здан скрипт fetchalert (см. листинг 9), который можно за-пускать с помощью демона crond:

ВыводыПредложенная схема проста и не требует специального ап-паратного обеспечения для своей реализации, однако име-ет и недостатки: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/b14239/create_ ls.htm#i76646 – ограничение Logica l 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.

testcase$EDITOR=vi;export EDITORtestcase$crontab -etestcase$0,15,30,45 * * * * /usr/local/bin/fetchalert ↵ >/dev/null 2>&1

Листинг 9. Скрипт, выполняющий поиск ошибок в файле alert.log

#!/bin/sh#if [ -f /tmp/memsg_no ] then exit ;fiHOST=`/bin/hostname`MYMAIL="[email protected]"FILESLIST=`ls -R /ora/admin/*/bdump/*.log`for i in ${FILESLIST} dofilename1=`basename ${i}`dir1=`dirname ${i}|sed 's/\/ora\/admin\///gs/\/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" ] thenecho "\n${HOST}:${filename1}:${MSG1}\n"| /bin/mail ↵ ${MYMAIL}fifidone

THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#---------- ------------- -------------- 1 90 92

SQL>ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';

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

73№7, июль 2007

bugtraq

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

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

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

Множественные уязвимости в 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.Решение: Установите последнюю версию с сайта произ-водителя.

Несколько уязвимостей в 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 с сайта про-изводителя.

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

74

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

Помните, какие красивые доку-ментальные фильмы об уче-ных делали в советские вре-

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

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

КПК… Он успевает быть везде, и вре-мя отступает перед ним.

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

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

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

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

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

75№7, июль 2007

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

да – на переделку первого варианта». Так вдумчиво и неспешно и работают обычно писатели, исследователи, но-белевские лауреаты.

Сменив профессию ученого на про-фессию, связанную с бизнесом, Игорь Боровиков немного ностальгирует по своему академическому прошлому. Это проявляется в том, что Softline рас-полагается на улице Губкина, что близ столичной станции метро «Академи-ческая», в окружении научно-иссле-довательских институтов, и в том, что компания сразу после рождения занялась программным обеспечением, связанным с научными исследования-ми (сайт для профессиональных поль-зователей Matlab (www.matlab.ru) и ма-тематический портал для студентов (www.exponenta.ru)).

Но о чем Боровиков точно не жале-ет – о смене жизненного ритма. И вот почему:

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

– Вам этот ритм по душе?– Мне этот ритм подходит, пото-

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

Кстати, активность Игорь Павло-вич считает главным качеством, не-обходимым руководителю успешной компании:

– Надо хотеть, надо быть активным человеком. Что-то пытаться делать, не сидеть на месте. Ходить по улице, открывать новые «двери», заглядывать в новые отрасли. Быть внутренне под-вижным человеком, не статичным.

Сама компания возникла потому что Игорь Боровиков достойно отве-тил на вызов времени.

– Государство заявило фактичес-ки: «Мы не очень интересуемся, как бу-дут существовать научные работни-ки, на какую зарплату». Часть ученых пошла торговать на рынок, другая ста-ла продавать «железо». Мне, так как я до этого занимался абстрактной на-укой, захотелось заниматься програм-мным обеспечением, потому что в этом тоже была абстракция. Шел 1993 год, мало кто верил, что можно прода-вать лицензионное ПО в этой стране.

Это сейчас понятно, что рынок сущест-вует и он достаточно большой… Ес-ли бы мы, как большинство в то вре-мя, начали продавать, перепродавать компьютеры, то проиграли бы. Сейчас почти никого из бизнесменов, которые «гремели» в начале 90-х, не осталось на рынке. Кто помнит фирму «Микро-дин», которая была крупнейшим пос-тавщиком всего «железа» в России? Оказывается, заниматься понятным бизнесом не всегда выгодно, а риск-нув вложиться в «непонятный», мож-но получить дивиденды.

И все-таки ностальгия по прошло-му есть, не пропадает… Вот и про-грамма Softline IT Graduate возникла не просто так. Компания Игоря Борови-кова взялась быть посредником меж-ду студентами и выпускниками техни-ческих специальностей и крупнейши-ми русскими, зарубежными компания-ми. Студенты получают место в штате престижной IT-фирмы – вре-менное или даже постоян-ное, а компании решают кад-ровую проблему. Фактически Softline заменяет собой госу-дарство, которое давно отка-залось от принципа распре-деления после окончания ву-за. Игорь объясняет:

– Хотелось бы делать полезные ве-щи для страны в целом. Мы хотим, что-бы студент, который выходит из вуза, обладал не только фундаментальны-ми знаниями, но имел и практический опыт работы с тем или иным програм-мным обеспечением.

– Компании соглашаются их брать?– Соглашаются. Заинтересован-

ность есть.– Что их привлекает?– Гораздо лучше взять студента,

который хорошо учился, имеет серти-фикат Microsoft или другой компании, но не имеет опыта, чем взять «опытно-го» человека, но без сертификата.

– Кто интереснее компаниям – вы-пускник или студент?

– Студент последнего или предпос-леднего курса. В свободное от учебы время он уже может работать в ком-пании, там же молодые люди прохо-дят практику.

– На что обращает внимание руко-водство крупной компании?

– Наиболее объективные показа-тели – успехи в учебе. Никто не хо-

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

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

Стратегия Игоря Боровикова тако-ва: «Развиваться и постоянно делать что-то новое. Создать компанию, ко-торая работает в Москве и просто за-рабатывает деньги, – это не очень ин-тересно. Если я что-то делаю – стара-юсь делать это лучше всех, занимать лидирующие позиции». Характер Бо-ровикова-человека оказался востре-бованным у Боровикова-директора. А что это за характер? 50% прагматиз-ма, 50% романтизма, щепотка авантю-ризма, жгучая приправа – стремление к успеху, здоровый патриотизм и боль-шая ложка здравого смысла. Может быть, рецепт не полон, но так мне ви-дится… Вас удивляет, почему я счи-таю Игоря Боровикова романтиком? Он сам признается:

– Нельзя быть хорошим прагмати-ком без доли романтизма. Планы, ко-торые человек ставит перед собой, на первых порах – просто мечты…

Куда приводят мечты? В случае с Игорем Боровиковым к солидно-му факту – 24 офиса компании в Рос-сии и странах ближнего зарубежья,

Надо хотеть, надо быть активным человеком. Что-то пытаться делать, не сидеть на месте. Ходить по улице, открывать новые «двери», заглядывать в новые отрасли. Быть внутрен-не подвижным человеком, не статичным.

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

76

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

один в дальнем зарубежье – в Мон-голии. Причем развитие происходит не случайно, не анархично, а «плано-во» и последовательно.

Боровиков точно знает, что дела-ет и зачем:

– Географическое расширение для нас очень важно. Сейчас IT-услу-ги, в частности, программное обес-печение – не экзотика. Пользовате-ли из Таджикистана, Владивостока не готовы ехать в Москву, чтобы ку-пить ПО, как раньше ездили за хо-рошими товарами. Наш клиент, по-купатель хочет получать наши услу-ги, пользоваться сервисами рядом со своим домом. И поэтому мы при-сутствуем во многих российских го-родах, практически во всех странах ближнего зарубежья.

Географическая экспансия – это еще не все. Игорь Боровиков не боит-ся увеличивать направления деятель-ности своей компании. Но делает он это разумно, логично, не разбрасыва-ясь по мелочам.

– Сейчас у Softline три основных на-правления бизнеса. Первое – прода-жа программного обеспечения и ли-цензирование, второе – обучение и третье – консалтинг. Почему воз-никло два дополнительных направ-ления? Софт – продукт, который ос-воить самостоятельно достаточно сложно. Нашим клиентам удобно, ес-ли в той же компании, где они поку-пают софт, можно и обучение пройти: как правильно установить Windows, как правильно построить систему ин-формационной безопасности в ком-пании и так далее.

– А вам какое направление бли-же? О чем волнуетесь как руково-дитель?

– Я больше беспокоюсь о наших от-ношениях с клиентами, партнерами, поставщиками. Для меня это первич-но. Мне хотелось бы, чтобы клиенты воспринимали компанию Softline как

честного консультанта. Если мы что-то умеем делать, то делаем это хоро-шо, если Softline чего-то не умеет, мы честно об этом скажем.

– А если случается «про-кол»?

– Я всегда готов занять сторону клиента. Если мы чувствуем, что в чем-то вино-ваты, что-то сделали не так, вернем деньги клиенту, за-платим штраф, полностью все финансовые риски возь-мем на себя.

– Вы так настраиваете своих со-трудников?

– Да. Свои принципы я пытаюсь до-нести до уровня топ-менеджеров ком-пании, а они уже в той или иной фор-ме доносят ниже.

– Вы можете определить ваш стиль руководства?

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

– А что такое «справедливость»?Игорь улыбается:– Можно определить справедли-

вость как отсутствие несправедливос-ти. От противного.

Этот пассаж, признаться, снимает напряжение, которое у меня было воз-никло. Уж слишком идеальный образ

Боровикова-руководителя получился. А когда все гладко, кажется, что ком-пания создает воздушные замки, стро-ит нереальные планы. Однако все как нельзя более реально… Ведь не при-думан же оборот 97,7 млн. долларов за 2006 год! И планы тоже почему-то не воспринимаются как головокруже-ние от успехов – к 2010 году быть пред-ставленными в 50 российских городах и в 20 городах СНГ, довести оборот до 450-500 млн. долларов…

Возникает только один вопрос – как вся эта благодать достигается, в чем секрет, где, как говорят, «соба-ка зарыта»? Вытянуть эти секреты из Игоря Боровикова непросто, он вооб-ще не склонен слова бросать на ветер, хотя если формулирует мысль, получа-ется красиво.

– Компании все время нужно ре-шать насущные задачи. Это ваше ре-шение или корпоративное?

– На стратегическом уровне – мое. На уровне капитана корабля. Я решаю, что мы плывем, условно говоря, в Аме-рику. А вот как мы будем кидать уголь в топку, как будем поднимать паруса – это уровень директора по продажам, директора по персоналу, по маркетин-гу. Они и решают.

Сила примераЕсть какая-то педагогическая нот-ка в этом распределении обязаннос-

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

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

77№7, июль 2007

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

тей… И неудивительно, ведь Боро-виков – отец троих детей. Дочка еще малышка, ей 4 года, среднему сы-ну 11 лет, а вот старший уже совсем взрослый парень – 22 года, закон-чил институт и занимается консал-тингом. Вот такое воспитание… Толь-ко не подумайте, что Боровиков стре-мился, чтобы старший наследник не-пременно отправился по его стопам. Как ему после школы родители не навязывали свой выбор, отпустили, что называется, в свободное плава-ние, так и он своим детям не указы-вает, как жить:

– Я пытаюсь их научить своему стилю жизни, который не передает-ся словами, а впитывается, когда че-ловек находится рядом. Скорее вос-питывает общая атмосфера в семье, чем какие-то конкретные задачи, ко-торые я ставлю перед детьми. Жиз-ненный опыт нельзя передать в фор-ме нравоучений. Невозможно прочи-тать лекцию и научить ребенка лю-бить, ненавидеть… Только собствен-ным примером.

Сила примера – классическое по-нятие, но не устаревшее. И неудиви-тельно такое признание Игоря Пав-ловича:

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

Конечно, будничным, ежеднев-ным воспитанием занимается супруга Игоря, бизнес съедает львиную часть времени.

Зато на отдых Боровиковы тради-ционно ездят всей семьей. Зимой – в горы, летом – к морю. Только на от-дыхе Игорь Павлович и успевает чи-тать, заниматься спортом – сноубор-дом, виндсерфингом.

– Что вы читаете?– Авторов, которые не очень извес-

тны широкой публике. Шведа Августа Стриндберга, современного российс-кого автора Юрия Мамлеева. Это на-блюдения за жизнью, поведением лю-дей, зарисовки. Реальность, возведен-ная до уровня искусства.

– Владеете скорочтением? – пыта-юсь пошутить я.

– Умею быстро говорить, – шутит в ответ Боровиков. – Читаю с обычной скоростью. И память обычная. Не хотел бы забивать свою память IT-технологи-ями, версиями Windows, ценами.

– Тогда у вас наверняка аналити-ческие способности.

– Да, умею просеивать, анализиро-вать информацию. 90% информации, которая на нас сваливается, на самом деле не нужна. Основная задача – вы-брать 10%.

С интересом я узнала, что самая сложная аналитика для Игоря Борови-кова – это познание самого себя, само-совершенствование. Как хотите, не по-хож он на бизнесмена. И между тем – успешный деловой человек… Чудеса.

– Что вам помогает совершенство-ваться?

– Человек меняется во время об-щения с другими людьми. Я стара-юсь общаться с людьми, которые на-ходятся в разных социальных груп-пах, на разных уровнях творческого развития. Мне хотелось бы менять ве-щи не только вокруг, но и внутри себя. Человек закостеневает, приобретает имидж, вырабатывает для себя опре-деленные правила игры. Это сложно преодолеть.

– С какими творческими людьми вы общаетесь, если не секрет?

– Хожу в театры. Есть режиссе-ры, которые мне нравятся. Например,

Владимир Мирзоев. Очень нравятся выпускные спектакли, которые про-ходят в театральных вузах – Щепкин-ском, Щукинском училищах. Советую вам, сходите на выпускные спектакли, это интересно. Там вы увидите насто-ящий театр. Даже если актер играет самую незаметную роль, он настоль-ко выкладывается! Они меня заража-ют этой энергией. А от старого театра пахнет нафталином...

– У меня еще один, совсем стран-ный вопрос. У вас есть мечта?

Долгая пауза. Но интервью не пре-рывается. Игорь Боровиков честен и на этот раз:

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

И хотя журналисту хочется полу-чить ответы на все-все свои вопро-сы, не могу не согласиться с дирек-тором Softline. Капитан корабля дол-жен держать мечты в секрете, до по-ры до времени. Ну а когда задуман-ное сбудется, появится повод опять поговорить…

Текст: Оксана Родионова, фото: Владимир Лукин

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

78

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

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

Кирилл Сухов

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

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

79№7, июль 2007

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

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).

Её установка не вызывает проблем, просто поместите на вашу страничку тег:

и вся мощь библиотеки к вашим услугам.Что мы получим в результате? Совсем не набор ком-

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

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

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

конструкции document.getElementById(), но имеет несколь-ко больший функционал. Она может принимать в качестве аргумента как id элемента, так и сам элемент. Аргументов может быть более одного, и в этом случае функция возвра-щает массив элементов.

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

Следующая функция из этой компании – document.get ElementsByClassName. Вообще использовать имя клас-са для получения DOM (HTML) элемента, приём неновый, но требующий некоторых телодвижений, вроде перебора всех подобных элементов, поиска нужного класса в слож-ной структуре документа. Теперь мы избавлены от этой нудной работы.

Ниже представлен пример использования этой функ-ции:

Функция $A() представляет собой удобный конструктор массивов, преобразуя к этому типу данных любую коллек-цию объектов, принимаемую в качестве аргумента.

Функция $W() выполняет вполне банальную, но час-то встречающуюся задачу – приведение строки к масси-ву. Тут всё просто:

Функция $H() предназначена для работы с хэш-масси-вами. Она возвращает объект класса Hash и предоставля-ет методы для работы с ним.

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

<script src=prototype.js></script>

allNodes = $("firstDiv", "secondDiv"); for(i = 0; i < allNodes.length; i++) { alert(allNodes[i].innerHTML); }

<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>

w('apples bananas kiwis') // возвращает массив ['apples', 'bananas', 'kiwis']

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

80

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

Ниже представлен пример работы функции $H и объ-екта Prototype.Hash.

Кроме того, у объекта Hach есть исключительно полез-ный метод inspect(), позволяющий получить в браузере «чи-табельное» представление хэш-массива.

К приятным мелочам (хотя это, наверное, уже нечто по крупнее) я бы отнёс ещё и целый объект – PeriodicalExecuter, предоставляющий возможность периодического вызова заданной функции через указанный интервал. Его «родс-твенник» – объект Ajax.PeriodicalUpdater выполняет такие же действия, с запросом к серверу, но об этом – позже.

Попытка за попыткойВообще процесс кроссбраузерной JavaScript-разработки всегда представлял некоторые трудности по причине неод-нозначной реакции разных обозревателей на ошибки сцена-риев. В Prototype предусмотрен объект (функция) Try.these(), который сильно облегчает эту и другие задачи. Фактически он исполняет функции паттерна проектирования «Фасад». Он перебирает возможные варианты обработки и возвра-щает результат того обработчика, который оказался успеш-ным. Пример его использования:

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

Расширение объектов JavaScriptОсновное предназначение Prototype – расширение воз-можностей для javascript-разработчика. Для этой благой цели стандартные объекты JavaScript обрели новые воз-можности (если быть формальным – методы). Полный спи-сок расширений можно получить, ознакомившись с до-кументацией по библиотеке. Обозначим только некото-рые из них.

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

Например, метод observe(element, name, observer, useCapture) добавляет обработчик события DOM-элементу, с учётом различий объектной модели браузеров.

Метод stopObserving(element, name, observer, useCapture) убирает это событие. Фактически эти методы дают ре-ализацию паттерна проектирования «Обозреватель» в JavaScriot.

Метод findElement(event, tagName) находит в дереве DOM-объектов первый тег, совпадающий с параметром tagName, начиная с объекта, породившего событие.

Метод stop(event) останавливает распространение со-бытия.

Кроме этого, расширенный объект Event теперь име-ет свойства, соответствующие нажатию специальных кла-виш (таких, как <Tab> или <Esc>), а также статические ме-тоды обработки нажатия кнопки мыши и положения кур-сора на странице.

К классу Object были применены не совсем обычные расширения. Во-пер-вых, это метод extend(object), позволя-ющий реализовать наследование (ес-ли, конечно, для объектов JavaScript этот термин вообще применим), а во-вторых, тот же метод с двумя аргу-ментами – extend(destination, source), позволяющий копировать все свойс-тва и методы объекта source в объект destination).

Впрочем, манипуляции с объекта-ми (не слишком укладывающимися в классическую концепцию ООП), те-ма для отдельного разговора.

Класс Function дополнен методами, позволяющими связать данный экзем-пляр функции с объектами bind(object) и bindAsEventListener(object).

Не остался без внимания и класс String. Он дополнен методами, широ-ко распространёнными в веб-програм-мировании, но применяемыми на сто-

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()

<script>function getXmlNodeValue(xmlNode){ return Try.these( function() {return xmlNode.text;}, function() {return xmlNode.textContent;) );}</script>

Рисунок 1. Компонент Rico.Accordion. Вкладки на горизонтальной панели раскрывают независимое содержимое

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

81№7, июль 2007

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

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

Обработка формДля облегчения этой часто встречающейся задачи в биб-лиотеке предусмотрен объект Form с рядом полезных ме-тодов:

Form.getElements(form) возвращает массив значений элементов формы вне зависимости от их типа:

getInputs(form [, typeName [, name]]) возвращает массив значений элементов Input, причём с помощью необязатель-ных элементов можно уточнить тип и имя элемента.

Функционал методов findFirstElement(form), focusFirst-Element(form), а также disable(form) и reset(form) вполне ясен из их названий.

Замечательный метод Form.serialize() помогает переда-вать данные на сервер, возвращая элементы формы в ви-де строки, параметров HTTP-запроса:

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

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

Работа с JSONJSON (JavaScript Object Notation), формат, который в насто-ящее время стал одним из стандартов обмена информаци-ей между объектами javascript и в осо-бенности в клиент-серверном взаи-модействии. В некоторых случаях он удобней XML и гораздо экономичней, а следовательно – быстрее в работе.

В этом формате данные определя-ются коллекцией пар ключ/значение, которые можно представить, как хэш или ассоциативный массив.

Ниже приведён пример представ-ления данных в нотации JSON. По-мо-ему, довольно удобно и читаемо:

Для работы с этим форматом Prototype даёт нам не толь-ко функции приведения к данной нотации хэш-массива (объ-ект Hash) или получение/передачу в JSON обычной стро-ки (объект String). В библиотеке присутствует очень полез-ная функция evalJSON (разумеется, объекта String), об-легчающая работу с ответом сервера, сгенерированным в этой нотации.

Пример:

Соответственно существует и обратное преобразова-ние. Это метод unfilterJSON. Пример его работы:

С помощью расширения стандартного класса Object можно легко автоматизировать приведение к данной но-тации:

llNodes = Form.getElements("myform");for(i = 0; i < allNodes.length; i++) { //операции над каждым элементом}

'field1=value1&field2=value2&field3=value3'

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,

var person = '{ "name": "Violet", "occupation": ↵ "character" }'.evalJSON(); person.name;

person = 'grabUserPassword()'.evalJSON(true);

person = '/*-secure-\n{"name": "Violet", "occupation": ↵ "character"}\n*/'.evalJSON() person.name;

'/*-secure-\n{"name": "Violet", "occupation": ↵ "character", "age": 25}\n*/'.unfilterJSON() // получаем на выходе: // '{"name": "Violet", "occupation": "character", "age": 25}'

var Person = Class.create(); Person.prototype = { initialize: function(name, age) { this.name = name; this.age = age; },

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

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

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

82

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

А как же Ajax?Возможно, сейчас для многих разработчиков – это основ-ная причина использования JavaScript-библиотек. Основ-ная проблема обычно заключается в унификации запросов и получении ответов сервера, а также преодолении разли-чий между браузерами.

Для работы с объектом XMLHttpRequest в Prototype су-ществует объект Ajax, классы, наследуемые от которого стоит подробно рассмотреть.

В первую очередь это класс Ajax.Base, служащий осно-вой для других классов, определённых в Ajax. Основным инструментом для формирования запросов к серверу яв-ляется его наследник – класс Ajax.Request. Пример его ис-пользования:

Ничего не понятно? Сейчас разберёмся. Аргументы, передаваемые Ajax.Request, обозначены в нотации JSON (JavaScript Object Notation).

Первый параметр, который получает при создании Ajax.Request, это URL ресурса, к которому идёт запрос.

Второй – это параметры запроса, записанные в выше-упомянутой нотации JSON (это только один вариант, они могут быть переданы методу и в качестве строки, сфор-мированной как URL).

Третий параметр, в данном случае функция onLoaded(), выполняемая при получении ответа сервера объекта, но на её месте мог быть и массив нескольких обработчи-ков с функциями, заданными пользователем:

Остальные параметры этого метода:n requestHeader – список HTTP-заголовков в виде ассо-

циативного массива, где ключами выступают названия заголовков.

n onSuccess/onFilure – значениями этих полей являются пользовательские функции, выполняемые при успеш-ном или неудачном выполнении запроса.

n Asynchronous – булевый индикатор асинхронности AJAX-запроса. По умолчанию имеет значение TRUE.

n postBody – содержит данные, передаваемые в теле HTTP-запроса.

Остальные ещё более интересные возможности содер-жатся в следующем классе, наследуемом от Ajax.Request, это класс Ajax.Udapter, который решает задачу по вставке возвращённого сервером HTML-кода в заданный DOM-объ-ект. Ajax.Udapter очень удобен для динамического измене-ния содержания страницы. В дополнение к свойствам ро-

дительского класса он содержит и не-которые дополнительные.

Во-первых, это insertion (Object, String) – функция, которая вызывается для вставки полученного текста в объ-ект, вызываемая с двумя аргумента-ми – объект, в который будет произ-водиться вставка текста и непосредс-твенно сам текст, полученный в резуль-тате запроса.

Второе свойство – evalScripts опре-деляет, будут ли выполняться скрипты, полученные в HTTP- ответе.

Конструктор этого объекта – Ajax.Updater (container, url, options) содер-жит новый аргумент – container, зна-чение которого является идентифика-тором DOM-элемента, в который будет произведена вставка текста, получен-ного в результате запроса.

Ajax.PeriodicalUpdater, наследу-емый от Ajax.Base, идёт ещё даль-Рисунок 3. Главная страница сайта библиотеки script.aculo.us

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);

<script> function someAjax($url) {var myAjax = new Ajax.Request( url, {method: 'get', parameters: {type:'care',name:'volga’},onLoaded:function(){alert(‘test’)} onComplete: someFunction} ); }

function someFunction (req) { $('tagert').value = req.responseText; }</script>

var myOpts = {onComplete: showResponse, onLoaded: registerLoaded};

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

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

83№7, июль 2007

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

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

Для «низкоуровневой» работы с XMLHttpRequest в базовом классе Ajax предусмотрен метод getTransport(), который просто возвращает объект XMLHttpRequest. Разумеется, учиты-вая особенности используемого бра-узера.

ПозиционированиеРазмещать или перемещать в неко-тором заданном пространстве DOM (в частности HTML) элементы, уже дав-но вполне решаемая задача. Проблемы, правда, присутс-твуют – это опять пресловутое различие между браузе-рами и дикое количество кода (зачастую немотивирован-но повторяющегося), используемого в целях реализации сложного позиционирования. Для решения этих проблем библиотека предлагает объект Position. Его методы позво-ляют определить смещение любого DOM-элемента с учё-том прокрутки и смещения родительских элементов. С по-зиционированием тесно связан класс Insertion, управляю-щий вставкой текста или DOM-элемента, в HTML-страни-цу. Названия его методов – After(), Before(), Bottom(), Top() уже говорят об их назначении.

Библиотеки на основе PrototypeКак уже говорилось, Prototype – это скорее не продукт для конечного пользователя, а framework для построе-ния JavaScript-библиотек. Перечислю лишь некоторые из них. Библиотека Rico (http://openrico.org) предназначе-на для построения сложных визуальных и анимационных эффектов. На демо-странице проекта можно познакомить-ся и «поиграться» с её основными объектами. На рис. 1 показан компонент Rico.Accordion. Каждая горизонталь-ная панель раскрывает или закрывает свою вкладку с не-зависимым содержимым. Фактически он помещает на-бор DOM-элементов в заданную разработчиками область с возможностью независимого доступа. На рис. 2 – ком-понент Rico.Color. Его работа, мне кажется, в пояснени-ях не нуждается.

Библиотека script.aculo.us (http://script.aculo.us) также ре-ализует многочисленные визуальные эффекты. Это пере-таскивание (drag-and-drop) объектов по странице, динами-ческая сортировка, автозаполнение форм и т. д. Сайт биб-лиотеки (см. рис. 3) – прекрасный образец её возможностей. В её составе три основных объекта: Sortable, обеспечива-ющий динамическое перемещение объектов, Controls, ре-ализующий интерактивные элементы управления и Effect – набор самых различных визуальных эффектов, таких как

Effect.Pulsate(), заставляющих видимый объект вибриро-вать, или Effect.Puff(), представляющий собой красивый способ растворить объект в воздухе. Полезна также функ-ция Parallel(), позволяющая одновременную работу несколь-ких визуальных эффектов. Жалко, что страница журнала не поддерживает DOM-модель и не даёт возможности про-иллюстрировать вышесказанное, поэтому рекомендую по-сетить сайт этого проекта.

Можно упомянуть ещё небольшую библиотеку Prototype window. Это дополнительный класс, позволяющий созда-вать симпатичные окошки, которые вы видите на рис. 4 и некоторые другие объекты (модальные диалоги, дина-мические визуальные эффекты). При разработке прило-жения для получения подобных окон нужно написать все-го две-три строки кода:

Наконец, Prototype используют такие мощные framework, как Ruby On The Rails и Symfony (популярный web application framework, для PHP5 http://www.symfony-project.com).

Что дальше?Честно говоря, описав возможности библиотеки (или framework) Prototype, я совсем «забыл» сказать о самом главном – возможности создания собственных полноцен-ных объектов и гибкого управления ими. Об этом – в сле-дующий раз.

В статье была использована документация библиотеки Prototype (http://www.prototypejs.org/api), а также неофициальное ру-ководство разработчика, составленное Sergio Pereira (http://www.sergiopereira.com/articles/prototype.js.html) и доступное теперь на русском языке в переводе, выполненным Виктором Кроллом (http://kropp.spb.ru/docs/prototype).

var win = new Window({className: "spread", title: ↵ "Ruby on Rails", top:70, left:100, width:300, ↵ height:200, url: "http://www.rubyonrails.org/", ↵ showEffectOptions: {duration:1.5}}) win.show();

Рисунок 4. Окошки, созданные с помощью библиотеки Prototype window

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

84

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

История компании Intergraph

Дмитрий Мороз

Мы – компания и должны приносить прибыль.Если мы приносим прибыль, мы будем

существовать очень долго.

Джим Тейлор

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

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

85№7, июль 2007

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

Пионеры своего делаВ 1969 году Джеймс Мидлок (James Meadlock) покинул пост инженера в корпорации IBM и основал собствен-ную компанию, M&S Computing, вложив в неё 39 тысяч долларов из собствен-ных сбережений.

Он решил остаться в Хантсвил-ле (штат Алабама) не только из-за то-го, что сам был родом с юга, но глав-ным образом из-за располагавшего-ся здесь центра управления полётами NASA, в котором Мидлок ранее раз-рабатывал программное обеспечение для навигации ракетоносителей Са-турн (Saturn), запускавших космичес-кие аппараты Аполлон (Apollo) к Лу-не. Основатель M&S Computing считал, что в таком месте программисты будут очень востребованны.

Кроме самого Мидлока, его ново-испечённая компания состояла из че-тырёх инженеров-программистов, а также секретаря.

В течение первых нескольких лет своего существования M&S Computing занималась консультированием пра-вительственных организаций относи-тельно использования цифровых тех-нологий, а также создавала програм-мное обеспечение для ракетной на-вигации.

Кроме того, она приступила к раз-работке интерфейсов пользователя, а также систем интерактивной ком-пьютерной графики.

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

Первый графический терминал был разработан M&S Computing по за-

казу правительства для проектирова-ния печатных плат в 1970 году.

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

Позднее инженерами компании была разработана специальная плата, ускорявшая прорисовку изображения на терминале в три раза.

В 1972 году в строй вступила интер-активная графическая система, соз-данная для нужд командования про-тиворакетной обороны США.

В отличие от других компаний, про-изводивших компьютеры для собс-твенных нужд, Мидлок со товарищи использовали серийно производи-мые мейнфреймы PDP производства Digital Equipment Corporation (DEC), экономя, таким образом, средства и время.

Спустя ещё два года компания вы-полнила заказ на производство сис-темы планирования для города Нэш-виль (штат Теннесси). Работала она под управлением ПО IGDS (Interactive Graphics Design Software – програм-мное обеспечение для интерактивно-го графического дизайна), первой ком-мерчески доступной интерактивной системой автоматического проекти-рования (САПР).

Благодаря IGDS оператор мог с лёгкостью получить необходимую ин-формацию о любой интересующей его части города, просто указав на тот или иной блок на карте.

Система для Нэшвиля сыграла с компанией злую шутку. «Согласно подписанному с городскими властями контракту мы обязались предоставить им готовый проект за 32 тысячи дол-ларов», – вспоминает Мидлок. «Одна-ко в результате система обошлась нам в 200 тысяч долларов. Ситуация была очень плачевна, поскольку из-за этого финансового просчёта компания чуть не прекратила своё существование. Но я верю, что подобный случай укре-пил мнение о нас как о компании, лю-быми средствами выполняющей свои обязательства».

К концу 1960-х M&S Computing вы-шла на рынок нефте- и газодобычи, на-чав предоставлять системы трёхмер-

ного планирования. Они же пригоди-лись и для архитектурного проекти-рования, только начинавшего наби-рать обороты.

В то время как большинство пос-тавщиков САПР ориентировали свои продукты лишь на авиакосмическую промышленность и автомобилестро-ение, компания Мидлока в роли пер-вопроходца осваивала новые рынки, что позволило ей в будущем прочно закрепиться на них до прихода кон-курентов.

Кроме системы планирования, M&S Computing первой представила дополнение к IGDS, предназначенное для проектирования трубопроводов.

Что касается аппаратных разрабо-ток, компания выпустила в 1978 году многомониторный графический тер-минал, состоявший из двух размещён-ных рядом дисплеев.

Кроме того, благодаря исполь-зованию процессора LSI-11/2 от DEC M&S Computing первой в отрасли ре-ализовала локальную вычислитель-ную сеть.

Выход в лидерыПоскольку деятельность компании M&S Computing была так или иначе связана с графическими технологи-ями, в 1980 году руководство приня-ло решение об изменении её назва-ния. Отныне компания была известна как Intergraph (от Interactive Graphics – интерактивная графика).

Обзаведясь новым названием, компания была готова к конкурентной борьбе. А соревноваться было с кем и за что. Мидлок считал своим глав-ным конкурентом бывшее место ра-боты – IBM. По количеству продавае-мого оборудования для САПР «Голу-бой гигант» опережал Intergraph в не-сколько раз. К счастью для компании, ей удалось заключить несколько очень крупных контрактов, например, с Xerox Corporation и Porshe.

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

Воспользовавшись моментом, Intergraph также организовала но-

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

86

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

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

Подобное нововведение быстро дало свои «плоды», позволив ком-пании прочно закрепиться на новых рынках. Например, поставки САПР в 1983 году приносили Intergraph уже 20% всех доходов.

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

В 1980 году она первой на рын-ке выпустила графический терми-нал, включавший в себя два монитора с высоким разрешением в 1280х1024 пикселей.

Через год Intergraph представила терминал с цветным дисплеем, отоб-ражавшим 4096 цветов.

А по прошествии ещё 12 месяцев графические терминалы компании об-ладали встроенным графическим про-цессором для обработки трёхмерного изображения, работавшим параллель-но с центральным компьютером.

В это же время Intergraph выпус-тила две линейки рабочих станций собственного производства, InterAct и InterPro, ориентированных на систе-мы автоматизированного проектиро-вания. Изначально они работали на ба-зе архитектур VAX и Micro VAX произ-водства DEC и требовали подключе-ния к мейнфреймам.

В 1984 году компания выпустила

первые полностью автономные рабо-чие станции серии 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).

В отличие от большинства своих

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

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

87№7, июль 2007

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

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

Компании удалось избежать этого, используя готовые технологии и про-двигая их на новые рынки. Таким об-разом, Intergraph «диктовала моду» са-мостоятельно, тогда как большинство её конкурентов попросту шло на по-воду у своих клиентов, ограничиваясь тем, что имеет.

1986 год ознаменовался для ком-пании ещё одним приобретением. На этот раз в её руки попала Optronics – разработчик периферии, а также обо-рудования для сканирования.

Финансовые показатели были как всегда велики: за неполный год доходы Intergraph возросли на 33%. Количество сотрудников в середине года достигло 5289 человек, тогда как в 1984 году работало 3483 человека.

Intergraph ещё раз реорганизова-ла собственный отдел продаж, раз-делив его на несколько частей, от-вечавших за картографию и энерге-тические исследования, САПР, про-изводство электроники и электрон-ную вёрстку.

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

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

Что же касается аппаратных раз-работок, здесь придраться к компании было невозможно, ибо 1986 год озна-меновался появлением…

А вместо сердца – пламенный моторВ 198 6 году архи тек т ур ы VA X и M ic roVA X, использовавшиеся Intergraph в своих системах, были уже морально устаревшими. Балом правила архитектура RISC (Reduced Instruction Set Computer – компью-тер с сокращённым набором инструк-

ций), которую поддержало сразу не-сколько производителей процессоров: Sun (SPARC), MIPS Technologies (MIPS), Motorola (88000) и Intel (i960). Даже са-ма DEC вела разработки новых микро-процессоров на основе архитектуры RISC с 1982 года, итогом которых стал выпуск десятилетие спустя процессо-ра Alpha. До этого она, кстати, успела выпустить ряд рабочих станций на ба-зе процессора MIPS, работавших под ОС Ultrix (1989 год).

Ещё одной компанией, разра-батывавшей RISC-процессор, была Fairchild Semiconductor, «перу» кото-рой принадлежит выпуск первых ин-тегральных микросхем.

Получивший название Clipper, дан-ный чип обладал некоторыми особен-ностями, выгодно отличавшими его от других процессоров. Его архитек-тура имела упрощённую систему ко-манд по сравнению с CISC (Complex Instruction Set Computer – компью-тер со сложным набором инструк-ций), однако включала в себя больше сложных инструкций, нежели в других RISC-процессорах.

Эти команды были реализованы в специальном ПЗУ под названием Macro Instruction ROM, который рас-полагался внутри процессора. Бла-годаря этому Clipper имел несколь-ко большую плотность кода по срав-нению с другими чипами на основе RISC-архитектуры.

Строго говоря, Clipper не являл-ся микропроцессором в прямом по-нимании этого слова. Это был чипсет, в состав которого входило три мик-росхемы.

Одна из них (называемая CPU-FPU) содержала микропроцессорное ядро, а также сопроцессор для обработ-ки чисел с плавающей запятой, а две другие (CAMMU) – кэш-память, а так-же устройство управления памятью (MMU – Memory Management Unit).

Первая микросхема CAMMU отве-чала за инструкции, тогда как вторая – за данные.

Чип CPU-FPU содержал тридцать два 32-разрядных регистра для цело-численных чисел, восемь 64-разряд-ных регистров для чисел с плавающей запятой, а также счётчик команд.

Каждая из микросхем CAMMU не-сла «на борту» 4 Кб двусторонней ассоциативной кэш-памяти, 16-бит-

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

В поисках процессора для своих рабочих станций Intergraph останови-лась как раз на чипе Clipper.

Сам себе режиссёрПервоначально Fairchild Semiconductor планировала начать поставки процес-сора в 1985 году, однако трудности с производством передвинули этот срок на два года вперёд.

Intergraph, надеявшейся полу-чить крупные партии чипов хотя бы в 1986 году, пришлось выпустить её новую рабочую станцию класса High-End, InterPro 32C лишь «на бумаге», поскольку для массового производс-тва компании остро не хватало про-цессоров.

Тем не менее новый компьютер пер-вым на рынке обеспечивал произво-дительность 5 MIPS (Million Instructions per Second – миллионов инструкций за секунду).

Во время разработки компьюте-ра инженеры Intergraph воспользова-лись «философией расширяемости» набиравшей популярность архитекту-ры IBM РС.

InterPro 32C включала в себя три независимые подсистемы: процессор/память, графика и сетевая подсисте-ма. Пользователь мог самостоятель-но улучшать компоненты своей рабо-чей станции без необходимости покуп-ки новой системы.

К апрелю 1987 года стало яс-но, что Fairchild не может предоста-вить требуемое количество процессо-ров для рабочей станции. В результа-те Intergraph потеряла 25 млн. долла-ров, а также лишилась статуса компа-нии с «непрерывно увеличивающим-ся доходом».

Следующие два года компания пос-вятила «покупкам».

В июне 1987 года Intergraph объ-явила о намерении инвестировать в Fairchild 50 млн. долларов, тем са-мым обзаведясь правами на треть компании.

Однако в октябре ситуация сло-жилась несколько иначе: Intergraph попросту выкупила всю интеллекту-

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

88

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

альную собственность, касавшуюся процессора 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 значительно

лучше, нежели с собственными сис-темами InterPro.

Несмотря на сильную конкурен-цию со стороны IBM и DEC, Intergraph всё же смогла выйти в лидеры про-даж САПР в Северной Америке к кон-цу 1988 года, а к 1990 году – на второе место в мире.

За прошедшее десятилетие доходы компании возросли на 700%, число со-трудников – на 500%. Intergraph была на пике своей популярности.

Дела у компании шли хорошо да-же тогда, когда, по предсказаниям ана-литиков, она была обречена на поги-бель. В этом был «виноват» её испол-нительный директор – Джеймс Мидлок. Он всегда быстро реагировал на пос-тоянно совершенствующиеся компью-терные технологии, вследствие чего техническая база компании остава-лась на высоте.

Несмотря на то что в одной из ста-тей Industry Week сам Мидлок честно признался, что его компания «пропус-тила бум персональных компьютеров», рабочие станции Intergraph всё равно оставались конкурентоспособным про-дуктом на рынке.

То же самое касается и програм-много обеспечения. САПР MicroStation, которой в 1989 году исполнилось все-го два года, уже занимала третье мес-то в списке систем автоматизирован-ного проектирования для персональ-ных компьютеров.

В августе 1989 года владельцев ра-бочих станций Intergraph ждал сюрп-риз: сразу несколько известных произ-водителей ПО объявили о намерении перенести свои прикладные програм-мные пакеты на операционную систе-му CLIX (разновидность UNIX System V для процессоров Clipper, под которой работали компьютеры Intergraph).

Компания в очередной раз увели-чила свои «владения» путём покупки в октябре компании Quintus Computer Systems за 6,5 млн. долларов.

Подобная участь ждала ещё од-ного разработчика САПР, компанию Daisy/Cadnetix. Преимущества куплен-ной в ноябре 1990 года за 14 млн. дол-ларов компании для Intergraph были очевидны: Daisy/Cadnetix обладала очень сильными позициями на рын-ке Европы, исследовательским цент-ром в Израиле, а также большой кли-ентской базой.

К сожалению, её финансовое со-стояние на протяжении нескольких лет ухудшалось, вследствие чего компа-нию покинуло множество высококва-лифицированных сотрудников.

Когда Intergraph продала Tangent Systems в начале 1989 года, она поки-нула рынок программного обеспече-ния для инженерных расчётов, одна-ко благодаря покупке Daisy/Cadnetix он был снова для неё открыт.

Вообще 1990 год был для компа-нии наиболее удачным за всю её ис-торию. Доход Intergraph наконец-то пе-ревалил за отметку в один миллиард долларов, в результате чего она ста-ла гордым членом списка Fortune 500. Компания также подписала долгосроч-ный контракт с Ameritech, который дол-жен был приносить ей 7 млн. долла-ров ежегодно.

Неудивительно, что как только компания достигла очередного успе-ха, на неё сразу же начала сыпать-ся критика.

Пенсионный фонд штата Нью-Йорк обязал Intergraph, наряду с четырьмя другими компаниями, укомплектовать свой совет директоров большим коли-чеством председателей, не являющих-ся её сотрудниками.

Негодовали и финансовые анали-тики, предрекавшие замедление её роста. Согласно их оценкам, несмот-ря на хорошую репутацию компании, новые клиенты не спешили наведы-ваться в офисы Intergraph.

И хотя компания разрослась вдвое в период с 1985 по 1991 год, её доход увеличивался не столь пропорцио-нально.

Однако больше всего критики в ад-рес Intergraph шло по поводу мето-дов управления компанией, которыми пользовался Джим Мидлок.

В то время как поставщики САПР разрабатывали своё программное обеспечение для двух и более аппа-ратных платформ, Мидлок отказывал-ся поступать подобным образом.

Из-за этого, по признанию вице-президента по корпоративному мар-кетингу Intergraph Роберта Глазьера (Robert Glasier), она потеряла несколь-ко многомиллионных контрактов.

С другой стороны, по его словам: «Все разработчики программного обеспечения стараются держаться од-ной, максимум двух платформ, пос-

Процессор Clipper C4

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

89№7, июль 2007

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

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

Ещё один уникальный для ком-пании аспект заключался в том, что, в то время как рынок закрытых ком-плексных систем фактически был уже «мёртв», подобная продукция от Intergraph продолжала продавать-ся на удивление резво.

Подтверждению этого факта слу-жит заключенный в апреле 1991 года контракт с Агентством военной кар-тографии (Defense Mapping Agency) на сумму 362 млн. долларов. Компания обязалась создать систему для пла-нирования военных действий во вре-мя операции «Буря в пустыне» (Desert Storm).

В 1991 году в недрах APD стар-товала работа по разработке ново-го процессора Clipper C400 (его пред-шественник, C300, был выпущен в 1989 году).

Для достижения нового уровня про-изводительности в С400 были объеди-нены две технологии: первая (супер-скалярная обработка) позволяла ядру выполнять несколько инструкций од-новременно, а вторая (суперконвейер-ная обработка) – обеспечивала высо-кое быстродействие путём увеличения частоты работы чипа.

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

Ещё одно отличие С400 от своих предшественников – использование в составе чипсета четырёх микросхем: микропроцессорного ядра, сопроцес-сора, MMU, а также кэш-памяти.

Ирония судьбы – С400, являвший-ся наиболее совершенным RISC-про-цессором, оказался не только послед-ним чипом семейства Clipper, разра-ботанным компанией, но и наименее «живучим». «Пламенный мотор» отра-ботал своё уже через год после выхо-да в свет.

Ветер переменНесмотря на успехи компании по про-даже комплексных систем, Мидлок прекрасно осознавал, что в перспек-тиве собственная аппаратно-програм-мная архитектура, необходимость в её постоянном усовершенствовании

и поддержке, в конечном итоге станут «бутылочным горлышком» для даль-нейшего развития компании.

В результате в 1992 году Intergraph объявила о подписании соглашения с Microsoft, согласно которому послед-няя перенесёт свою новую операцион-ную систему Windows NT, ориентиро-ванную на рабочие станции и серве-ра, на платформу Clipper.

Год спустя, в июле 1993 года, Intergraph объявила о концентрации на стратегии «стандартной платфор-мы», намерении прекратить разработ-ку собственных процессоров, и пере-ходе на чипы SPARC.

Выбор на эту архитектуру пал не спроста. Ещё после покупки Daisy/Cadnetix Intergraph пришлось продол-жить поддержку рабочих станций Sun, для которых Dazix разрабатывала своё программное обеспечение. К тому же, в начале 90-х именно Sun являлась «номером один» в мире на рынке ра-бочих станций, что также сыграло не-маловажную роль.

Новейший процессор С5, разра-батываемый APD в то время, канул в Лету.

Отныне приоритетной задачей подразделения являлась помощь Sun в разработке следующего поколения 64-разрядных чипов.

Тандем SPARC-Windows NT – вот новая цель Intergraph, которая, одна-ко, просуществовала недолго.

Вышедшая внезапно на сцену кор-порация Intel предложила Intergraph сделку, от которой последняя не смог-ла отказаться.

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

Отныне компания вплоть до пре-кращения выпуска собственных рабо-чих станций в 1999 году первой на рын-ке представляла системы с чипами Pentium, Pentium Pro, Pentium II и III, а также их Xeon-вариантами.

Что же касается не нужного бо-лее процессорного подразделения Advanced Processor Division, оно вмес-те со своими 70 сотрудниками переко-чевало в руки Sun.

Новая стратегия больно ударила по финансовому состоянию компании. Всего за 1993 год компания потеряла почти 165 млн. долларов, а за 1994-й – 72,6 млн. долларов.

Положительный момент заключал-ся в том, что рынок рабочих станций на базе архитектуры х86 рос с неве-

Проект завода по переработке газа, построенный благодаря аппаратно-программным средствам Intergraph

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

90

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

роятной скоростью, в результате чего у Intergraph появилось множество но-вых клиентов.

Представив в 1994 году свою пер-вую рабочую станцию на базе процес-сора Pentium, компания смогла за не-полный год реализовать на 41% боль-ше систем по сравнению с годом ра-нее. Правда, на прибыли этот показа-тель практически не отразился – до-ход Intergraph от продаж компьютеров прибавил всего 4%.

Ты мне больше не дружокНа протяжении последующих трёх лет компания продолжала планомерно те-рять деньги. На рынок рабочих стан-ций на базе архитектуры х86 один за другим вышли «гиганты» IBM, Dell, Compaq и другие, отнявшие хороший «кусок пирога» у Intergraph.

Однако самый сильный удар компа-нии нанес её партнёр – Intel. В 1996 го-ду производитель процессоров начал требовать от Intergraph прекращения изымания лицензионных отчислений за патенты по С5, а также лицензи-ровании всей патентной базы компа-нии, относящейся к производству про-цессоров. Естественно, Intergraph от-ветила отказом и Intel задействовала своё монопольное положение на рын-ке, проведя ряд нелегальных дейс-твий, дабы заставить компанию вы-полнить свои требования. Среди них было повышение цен на чипы, а так-же сокрытие технической информа-ции о новых процессорах с целью уве-личения у Intergraph сроков разработ-ки новых рабочих станций. В резуль-тате компания потеряла в 1996 году 301 млн. долларов, а цена её акций упала с 20 до 8 долларов за штуку.

Загнанной в угол компании ничего не оставалось, как обратиться в суд. 17 ноября 1997 года Intergraph подала иск против Intel, обвинив её по трём пунктам: нарушении собственной па-тентной базы, недобросовестном от-ношении к компании, а также наруше-нии антимонопольного права.

Судебная тяжба с Intel непосредс-твенным образом повлияла на бизнес компании. Intergraph, в то время забо-тившаяся лишь об отстаивании сво-их прав в суде, более не могла быс-тро реагировать на изменения рын-ка, вследствие чего её компьютеры и серверы оказались неконкурентос-

пособны. Компания продолжала вы-пускать рабочие станции на базе про-цессоров Pentium, однако они прино-сили ей одни лишь убытки. В конце 1998 года IBM и SGI выразили желание купить Intergraph. В августе 1999 го-да компания объявила о прекраще-нии производства аппаратного обес-печения и увольнении 400 сотрудни-ков. Поиск потенциального клиента на её компьютерную технику закон-чился в июле 2000 года, когда компа-ния Intergraph объявила о подписании договора с компанией SGI и продаже ей линейки рабочих станций и серве-ров Zx10.

В этом же году нашла себе хо-зяина и Intense 3D, дочерняя компа-ния Intergraph, занимавшаяся произ-водством и продажей графических карт сторонним компаниям. За вре-мя своего существования (Intense 3D «ушла в плаванье» в июле 1997 года) она стала поставщиком видеоадапте-ров для рабочих станций производства IBM, DEC, Compaq и, конечно же, самой Intergraph. Новым владельцем компа-нии стал производитель графических процессоров – 3DLabs (на чипах кото-рой, кстати, и были построены видео-карты Intense 3D).

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

Время собирать урожайВ 2001 году, спустя 32 года, свой пост исполнительного директора по-кинул основатель Intergraph Джеймс Мидлок. Его место занял Джим Тей-лор (Jim Taylor), также посвятивший работе в компании всю свою жизнь – он был одним из четвёрки первых ин-женеров компании.

В начале 2002 года Intergraph про-вела очередную реструктуризацию, в результате которой была разделе-на на четыре подразделения: Реше-ния для правительства, Картография, Топливо и Энергетика, а также Об-щественная безопасность и комму-никации.

Судебный процесс между Intergraph и Intel длился на протяжении почти пя-ти лет. 17 апреля 2002 года производи-тель процессоров решил уладить иск мирным путём, в результате чего вы-

платил истцу 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.

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

92

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

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

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

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

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

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

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

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

Минус издания – в нем не рас-сматривается седьмая версия Internet Explorer (хотя и упоминается несколько раз о ее выходе в скором времени).

Qt 4: программирование GUI на C++Жасмин Бланшет, Марк Саммерфилдсредств разработки для создания при-ложений с графическим пользователь-ским интерфейсом (на C++). Основное содержание разбито на 3 части, харак-теризующиеся различными уровнями сложности: базовый, средний и про-двинутый.

В первой все начинается с простей-шего аналога традиционному «Hello, world» – создания окна с единствен-ным виджетом с текстом приветствия. После этого следует рассмотрение ва-рианта с несколькими элементами уп-равления, постепенно расширяется описание интерфейса окон и возмож-ностей взаимодействия с пользовате-лем. Завершается базовая часть воп-росами создания собственных видже-тов и их внедрения в Qt Designer.

Во второй части затронуты такие аспекты, как обработка событий, опе-рации ввода-вывода (файлы, катало-ги, межпрограммное взаимодействие), сеть (протоколы FTP, HTTP, TCP и UDP), двухмерная и трехмерная (QtOpenGL)

графика, работа с реляционными ба-зами данных (на примере MySQL) и до-кументами XML, создание элементов системы помощи.

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

Кроме того, в книге приводится ин-формация об установке Qt для под-держиваемых платформ и краткое ру-ководство по C++ для разработчиков на Java и C#.

nИздательство:

nГод издания:

nКоличество страниц:

nISBN:

nЦена:

Книга предоставлена издательством

«Вильямс».

«Вильямс»

2007

272

978-5-8459-1199-5

≈ 157 руб.

nИздательство:

nГод издания:

nКоличество страниц:

nISBN:

nЦена:

Книга предоставлена издательством

«КУДИЦ-ПРЕСС».

«КУДИЦ-ПРЕСС»

2007

648

978-5-91136-038-2

≈ 282 руб.

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

93№7, июль 2007

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

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

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

Однако все это привело не только к позитивным результатам, поскольку

сами фазы: начальная развития (она разбита на итерации), а в последней сравниваются адаптивное и предик-тивное планирование.

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

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

На третьей – диаграммы видов деятельности (моделирование про-цессов), концепции обобщений и спе-циализации, архитектурный анализ, применение дополнительных шабло-нов GoF, работа с базой данных, до-кументирование (создание докумен-тов SAD).

На протяжении всей книги пред-ставленная теория дополняется дву-мя примерами ее практического ис-пользования: система автоматизации торговой точки и игра «Монополия». Все примеры программного кода на-писаны на языке Java.

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

при прочтении многих материалов ос-тается ощущение неосновательнос-ти и неполноты в описании конкрет-ных фундаментальных понятий и ме-ханизмов.

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

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

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

nИздательство:

nГод издания:

nКоличество страниц:

nISBN:

nЦена:

Книга предоставлена издательством

«Вильямс».

«Вильямс»

2007

736

978-5-8459-1185-8

≈ 698 руб.

nИздательство:

nГод издания:

nКоличество страниц:

nISBN:

nЦена:

Книга предоставлена издательством

«КУДИЦ-ПРЕСС».

«КУДИЦ-ПРЕСС»

2007

504

978-5-91136-036-8

≈ 440 руб.

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

94

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

n Вы можете оформить подпискуналюбойроссийскийадрес.

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

Редакционная подписка для физических лиц

n Вы можете оформить подпискуслюбогомесяцаналюбойсрок.

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

nЖурналвысылаетсяпочтойпрос-тойбандерольютолькопослепос-тупленияденегнарасчетныйсчетикопии заполненного и оплачен‑ного бланка, отправленной в ре‑дакцию по факсу:(495) 628‑82‑53или на электронный адрес: [email protected].

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

95№7, июль 2007

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

Российская ФедерацияnПодписнойиндекс:годовой–20780,полугодовой–81655 Каталогагентства«Роспечать»nПодписнойиндекс:87836 Объединенныйкаталог«Пресса России» Адресныйкаталог«Подписка за рабочим столом» Адресныйкаталог«Библиотечный каталог»nАльтернативныеподписныеагентства: Агентство«Интер‑Почта»(495)500-00-60,курьерская

доставкапоМоскве Агентство«Вся Пресса»(495)787-34-47 Агентство«Курьер‑Прессервис» Агентство«ООО Урал‑Пресс»(343)375-62-74 ЛинуксЦентрwww.linuxcenter.runПодписка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

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

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

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

96

СИСТЕМНЫЙ АДМИНИСТРАТОР№7(56), Июль, 2007 год

УЧРЕДИТЕЛИВладимир ПоложевецАлександр МихалевРУКОВОДИТЕЛЬ ПРОЕКТАПетр Положевец

РЕДАКЦИЯИсполнительный директорВладимир ПоложевецОтветственный секретарьНаталья Хвостова[email protected]Технический редакторВладимир ЛукинГлавный редакторэлектронного приложения«Open Source»Дмитрий ШуруповВнештатные редакторыАлексей БарабановИван МаксимовДмитрий ГоряиновКирилл Сухов

РЕКЛАМНАЯ СЛУЖБАтел./факс: (495) 628-8253Евгения Тарабринаreс[email protected]

Верстка и оформление[email protected]Дизайн обложкиДмитрий РепинНиколай Петрочук

По вопросам распространенияобращайтесь по телефону:(495) 628-8253 (доб. 120)

107045, г. Москва,Ананьевский переулок, дом 4/2, стр. 1тел./факс: (495) 628-8253Сайт журнала: www.samag.ru

ИЗДАТЕЛЬЗАО «Издательский дом«Учительская газета»

Отпечатано типографиейГП «Московская Типография №13»Тираж 15000 экз.

Журнал зарегистрированв Министерстве РФ по делам печати, телерадиовещания и средств массо-вых коммуникаций (свидетельство ПИ № 77-12542 от 24 апреля 2002 г.).

За содержание статьи ответственность несет автор. За содержание реклам-ных материалов ответственность не-сет рекламодатель. Все права на опуб-ликованные материалы защищены.

Читайтев следующемномере:

уважаемые читатели!

Продолжается подписка на 2-ое полугодие 2007 года.

Приобрести новые и старые номера журналавы можете через интернет-магазин LinuxCenter.ru.

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

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 + ClamAV + SpamAssass in + БД + PostfixAdmin. Далеко не каждый ре-шится строить такую систему. Румын-ская компания GeCAD Technologies LTD, предлагает свое решение вопро-са – быстрый, защищенный почтовый сервер AXIGEN Mail Server с открытой архитектурой. О нём мы расскажем в августовском номере «Системного администратора».

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