Вы находитесь на странице: 1из 98

2 октября 2007

12.00-17.00
№7(56) июль 2007
Москва, ВВЦ, Павильон №69 подписной индекс 20780
Выставка «Softool» www.samag.ru

Малый конференц-зал
Групповые политики

№7(56) июль 2007


Приглашаем читателей в доменах Active Directory
на День рождения журнала! MOSS 2007: оцените удобство!

OpenWRT – Linux-дистрибутив
В программе* для встраиваемых систем
nginx, его возможности Что нового в PostgreSQL 8.3?
и использование для повышения Иван Золотухин, Постгресмен

скорости работы Web-сервера


Игорь Сысоев, Рамблер
Централизованная настройка
UNIX-систем с помощью Puppet
Передовые технологии OpenSolaris Новые возможности
для системных администраторов Windows Server 2008
Филипп Торчинский, Sun Microsystems Данила Корнев, Microsoft
Как работает служба
Network Load Balancing
* в программе возможны изменения
Особенности инсталляции
ОС Solaris

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

MySQL vs PostgreSQL
в номере
3 ТЕНДЕНЦИИ 58 Централизованная настройка UNIX‑систем
с помощью Puppet
АДМИНИСТРИРОВАНИЕ Изучаем возможности Puppet – функционального и гиб-
кого инструмента, который позволяет решить большую
4 Групповые политики в доменах AD часть задач по одновременному администрированию
Администратору локальной сети не приходится наде- большого числа UNIX-систем. Сергей Яремчук
яться на сознательность пользователей при работе grinder@ua.fm
в сети предприятия, поэтому работы по созданию эф-
фективной и безопасной рабочей среды – дело непро- 62 Особенности инсталляции Solaris
стое. На помощь приходят групповые политики, исполь- Как подружиться с «динозавром»? Бывает, так ласко-
зование которых как нельзя лучше подходит для вы- во называют одну из старейших операционных систем
полнения административных задач. семейства UNIX – Solaris. С чего же можно начать зна-
Александр Емельянов комство? Как вариант – с первоначальной установки.
numb13@mail.ru Посмотрим, в чем заключаются особенности первой
встречи с Solaris 10. Владимир Василькин
10 Знакомимся с Windows Server 2008 Beta 3 vasil1979@mail.ru
Весной этого года корпорация Microsoft выпустила
Beta 3 версию новой серверной операционной сис- 68 Построение отказоустойчивой системы
темы Windows Server 2008. Посмотрим, какие новые с помощью Oracle Physical Standby
функции и приложения появились в этом програм- Развернув информационную систему на базе Oracle
мном продукте. Андрей Бирюков и организовав надёжную стратегию резервного ко-
mex_inet@rambler.ru пирования-восстановления, можно приступать к про-
изводственной эксплуатации системы. В случае ава-
18 MOSS 2007: быстрая настройка рии мы сможем восстановить данные на требуемый
и самые интересные возможности момент времени. Но что делать, если допустимое вре-
Новая линейка продуктов Sharepoint удивляет прият- мя простоя не должно превышать нескольких минут?
ными сюрпризами администраторов, хорошо знако- Тогда не обойтись без различных способов дублиро-
мых с предыдущими версиями, и привлекает инте- вания данных в режиме реального времени.
ресными возможностями тех, кто только подумыва- Сергей Косько
ет о развертывании корпоративного портала с помо- sergkosko@ua.fm
щью Sharepoint. Нелли Садретдинова
nelly@ufanipi.ru ЧЕЛОВЕК НОМЕРА
32 Технология NLB – 74 Капитан корабля
отказоустойчивость без лишних затрат Наброски к документальному фильму о директоре
Решение задачи распределения нагрузки является од- Softline Игоре Боровикове. Оксана Родионова
ной из важнейших на сегодня. Предлагаем рассмот- rodion@dol.ru
реть одно из таких решений, построенных на осно-
ве службы Network Load Balancing, входящей в состав WEB-ПРОГРАММИРОВАНИЕ
Windows Server 2003. Андрей Бирюков
mex_inet@rambler.ru 78 Библиотека Prototype – ваш путь
в Web 2.0
38 MySQL vs PostgreSQL Работа, направленная на повышение удобства и прак-
Какую СУБД выбрать, как спроектировать схему дан- тичности пользовательского интерфейса зачастую от-
ных и где узкие места при использовании той или иной нимает много времени, которое хотелось бы потратить
СУБД? Тестируем производительность СУБД MySQL на разработку бизнес-логики приложения. Разработ-
и PostgreSQL на примере блогохостинга. чики настольных систем имеют в своём арсенале та-
Андрей Шетухин кие средства, как MFC, Gtk, Qt и другие библиотеки.
reki@reki.ru Чем же может воспользоваться веб-программист?
Кирилл Сухов
42 OpenWRT – suckhov@planetashop.ru
Linux для встраиваемых систем
Если вы сталкиваетесь с постоянными зависаниями, РЕТРОСПЕКТИВА
неудобством управления или нехваткой функционала
вашего роутера, и именно поэтому он вам не нравится – 84 История компании Intergraph
возможно, стоит попробовать установить OpenWRT. Уже полвека корпорация IBM считается лидером
Дмитрий Столяров по производству мэйнфреймов и суперкомпьютеров.
_@mrms-dos.ru За компанией Apple прочно укрепился статус де-фак-
то поставщика техники для вёрстки и дизайна. Подоб-
54 BusyBox: швейцарский нож ный список можно продолжить. Что же касается систем
для встраиваемых Linux-систем автоматизированного проектирования, здесь на про-
Системные администраторы и пользователи UNIX тяжении нескольких десятилетий лидирует компания
и Linux-систем, несомненно, привыкли к работе со сво- Intergraph, истории которой и посвящена статья.
ей любимой командной оболочкой и к стандартным про- Дмитрий Мороз
граммным средствам. Но их повсеместное использо- akuji@list.ru
вание не всегда возможно. И тогда на помощь прихо-
дит BusyBox – упрощенный shell с набором компактных 92 КНИЖНАЯ ПОЛКА
системных средств. Дмитрий Шурупов
osa@samag.ru 37, 57, 73 BUGTRAQ

№7, июль 2007 


тенденции
Лицензия GPLv3 вызвала компонентов дистрибутива, ратующей за «свободу» в кон-
смешанные чувства тексте Free Software. В Gobuntu не будет никакого firmware,
Обнародованная в конце июня Организацией свободного драйверов, графических изображений, звуков, приложений
ПО лицензия GNU GPLv3 стала причиной противоречивой и другого содержимого, не включающего в себя полного ис-
реакции со стороны и компаний, и сообщества. ходного кода материала или не сопровождающегося пол-
Так, например, Samba Team сразу же объявила о своем ными правами на модификацию и распространение.
намерении перейти на GPLv3. Все версии Samba начиная Первый релиз Gobuntu запланирован на время выпус-
с релиза 3.2 будут распространяться под этой новой лицен- ка следующей версии Ubuntu 7.10, то есть в октябре это-
зией (а версии Samba 3.0.x и более ранние останутся под го года.
GPLv2). Участники проекта выразили благодарность лич-
но Ричарду Столлману (Richard Stallman) и Эбену Моглену Intel запустила Open Source-инициативу
(Eben Moglen), а также и всей организации FSF за GPLv3, Компания Intel запустила новый проект Moblin (Mobile &
выразив свою уверенность в том, что лицензия будет спо- Internet Linux Project), направленный на продвижение раз-
собствовать продвижению свободного ПО. работки программного обеспечения с открытым кодом для
Тем временем корпорация Microsoft обнародовала уве- мобильных устройств.
домление о том, что клиенты ее альянса с Linux-поставщи- Moblin охватывает широкий спектр программного обес-
ком Novell не смогут покупать продукты, распространяемые печения для мобильных устройств, среди которого: специ-
под лицензией GPLv3, и получать поддержку по ним. Это ре- фичные для различных платформ патчи к Linux-ядру, фрей-
шение было принято в Microsoft несмотря на убежденность мворк для пользовательского интерфейса на базе GTK+, уп-
представителей корпорации в том, что никаких проблем равление питанием, сетевой менеджер, веб-браузер на базе
с лицензированными под GPLv3 продуктами у них возник- Mozilla, мультимедийный плеер «Moblin Media Artist», утили-
нуть не может. Цель инициативы – развеять любые сомне- ты для работы с изображениями, основанный на Telepathy
ния и предотвратить возможные дебаты по этому вопросу. клиент обмена сообщениями.
Однако руководству Novell данную позицию Microsoft при- Помимо программных разработок проект Moblin включа-
шлось комментировать, пообещав всем клиентам, что они ет в себя такие дополнительные ресурсы, как документация,
будут защищены от патентных притязаний и в случае ис- почтовые рассылки и IRC-канал для общения. Подробности
пользования ПО, лицензированного по GPLv3. об инициативе Intel доступны на www.moblin.org.
Джеймс Боттомли (James Bottomley), занимающий-
ся поддержкой подсистемы SCSI в ядре Linux, сообщил, Составил Дмитрий Шурупов
по материалам www.nixp.ru
что потенциальный переход 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 заключается
в радикальной политике в отношении лицензирования всех

№7, июль 2007 


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

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

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

Администратору локальной сети надеяться на сознательность пользователей при работе в сети


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


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

П
остараемся обобщить инфор-
мацию по технологии развора-
чивания и применения группо-
вых политик (ГП) в службе каталогов.
В частности:
n в чем выгода для администратора
при использовании ГП;
n сущность объектов ГП и их место
в каталоге AD;
n отличие ГП домена от локальных
политик рабочих станций;
n как создаются, назначаются и при-
меняются ГП в домене;
n наследование и приоритеты для
ГП;
n утилиты gpupdate, gpresult и RSoP; Рисунок 1. Редактор групповых политик gpedit.msc
n другие утилиты для управления
и диагностики неисправностей источникам от 60 до 80% пользо- В разделе «Конфигурация поль-
в применении ГП; вателей во всем мире используют зователя» настраиваются парамет-
n будущее ГП – что нового в пла- для просмотра веб-страниц имен- ры рабочего окружения пользовате-
не групповых политик в Windows но этот браузер); ля (настройки рабочего стола, вид
Vista. n настраивать перенаправление оп- и ограничения для панели задач и ме-
ределенных папок из профиля ню «Пуск»), перенаправление папок,
Для чего нужны пользователя; а также параметры Internet Explorer.
групповые политики n накладывать ограничения на рабо- Каждый объект GPO создается с по-
в домене чий стол; мощью редактора групповых поли-
В предыдущей статье [1] я говорил n определять настройки таких кате- тик (Group Policy Object Editor). Запус-
об управлении пользователями в сре- горий, как автономные папки, дис- тить его можно из вкладки Group Policy
де Active Directory. Cлужба каталогов ковые квоты и др., не исключением свойств контейнера.
облегчает работу IT-подразделения являются настройки самих группо- Как уже говорилось, GPO содер-
по администрированию информаци- вых политик. жит в себе два узла, в которых опре-
онных ресурсов предприятия. Техно- деляются специфичные для компью-
логии Intellimirror и CCM (Change and Все настройки администратор мо- теров и пользователей настройки. Од-
Configuration Management – управле- жет сделать при помощи редактора нако бывает, что существуют иден-
ние изменениями и конфигурация- системного реестра, но интуитивно тичные настройки для компьютеров
ми) позволяют управлять рабочими понятный интерфейс редактора объ- и пользователей. Как система «раз-
местами, используя перемещаемые ектов групповой политики во многом руливает» их применение, будет рас-
профили и перенаправление ката- упрощает эту задачу. сказано далее.
логов, автономные папки и распро- Каждая политика в объекте GPO
странение программ. Многие из этих Структура объектов может быть сконфигурирована и нет.
задач легко выполняются при помо- групповой политики В первом случае она воздействует
щи групповых политик, обеспечивая и их место в службе на объект и может быть в состоянии
при этом централизованное управ- каталогов включено/отключено, а также прини-
ление, а также гибкий механизм на- Объект групповой политики (GPO, мать значения с указанием дополни-
стройки и отладки. Групповые поли- Group Policy Object) состоит из двух тельных параметров. Во втором – по-
тики позволяют: частей: конфигурация компьютера литика на объект не воздействует.
n назначать сценарии запуска, вхо- (Computer Configuration) и конфигура- Объекты групповых политик хра-
да и выхода; ция пользователя (User Configuration) нятся двумя частями: контейнер груп-
n распространять программное обес- (см. рис. 1). Он является контейнером повой политики (GPC, Group Policy
печение в сети при помощи публи- для групп политик, применяемых со- Container) и шаблон групповой полити-
кации или назначения; ответственно к машинам и пользова- ки (GPT, Group Policy Template). Контей-
n однозначно определять набор на- телям сети. нер хранится непосредственно в служ-
строек безопасности для удален- В «Конфигурации компьютера» ад- бе каталогов и содержит информацию
ных машин; министратор может настроить пара- о свойствах, версии, статусе и список
n определять политики паролей метры безопасности, политики паро- компонентов. Шаблоны GPT находят-
для пользователей домена; лей пользователей, параметры ауди- ся в каталоге \Windows\SYSVOL\sysvol\
n ко н ф и г у р и р о в ат ь п а р а м ет р ы та, использование групп с ограничен- Domain_Name\Policies\GUID (см. рис. 2),
Internet Explorer (даже несмотря ным доступом (Restricted Groups), па- где GUID – глобальный уникальный
на всю его «дырявость», по разным раметры реестра и так далее. идентификатор объекта GPO. В этой

№7, июль 2007 


администрирование
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)
другие политики не могут наложить
Рисунок 2. Папка, содержащая шаблоны групповых политик на контроллере домена свои настройки на установки данной.
Если включена опция «Отключить»
папке содержатся административные шины (видимо, Microsoft сделала это (Disabled), это значит, что GPO не будет
шаблоны (ADM – файлы), настройки из‑за соображений безопасности). применяться на этом уровне (к этому
безопасности, информация о доступ- контейнеру). При установленном флаж-
ных приложениях и имена сценариев Групповые политики ке «Блокировать наследование поли-
с командными строками. по умолчанию тики» (Block Inheritance) политики вер-
После создания первого контролле- хних уровней иерархии службы катало-
Локальные политики ра домена формируются политики гов применяться не будут. Однако, ес-
рабочей станции по умолчанию: Default Domain Controller ли для политики более высокого уров-
Каждая рабочая станция под управ- Policy (привязывается к контейнеру ня включена опция «No Override», бло-
лением операционных систем семейс- Domain Controllers, применяется ис- кировать наследование не удастся.
тва Windows 2000 имеет свои локаль- ключительно для контроллеров до- В свойствах групповых политик
ные политики, и администратор доме- мена и содержит настройки безопас- можно увидеть дату создания, послед-
на имеет возможность редактировать ности) и Default Domain Policy (полити- него изменения объекта GPO, его вер-
их. Они схожи с групповыми политика- ка безопасности для домена, привя- сию, GUID (Globally Unique Identifier, гло-
ми домена, но применяются для всех зывается к контейнеру домена и рас- бальный уникальный идентификатор)
локальных пользователей компьюте- пространяется на весь домен). Вы лег- и домен, в котором располагается объ-
ра без исключения. Также невозмож- ко их можете заменить своими поли- ект GPO. Здесь же есть возможность от-
но настроить ряд установок, таких, на- тиками, либо использовать в сочета- ключить настройки конфигурации ком-
пример, как перенаправление катало- нии с другими. Еще один нюанс, кото- пьютера или пользователя. На вкладке
гов и установка приложений. Несмот- рый стоит отметить – если вы попыта- «Связи» (Links) можно посмотреть, с ка-
ря на это, структура объекта локаль- етесь открыть Default Domain Controller кими объектами службы каталогов GPO
ных групповых политик такая же, как и Policy из меню «Администрирование», имеет связь. В настройках безопаснос-
GPO домена. Размещается он в папке вам будут доступны только настройки ти указывается, каким группам пользо-
\Windows\system32\GroupPolicy. безопасности. Полностью увидеть и из- вателей предоставляются права на чте-
При помощи команды gpedit.msc менить все настройки этого GPO мож- ние политики, изменение, применение
вы можете редактировать локальные но из оснастки Active Directory – Users и т. д. Напомню, что связывание и на-
политики рабочей станции. Синтаксис and Computers (DSA.MSC) в свойствах следование объектов GPO происходит
строки для запуска gpedit.msc для про- контейнера Domain Controllers. на уровне контейнеров. Но админист-
смотра локальной политики удален- ратор может явно указать, будет ли той
ной машины будет выглядеть следую- Создание объектов GPO или иной группе пользователей, прина-
щим образом: Несмотря на название, GPO не имеют длежащих какому-либо контейнеру, раз-
ничего общего с группами. Объекты решено чтение и применение группо-
Gpedit.msc /gpcomputer: Имя_Компьютера групповых политик могут быть связа- вых политик из объекта GPO, связанно-
ны с контейнерами сайта, домена и OU го с этим контейнером. Таким образом,
Однако стоить заметить, что вы (организационной единицы). Таким об- при использовании ACL (Access Control
не сможете посмотреть локальные на- разом, для создания объекта GPO мы List, список контроля доступа), опре-
стройки безопасности удаленной ма- можем воспользоваться консолями деляются области действия политики


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

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

№7, июль 2007 


администрирование
проведено обновление политик. Напри-
мер, используя параметр /Target, можно
указать, какие политики должны быть
обновлены: пользователя, компьютера
или и те и другие.
Для того чтобы посмотреть, какие
политики применяются на конкретной
машине, используется утилита gpresult.
Без заданных параметров она выдает
следующую информацию для текуще-
го пользователя на данной машине:
n контроллер домена, с которого полу-
Рисунок 4. Открытие инструмента RSoP в DSA.MSC чены объекты групповой политики;
n когда и какие политики применя-
n при установленной опции Replace n использование списков контроля до- лись;
(замена) пользовательские полити- ступа (ACL) и инструментария WMI. n какие политики не применялись
ки не обрабатываются. из‑за фильтрации;
Напомню, что при включенном пе- n членство в группах.
Наследование и порядок рекрытии групповых политик блоки-
применения групповых рование наследования не обрабаты- RSoP (Resultant Set of Policy, резуль-
политик в иерархии вается. тирующие установки групповых поли-
службы каталогов тик) – это графический аналог утилиты
Главная формула применения объек- Поиск и устранение gpresult с более широкими возможнос-
тов GPO в доменах Active Directory та- неисправностей тями. RSoP – это инструмент составле-
кова – LSDOU, что означает следую- при работе с групповыми ния запросов, с помощью которого ад-
щий порядок применения (последние политиками министратор может получать информа-
имеют наивысший приоритет): Нетрудно понять, что групповые поли- цию об отдельных системах, какие по-
n локальные политики компьютера тики в доменах Active Directory – инс- литики на них были применены, в каком
(Local Policies); трумент насколько гибкий, настоль- порядке и с каким старшинством.
n групповые политики уровня сайта ко и сложный. И, казалось бы, все вам RSoP работает в двух режимах: ре-
(Site); понятно и как на ладони весь домен. жиме регистрации и режиме моделиро-
n групповые политики уровня доме- Вы создаете групповые политики, при- вания. В первом случае она берет ин-
на (Domain); вязываете их к контейнерам, включаете формацию из базы CIMOM (Common
n групповые политики уровня ор- дополнительные опции по перекрытию Information Management Object Model,
ганизационного подразделения и наследованию, и ждете, когда настро- объектная модель управления общей
(Organizational Unit). енный вами механизм наконец зарабо- информацией), используя WMI запро-
тает. Но что-то идет не так, либо вооб- сы. Это возможно, потому что при входе
Однако, зная о том, что иерархия ще ничего не происходит. Вы в замеша- компьютера в сеть и применения к нему
службы каталогов может иметь прилич- тельстве, но расстраиваться рано. групповых политик все настройки и из-
ную вложенность OU друг в друга, мож- В составе Windows XP и Windows менения записываются в CIMOM.
но продолжить это правило: групповые Server 2003 существует ряд утилит, ко- В режиме моделирования вы може-
политики OU уровня 2, уровня 3 и т. д. торые помогут администратору в уст- те построить запрос и получить инфор-
Существует несколько способов, ранении проблем с групповыми поли- мацию о гипотетическом результате
чтобы переопределить такой порядок тиками. Рассмотрим их подробнее. применения групповых политик. Режи-
применения ГП (все параметры можно Очень часто на форумах приходит- мы регистрации и моделирования мо-
задать в свойствах целевого контейне- ся видеть жалобы о том, что у кого-то не гут применяться для отдельных пользо-
ра на вкладке Group Policy либо в сис- применяется групповая политика, хотя вателей и компьютеров. Для сайтов, до-
темном реестре): все параметры выставлены. Как уже го- менов и OU возможно выполнить толь-
n включить блокирование наследо- ворилось, в процессе работы политики ко моделирующие запросы. Для групп
вания групповой политики с бо- применяются в фоновом режиме через безопасности запросы RSoP не могут
лее высокого уровня (опция «Block заданный интервал времени. А неко- быть выполнены. Хотя членство в опре-
Inheritance»); торые из них вообще требуют перезаг- деленной группе может повлиять на ко-
n запретить перекрытие политик бо- рузки компьютера. Однако существует нечный результат применения политик.
лее высоких уровней политика- возможность принудительного приме- Запустить выполнение запроса вы мо-
ми нижестоящих уровней (опция нения групповых политик на конкрет- жете на контроллере домена из оснас-
«No Override»); ной машине. Ее обеспечивает утилита тки Active Directory Users and Computers
n отключение применения группо- командной строки gpupdate. Она име- (см. рис. 4).
вой политики на заданном уровне ет несколько параметров, при помощи Утилита GPOTOOL проверяет це-
иерархии (опция «Disabled»); которых можно определить, как будет лостность объектов GPO. Как вы пом-


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

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

№7, июль 2007 


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

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

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

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

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

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


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

№7, июль 2007 11


администрирование
не заканчивается. Если вас интересу-
ют, к примеру, события Error, то вам до-
статочно два раза кликнуть на крести-
ке слева от названия журнала, и вы по-
лучаете список всех источников сооб-
щений данного типа, а также статис-
тические данные по тому, сколько раз
то или иное событие происходило. На-
жав на интересующее событие, вы по-
лучите не только содержимое сообще-
ния об ошибке, но также и список всех
аналогичных сообщений, происходив-
ших в другие дни. В небольших сетях,
где не используются другие решения
для мониторинга, средства, предлага-
емые Windows Server 2008, могут ока-
заться очень полезными.
Однако кроме средств мониторин-
га событий можно также и реагировать
на них. В разделе «Actions» выбираем
«Attach Task To This Event…». Запуска-
Рисунок 3. Network and Sharing Center ется соответствующий мастер. Есть
три варианта ответных действий: за-
ти. На рис. 4 показан список свойств, В общем, реализация стека TCP/IP пуск приложения/сценария, отправка
доступных для сетевого интерфейса и средств настройки сети в новой вер- письма по электронной почте и сооб-
после установки по умолчанию. сии операционной системы претерпела щение на экран. Наиболее интересен
Кроме стандартного IP версии 4, существенные изменения, что не мо- первый вариант – запуск приложения
теперь имеется поддержка IP версии 6. жет не радовать. Правда, хочется наде- (см. рис. 6).
Многие Linux- и BSD-системы уже до- яться, что новые сетевые службы и сер- При наличии хотя бы элементарных
вольно давно поддерживают шестую висы не будут содержать такого коли- знаний в области программирования
версию протокола IP, однако сервер- чества уязвимостей, как предыдущие сценариев Windows Script Host мож-
ная Windows впервые включила эту версии, в особенности Windows 2000. но построить систему реакции на раз-
поддержку в установку по умолча- личные события, которая позволит су-
нию. Компонента Link-Layer Topology Инструменты щественно автоматизировать работу
Discovery Mapper предназначена администратора с журналами событий и сэкономить
для поиска компьютеров и устройств Много нововведений ожидает адми- время системных администраторов.
в сети, а также для определения про- нистратора в Administrative Tools. В этой Еще одно важное нововведение
пускной способности сети. Responder статье я не буду описывать работу в журналах событий – это Subscriptions.
позволяет другим узлам сети видеть в Active Directory в качестве контрол- Здесь вы можете указать, с каких ма-
данную машину. лера домена для данной операционной шин и о каких событиях вы хотите по-
системы, так как там тоже есть новов- лучать информацию, а также в какой
ведения, и это будет отдельной темой. именно журнал событий сохранять
А в рамках этой статьи мы будем рас- данные сообщения.
сматривать функционал сервера, не яв- Да и само количество журналов
ляющегося контроллером домена. событий, представленных в Event Log,
Журнал событий Event Viewer – по умолчанию намного больше, чем это
с его просмотра начинают свой рабо- было в предыдущих версиях (рис. 7).
чий день многие системные админист- Так что теперь все события не будут
раторы, ведь информация о сбоях, воз- сыпаться в одну кучу и не надо будет
можных проблемах с операционной тратить время на поиск нужного.
системой, неудачных попыткой войти В целом Event Log в новой опе-
в систему сохраняется в данном жур- рационной системе претерпел зна-
нале. Открыв консоль Event Viewer, мы чительные изменения, причем в луч-
сразу же получаем статистику по собы- шую сторону.
тиям различного вида (см. рис. 5).
Немного напоминает Microsoft Контроль доступа
Operations Manager в упрощенном ви- с помощью NAP
де. Однако на этом сходство с систе- Следующим интересным нововведени-
Рисунок 4. Свойства сетевого
интерфейса мами промышленного мониторинга ем является Network Policy Server. Так

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

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

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

№7, июль 2007 13


администрирование
n Client fails all SHV checks – ни од-
на проверка не пройдена. Как пра-
вило, таких пользователей лучше
не пускать в сеть вообще.
n Client passes one or more SHV
checks – к лиент прошел одну
или несколько проверок. Здесь все
определяет то, какие проверки про-
шел пользователь. Как правило,
в такой ситуации лучше всего раз-
решить доступ только в карантин-
ную сеть, где он сможет установить
недостающие обновления и патчи.
n Client fails one or more SHV
checks – клиент не прошел одну
Рисунок 8. Установка Network Policy Server или несколько проверок. Случай
аналогичный предыдущему. Раз-
подключение (NAP клиента). Опреде- маркер будет иметь одно из следую- ница лишь в том, что для вас при-
лить состояния данного маркера можно щих состояний: оритетнее.
следующим образом (см. рис. 9). n Client passes all SHV checks – про- n Client reported as transitional by
В зависимости от того, в каком со- верки всех маркеров прошли ус- one or more SHV’s – транзитный
стоянии находятся различные службы пешно. В таком случае, как прави- маркер возвращается, когда ма-
и приложения на подключающейся ма- ло, пользователь получает полный шина только подключилась к се-
шине (обновлены ли антивирусы, уста- доступ к сети (естественно, в рам- ти и состояние SHV еще не опре-
новлены ли последние заплатки и т. д.), ках своих полномочий). делено.

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

14
администрирование
n Client reported as infected by one Настраиваем защиту
or more SHV’s – состояние Infected. Но вернемся к обсуждению непосредс-
Антивирусные продукты, интегри- твенно Windows Server 2008.
рованные с NAP, могут возвращать Еще одной новой компонентой яв-
такое состояние SHV. ляется Security Configuration Wizard.
n Client reported as unknown by one В отличие от присутствовавшей в пре-
or more SHV’s – состояние «неиз- дыдущих версиях утилиты secedit,
вестен» обычно бывает на тех ма- здесь для работы с шаблонами безо-
шинах, которые несовместимы, пасности имеется специальный мас-
либо на них не установлен клиент тер, позволяющий быстро и без лиш-
NAP. Понятно, что такие машины них усилий настроить или откатить по-
тоже лучше в сеть не пускать. литику безопасности. Работа мастера
разделена на несколько этапов.
Далее, в NPS можно определить Прежде всего мастер проверяет те-
различные действия, которые при- кущее состояние системы, в частности
меняются к рабочим станциям, соот- какие службы запущены на сервере.
ветствующим тем или иным состоя- Затем администратору предлагает-
ниям SHV. ся добавить или удалить службы или их Рисунок 9. Настройки SHV
В частности, можно определить компоненты на основе тех ролей, кото-
политики, позволяющие доступ в сеть рые выполняет данный сервер (напри- ти выполняются настройки Registry
только в определенные промежут- мер, файл-сервер или DNS-сервер). Settings (см. рис. 11). Здесь опреде-
ки времени, или ограничить доступ При этом для каждой службы можно ляются политики доступа к данному
только определенными ресурсами получить ее краткое описание. серверу на уровне приложений и про-
(см. рис. 10). Далее мастер предлагает настро- токолов. То есть можно определить те
Теперь необходимо немного пояс- ить состояние служб, режим запуска требования, которые предъявляются
нить, как все это работает. (Disabled/Manual/Automatic). к подключающимся хостам. Напри-
Клиентская машина, на которой ус- Следующим этапом в настройке мер, можно ли подключаться машинам
тановлена Windows XP SP2 или Vista, Security Configuration является Network с операционной системой Windows 98
пытается установить соединение. Security. Здесь предлагается настроить или Windows CE.
Это выражается в RADIUS Access- политики межсетевого экрана Windows Далее описываются способы ау-
Request-запросе к серверу NPS. (о котором мы подробно поговорим тентификации для удаленных ма-
Сервер NPS сравнивает содержи- чуть позже) в соответствии со специ- шин (Domain Accounts, Local Accounts
мое Access-Request-сообщения с по- альными шаблонами (например, кли- on the Remote Computers, File Sharing
литиками, которые мы определили. ент DHCP или DNS). Passwords) и способы аутентификации
В зависимости от того, соответствует После настроек безопасности се- для локальных пользователей.
или нет данная информация полити-
кам, NPS применяет к пользователь-
ской станции то или иное действие, оп-
ределенное в Network Policy.
Да лее слу жба NPS отправля-
ет RADIUS Access-Accept-сообщение
с информацией об уровне доступа
пользователя.
Далее это сообщение уже может
обрабатываться сетевым устройс-
твом, которое отвечает за непосредс-
твенное подключение узла (например,
коммутатор).
В завершении рассказа о NAP хочу
порекомендовать дополнительную ин-
формацию тем, кто заинтересовался
данной технологией. На сайте Microsoft
по адресу http://www.microsoft.com/
technet/network/nap/default.mspx вы мо-
жете прочесть полезные статьи по дан-
ной технологии, а по адресам [1-4] вы
найдете подробное описание лабора-
торных работ с использованием NAP
для различных реализаций. Рисунок 10. Настройки политик NAP

№7, июль 2007 15


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

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

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

16
администрирование
с мониторингом событий и уведомле-
нием администраторов.
Несколько упрощен и ускорен про-
цесс установки самой операционной
системы. Это новшество может ока-
заться весьма полезным при развер-
тывании нескольких серверов с различ-
ными конфигурациями, когда исполь-
зование образов и файлов ответов за-
труднено или невозможно.
Что касается недостатков, то они,
конечно, тоже присутствуют.
Во-первых, очень жаль, что мы так
и не увидели существенных измене-
ний в средствах работы с файловой
системой. Конечно, Microsoft уже ко-
торый год обещает новую файловую
систему, однако ее выпуск все время
откладывается.
Также уже есть некоторые про-
блемы с совместимостью, в частнос-
ти, не удалось установить Microsoft Рисунок 13. Настройки межсетевого экрана в Windows Server 2008
Forefront Security, антивирусный про-
дукт от той же компании Microsoft.
Также жаль, что в локальных по-
литиках безопасности не появилось
новых опций. Но будем надеяться,
что когда выйдет полная версия (все-
таки сейчас мы обсуждаем бета-ре-
лиз), многие из этих недостатков бу-
дут устранены.
Напоследок несколько слов о до-
полнительных источниках информа-
ции.
Помимо основной страницы, пос-
вященной этому продук т у, http://
www.microsoft.com/windowsserver2008
вы также можете многое узнать из фо-
рума TechNet, который можно найти
по адресу [5].
И наконец, самое главное, Windows
Server 2008 Beta 3, как и любой бета-
продукт, доступен для свободного ска-
чивания. Так что, если вас заинтере-
совала новая операционная система,
то установить ее можно с диска, при- Рисунок 14. Настройки защищенных соединений
лагающегося к журналу.
Также любую из существующих ре- ee06 - 4dfb-bba2- 07605eff0608& 18ce- 40cb-8e59-188f7a198897&
дакций можно получить по следующе- displaylang=en – Step By Step Guide: displaylang=en – Step-by-Step Guide:
му адресу [6]. Demonstrate 802.1X NAP Enforcement Demonstrate DHCP NAP Enforcement
in a Test Lab. in a Test Lab.
1. http://www.microsoft.com/downloads/ 3. http://www.microsoft.com/downloads/ 5. http://forums.microsoft.com/TechNet/
details.aspx?FamilyID=298ff956- details.aspx?FamilyID=729bba00- default.aspx?ForumGroupID=161&
1e6c- 4d97-a3ed-7e7f fc 4bed32& 55ad-4199-b441-378cc3d900a7& S i t e I D =17 – ф о р у м Te c h N e t
displaylang=en – Step-by-Step Guide: displaylang=en – Step-by-Step Guide: по Windows Server 2008.
Demonstrate IPsec NAP Enforcement Demonstrate VPN NAP Enforcement 6. http://www.microsoft.com/technet/
in a Test Lab. in a Test Lab. prodtechnol/beta/lhs/default.mspx –
2. http://www.microsoft.com/downloads/ 4. http://www.microsoft.com/downloads/ здесь можно скачать дистрибутив
details.aspx?FamilyID=8a0925ee- details.aspx?FamilyID=ac38e5bb- Windows Server 2008 Beta 3.

№7, июль 2007 17


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

MOSS 2007: быстрая настройка


и самые интересные возможности

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

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

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

№7, июль 2007 19


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

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

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

20
администрирование
2) Создать три веб-приложения: Совет: в комплекте с MOSS 2007 В разделе «Управление приложе-
для поставщика общих служб, лич- поставляется очень неплохая русско- ниями» каждая группа настроек отно-
ных узлов и семейства узлов основ- язычная справка, в том числе для ад- сится к одному конкретному веб-при-
ного портала. Теперь для этого не министратора. Не забывайте и о ком- ложению. Поэтому, прежде чем выпол-
нужно открывать консоль управле- плекте SDK, который можно скачать нять планируемую операцию, не за-
ния IIS, достаточно воспользовать- на сайте Microsoft [2]. будьте выбрать нужное приложение.
ся разделом «Управление прило- Это можно сделать в пункте меню
жениями/Создание или расшире- Центр администрирования «Список веб-приложений» или ввер-
ние веб-приложения». и принципы управления ху страницы с каждой конкретной на-
3) Следующий этап – создание пос- MOSS 2007 стройкой (см. рис. 5).
тавщика общих служб в разделе Настройка различных служб и пара- Обратите внимание! После созда-
«Управление приложениями/Со- метров работы MOSS 2007 произво- ния нового веб-приложения нужно пе-
здание или настройка общих служб дится на пяти уровнях: рейти к разделу «Общие параметры
данной фермы». n ферма серверов (вкладка «Опе- веб-приложений» и настроить как ми-
4) Последним создается семейство рации» центра администрирова- нимум два важных параметра: «Часо-
узлов основного портала: на стра- ния); вой пояс» и «Максимальный объем от-
нице «Управление приложениями» n п о с т а в щ и к о б щ и х с л у ж б правляемых данных» .
нужно выбрать из списка веб-при- (центр администрирования об- Еще один значимый набор пара-
ложение, которое вы ранее созда- щих слу жб, по умолчанию это метров – «Управление возможнос-
ли для семейства узлов, и перейти «SharedServices1»); тями». Для безопасности и повыше-
к разделу «Создание семейства n веб-приложение (вкладка «Управ- ния быстродействия отдельные ком-
веб-узлов». ление приложениями» центра ад- поненты Sharepoint (службы работы
министрирования); с бизнес-данными, поиск и др.) мож-
Ну вот, теперь можно открыть глав- n семейство узлов («Действия уз- но включать/отключать на четырех
ный узел семейства узлов. Настрой- ла → Параметры узла → Измене- уровнях:
ки узла, управление пользователя- ние параметров узла» на главном n уровень фермы серверов;
ми и группами, редактирование теку- узле семейства); n уровень веб-приложения;
щей страницы и создание новых стра- n узел («Действия узла → «Парамет- n уровень семейства узлов;
ниц доступны в меню «Действия узла» ры узла → Изменение параметров n уровень отдельного узла.
(см. рис. 2). узла» на текущем узле).
Обратите внимание, что одни пара- Если на конкретном узле у вас
метры изменяются для отдельного уз- В разделе «Операции» помимо на- не работает какой-либо из компонен-
ла, другие – только для всего семейс- стройки общих для фермы серверов тов или отсутствуют нужные веб-час-
тва узлов, и некоторые настраиваются параметров можно также выполнить ти, проверьте, включены ли соответ-
на обоих уровнях (см. рис. 3). некоторые разовые операции, в част- ствующие возможности на всех нуж-
Настройка и разработка узлов в но- ности, резервное копирование и вос- ных уровнях.
вом портале, в частности, с исполь- становление, а также обновление и пе- На странице управления постав-
зованием нового продукта Microsoft ренос (см. рис. 4). щиком общих служб можно управ-
Sharepoint Designer, пришедшем При первоначальной настройке лять такими настройками, как профи-
на смену Frontpage, тоже во многом следует обратить внимание на веде- ли пользователей, поиск, определе-
отличается от предыдущей версии, ние журналов, в частности, журнала ния бизнес-приложений, параметры
и описание всех интересных возмож- трассировки (раздел «Сбор данных служб Excel.
ностей – тема для отдельной статьи. диагностики»). В некоторых случаях вам пона-
Скажу лишь, что многие элементы ста- По умолчанию ведение журналов добится создать несколько постав-
ло возможным легко редактировать и сбор всех ошибок включены, логи щиков общих служб, например, ес-
с помощью веб-интерфейса, напри- находятся на системном диске, а рас- ли у вас есть несколько различных
мер, это верхняя и левая панели ссы- тут они иногда не по дням, а по ча- поставщиков подлинности (к приме-
лок и логотип. сам. Обратите внимание на эти жур- ру, пользователи домена и внешние
Миграция со старой версии порта- налы и настройте систему так, чтобы пользователи) и для каждого нужны
ла на MOSS 2007 – также достаточно не возникло нехватки места на жест- отдельные настройки профилей поль-
широкая тема. Она (миграция) может ком диске. зователей и настройки безопасности
быть проведена легко и быстро, ес- Еще одна возможность, на кото- (см. рис. 6).
ли в портале не производилось ника- рую стоит обратить внимание, – «Со- Некоторые настройки по-прежне-
ких серьезных модификаций, и может поставления для альтернативного до- му придется вручную делать в файле
представлять собой достаточно слож- ступа». Здесь можно настроить аль- web.config. Для каждого приложения
ную задачу в противном случае – ес- тернативные адреса для одного и то- они располагаются по адресу «сис-
ли узлы и темы подвергались реди- го же веб-приложения, например, темный_диск:\Inetpub\wwwroot\wss\
зайну, использовались собственные для доступа изнутри локальной се- VirtualDirectories\порт_приложения».
веб-части и т. п. ти и извне. Например, если вы используете новую

№7, июль 2007 21


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

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

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

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

№7, июль 2007 23


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

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

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

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

№7, июль 2007 25


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

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

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

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

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

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

№7, июль 2007 27


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

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

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

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

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

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

№7, июль 2007 29


администрирование
ниями и улучшенными средствами ра-
боты с корпоративной информацией –
от расширенного поиска сотрудников
до сводки по всем показателям биз-
нес-процессов из самых разных ис-
точников.
Конечно, в одной статье нельзя
описать все возможности новой ли-
нейки продуктов Sharepoint. Хочет-
ся отметить, что для администратора
или разработчика MOSS 2007 – про-
дукт, интересный втройне.
С одной стороны, он позволит ав-
томатизировать собственную рабо-
ту (например, создать базу знаний
или страницу заявок для службы под-
держки).
С другой стороны, с его помощью
можно быстро реализовать ряд ти-
повых задач – от совместной работы
над документами до создания вне-
шнего сайта.
Рисунок 13. Статистика поисковых запросов Наконец, с третьей стороны, –
это продукт, интересный в настройке
n новинки поиска: совершенство- сы) в Sharepoint оставляет желать и эксплуатации. Здесь есть над чем
вание самого механизма поиска, лучшего. поломать голову и проявить творчес-
возможность поиска по людям, Возможности для разработки до- кие способности.
возможность поиска во внешних статочно сложных процессов есть – Времени на изучение всех тонкос-
источниках с помощью BDC, воз- это и Sharepoint Designer, и Visual тей потребуется немало, но результат
можность компоновки собствен- Studio. Однако нет средств монито- наверняка порадует.
ных страниц поиска из готовых веб- ринга текущих процессов и гибкого
частей; управления ими. 1. 20 07 Of fice Resource Kit – ht tp://
n в новой версии легко найти статис- Что касается бизнес-аналитики, technet2.microsoft.com/Office/en-us/
тику поисковых запросов: сколько то средств ее представления тоже l i b r a r y/ 9 d f1c7d 2- 3 0 a 9 - 47 b b - a 3 b 2-
их было всего, какие поисковые немного – это возможность публи- 5166b394fbf51033.mspx?mfr=true.
слова наиболее популярны, какие кации таблиц и диаграмм Excel, про- 2. Sharepoint Server 2007 SDK – http://
слова не нашлись, какие результа- стейший вариант подсчета KPI и воз- www.microsoft.com/downloads/details.
ты наиболее популярны (страница можность публикации готовых отче- aspx?FamilyID=6d94e307-67d9-41ac-
управления поставщиком общих тов из SQL Server Reporting Services, b2d6-0074d6286fa9&DisplayLang=en.
служб, «Отчеты об использовании SAP и Siebel. 3. Planning and architecture for Office
средств поиска») (см. рис. 13). С другой стороны, если сделать ос- S hare Po i nt S e r ve r 2 0 07 – к н и г а ,
новой для подсчета KPI, например, ис- две части которой можно скачать
Разочарования ходные данные, поставляемые в спис- по адресам: http://go.microsoft.com/
Хотелось бы отметить один негатив- ки Sharepoint из разных внешних кор- f wlink /?LinkID =79552&clcid= 0x409
ный момент – в русской версии MOSS поративных приложений с помощью и h t t p: //g o . m i c r o s o f t . c o m / f w l i n k /
2007 не везде корректно выполнен BDC, инструмент сразу же представ- ?LinkId=85548&clcid=0x409.
перевод. ляется гораздо более мощным. 4. Все о Sharepoint на сайте Microsoft –
Например, «master page» переведе- Для серьезной бизнес-аналити- h t t p: / /o f f i c e . m i c r o s o f t . c o m / r u - r u /
на как «Главная страница», в то время ки компания Microsoft позициониру- sharepointserver/default.aspx.
как на самом деле – это основной шаб- ет другой инструмент – Performance 5. Самый активный русскоязычный форум
лон или образец. Так в меню появля- Point Server 2007, наследник Business по Sharepoint – http://www.gotdotnet.ru/
ются рядом пункты «Главная страни- Scorecard Manager. Forums/SharePoint/default.aspx.
ца» и «Начальная страница».
Таких неудачных примеров можно Заключение
найти достаточно, поэтому при возник- MOSS 2007 – безусловно, продукт, за-
новении непонимания стоит подумать метно обогнавший своего предшест-
и о нюансах перевода. венника.
Широко рекламируемый и долго- В первую очередь это касается ин-
жданный workflow (рабочие процес- теграции с корпоративными приложе-

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

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

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

Решение задачи распределения нагрузки является одной из важнейших на сегодняшний день.


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

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

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

№7, июль 2007 33


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

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

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

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

№7, июль 2007 35


администрирование
веб‑сервиса или для какого-либо спе-
циализированного приложения с рас-
пределением нагрузки. В статье приво-
дится лишь пример одного из возмож-
ных способов использования Network
Load Balancing.
Однако есть несколько общих сове-
тов по оптимизации работы NLB‑клас-
тера. Прежде всего необходимо ясно
понимать, где вероятнее всего нахо-
дится «узкое» место вашего кластери-
зованного приложения. В случае с тер-
минальным сервером, например, бу-
дут активно использоваться процес-
сор и память узлов кластера. Следова-
тельно, следует заранее позаботиться
о том, чтобы мощность была достаточ-
ной для работы в NLB‑кластере.
Еще одним важным элементом
NLB является нагрузка на сеть. Ис-
Рисунок 5. Настройка групповых политик пользуйте высокоскоростной ком-
мутатор, желательно с гигабитными
пользовать любую редакцию WS2K3. Также, если вы используете Windows портами (сейчас такое оборудова-
Вы даже можете создать каталог се- Server 2003 Enterprise Edition, то в на-
ние стоит недорого). Соединяйте уз-
ансов на одном терминальном серве- стройках терминального сервера мо- лы по принципу один сервер – один
ре в кластере, хотя это не рекомендует- жете найти дополнительную заклад- порт, без каких-либо промежуточных
ся, поскольку остановка этого сервера ку Session Directory. В данной консолиустройств. Используйте одноадрес-
для обслуживания или установки ПО необходимо указать IP‑адрес или имя ный режим с выделенной внутренней
может затронуть весь кластер. сервера каталога сеансов. кластерной сетью.
Перед началом настройки Session В случае, если у вас использует- Также для оптимизации внесите
Directory необходимо определиться, ся редакция Standard Edition (а все на-
правку в реестр на каждом из узлов
на каком сервере будет размещать- стройки, приводимые для данной ста- кластера, изменив значение следую-
ся база. Следует обратить внимание тьи делались именно для этой редак- щего ключа с 1, используемой по умол-
на то, что в случае выхода из строя ции), то наилучшим средством для на- чанию, на 0: HKEY_LOCAL_MACHINE\
данного сервера информация о су- стройки Session Directory будет исполь-
System\CurrentControlSet\Services\
ществующих сеансах будет утеряна, зование групповых политик. WLBS\Parameters\MaskSourceMAC.
поэтому выберите мощный и надеж- Для этого создайте Organization Это изменение позволяет данному
ный сервер. На этом сервере откройте Unit в домене и внесите в него все ключу указывать, какой MAC-адрес яв-
«Computer Management or Services» для терминальные серверы нашего клас- ляется фактическим источником тра-
доступа к «Terminal Services Session тера, затем откройте консоль редак- фика, что помогает правильно выпол-
Directory». Откройте свойства служ- тирования групповых политик для нять его работу по коммутации. После
бы, настройте ее на автоматический данного OU и перейдите в раздел этого изменения нужно выполнить пе-
запуск и запустите ее (см. рис. 4). «Computer Configuration → Administrative
резагрузку всех узлов кластера.
После первого запуска служба ка- Templates → Windows Components →
талога сеансов должна создать новую Terminal Services → Session Directory». Заключение
локальную группу Session Directory Укажите все необходимые параметры На этом завершается серия статей,
Computers. Для того чтобы терми- (см. рис. 5). посвященная кластерным технологи-
нальный сервер мог информировать После этого достаточно дождаться ям в Windows Server 2003. Надеюсь,
сервер каталога сеансов о своих тер- следующего обновления групповых по- что описанные технологии пригодят-
минальных сессиях или запрашивать литик или же воспользоваться коман- ся в нелегком деле обеспечения не-
информацию о сеансах с других сер- дой gpupdate, применив ее на каждом прерывности работы корпоративных
веров, он должен быть членом этой из узлов кластера. IT-систем.
группы.
После создания сервера каталога Тонкая настройка 1. Microsoft.com. Статья № 323437.
сеансов нужно настроить терминаль- Итак, в результате всех вышепри- 2. http://www.microsoft.com/Rus/Business/
ные серверы. Для этого можно прибег- веденных действий получаем клас- Infrastructure/Unified/Scalabilit y/
нуть либо к помощи консоли Terminal тер для службы терминалов. Конечно, Default.mspx.
Services Configuration, либо воспользо- технологию NLB можно с успехом ис- 3. Ч. Рассел. Microsoft Server 2003. Спра-
ваться редактором групповых политик. пользовать, к примеру, для создания вочник администратора.

36
bugtraq

Переполнение буфера в Visual IRC


Программа: Visual IRC 2.0, возможно, более ранние вер-
Переполнение буфера в Asterisk сии.
Программа: Asterisk версии до 1.4.3. Опасность: Высокая.
Опасность: Высокая. Описание: Уязвимость существует из-за ошибки провер-
Описание: Уязвимость существует из-за ошибки при обра- ки границ данных при обработке ответа от IRC-сервера ко-
ботке SIP-пакетов в файле chan_sip.c. Удаленный пользова- манде «JOIN». Удаленный пользователь может с помощью
тель может с помощью SIP INVITE-пакета, содержащего спе- слишком длинного ответа от IRC-сервера вызвать пере-
циально сформированные значения T38FaxRateManagement полнение стека и выполнить произвольный код на целе-
или T38FaxUdpEC SDP, вызвать переполнение стека и вы- вой системе.
полнить произвольный код на целевой системе. Для ус- URL производителя: www.visualirc.net.
пешной эксплуатации уязвимости требуется, чтобы T38 Решение: В настоящее время способов устранения уязви-
fax поверх SIP был включен в конфигурационном файле мости не существует.
sip.conf.
URL производителя: www.asterisk.org.
Решение: Установите последнюю версию 1.4.3 с сайта про- Переполнение буфера в 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.
Выполнение произвольного кода Опасность: Высокая.
в Microsoft Internet Explorer Описание: Уязвимость существует из-за ошибки провер-
Программа: Microsoft Internet Explorer 6.x, 7.x. ки границ данных в компоненте Java Web Start (javaws.exe)
Опасность: Высокая. при обработке JNLP-файлов. Удаленный пользователь мо-
Описание: Уязвимость существует из-за ошибки в обработ- жет с помощью специально сформированного JNLP-фай-
чике FirefoxURL на системах с установленным браузером ла, содержащего слишком длинный атрибут codebase, вы-
Mozilla Firefox. Удаленный пользователь может с помощью звать переполнение стека и выполнить произвольный код
специально сформированной веб-страницы изменить путь на целевой системе.
к Mozilla Firefox и выполнить произвольный код на целевой URL производителя: www.sun.com.
системе. Пример: http://larholm.com/vuln/firefoxurl.html. Решение: Установите исправление с сайта производите-
URL производителя: www.microsoft.com. ля.
Решение: В настоящее время способов устранения уязви-
мости не существует.
Несколько уязвимостей
в Microsoft Excel
Несколько уязвимостей Программа: Microsoft Office 2000, Microsoft Office XP,
в Adobe Flash Player Microsoft Office 2003.
Программа: Adobe Flash Player 9.x, Macromedia Flash Player Опасность: Критическая.
7.x, Macromedia Flash Player 8.x. Описание: 1. Уязвимость существует из-за ошибки при об-
Опасность: Критическая. работке данных, относящихся к версии файла. Удаленный
Описание: 1. Уязвимость существует из-за ошибки при об- пользователь может с помощью специально сформирован-
работке входных данных. Удаленный пользователь может ного Excel-файла вызвать повреждение памяти и выпол-
с помощью специально сформированной веб-страницы вы- нить произвольный код на целевой системе.
полнить произвольный код на целевой системе. Уязвимос- 2. Уязвимость существует из-за ошибки при провер-
ти подвержены версия 9.0.45.0 и более ранние. ке подлинности номера активного листа. Удаленный поль-
2. Уязвимость существует из-за ошибки во взаимодейс- зователь может с помощью специально сформированно-
твии Flash Player с некоторыми браузерами. Удаленный го Excel-файла вызвать повреждение памяти и выполнить
пользователь может с помощью специально сформирован- произвольный код на целевой системе.
ной веб-страницы перехватить нажатия клавиш и переслать 3. Уязвимость существует из-за ошибки при обработ-
их апплету Flash Player. Уязвимости подвержены версия ке начальных атрибутов, ассоциированных с рабочим лис-
7.0.69.0 и более ранние на платформах Linux и Solaris. том. Удаленный пользователь может с помощью специаль-
3. Уязвимость существует из-за недостаточной обра- но сформированного Excel-файла выполнить произвольный
ботки HTTP Referer. Удаленный пользователь может произ- код на целевой системе.
вести CSRF-атаку. Уязвимость существует в 8.0.34.0 и бо- URL производителя: www.microsoft.com.
лее ранних версиях. Решение: Установите исправление с сайта производите-
URL производителя: www.adobe.com. ля.
Решение: Установите последнюю версию 9.0.47.0 с сайта
производителя. Составил Александр Антипов

№7, июль 2007 37


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

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

О
сравнении производительности Однако, все тесты, которые доступ- Мы же тестируем пригодность
MySQL и PostgreSQL написана ны в Интернете, – это работа СУБД СУБД для реализации конкретно-
не одна статья, и всезнающий на синтетических запросах, имею- го проекта, а именно – блогохостин-
Google выдает больше миллиона доку- щих малое отношение к конкретным га с большим количеством активных
ментов, посвященных этой теме. проектам. пользователей, которые не только ве-

38
администрирование
дут свои дневники, пишут и читают комментарии, но и чи- 8VHUV )ULHQGV
тают записи своих друзей. 3. XVHUBLG ). 3.). XVHUBLG
XVHUBQDPH ). 3.). IULHQGBLG

Сервер и настройки системы ). ).


Сервер – HP ProLiant DL380 2xXeon3.2, RAM 5 Гб, SCSI
HDD u320. 3RVWV &RPPHQWV
).
Операционная система – Linux Debian, kernel 2.6.18. 3.).
3.
XVHUBLG
SRVWBLG
3.). XVHUBLG
). 3.). SRVWBLG
3. FRPPHQWVBLG
SRVWBGDWH
# cat /proc/meminfo SRVWBWLWOH ). IURPBXVHUBLG
SRVWBERG\ FRPPHQWBGDWH
MemTotal: 5016868 kB
FRPPHQWBERG\
MemFree: 4087256 kB
Buffers: 152704 kB 8VHUV ±  ɡɚɩɢɫɟɣ
Cached: 643356 kB )ULHQGV ±  ɡɚɩɢɫɟɣ ɜɫɪɟɞɧɟɦɩɨɮɪɟɧɞɨɜ 
SwapCached: 0 kB 3RVWV ±  ɡɚɩɢɫɟɣ ɜɫɪɟɞɧɟɦɩɨɡɚɩɢɫɟɣɧɚɩɨɥɶɡɨɜɚɬɟɥɹ 
Active: 492940 kB &RPPHQWV ±  ɡɚɩɢɫɟɣ ɜɫɪɟɞɧɟɦɩɨɤɨɦɦɟɧɬɚɪɢɟɜɧɚɤɚɠɞɭɸɡɚɩɢɫɶ 
Inactive: 339252 kB
HighTotal: 0 kB Схема БД
HighFree: 0 kB
LowTotal: 5016868 kB
LowFree: 4087256 kB достаточно сложны, и предоставить их в этой статье вмес-
SwapTotal: 7815580 kB те с достойным описанием не позволяет объем.
SwapFree: 7815532 kB
Поэтому ограничусь лишь утверждением, что оба сер-
Dirty: 80 kB
Writeback: 0 kB вера были настроены на максимальную производитель-
AnonPages: 6820 kB ность, а приведенные здесь результаты тестов – лучшие
Mapped: 15812 kB
Slab: 76636 kB из полученных.
PageTables: 1084 kB MySQL:
NFS_Unstable: 0 kB
Bounce: 0 kB
# InnoDB
CommitLimit: 10324012 kB sync_binlog = 0
Committed_AS: 297940 kB innodb_buffer_pool_size = 2048M
VmallocTotal: 34359738367 kB innodb_additional_mem_pool_size = 64M
VmallocUsed: 4100 kB innodb_log_files_in_group = 2
VmallocChunk: 34359734091 kB innodb_log_file_size = 512M
innodb_log_buffer_size = 8M
# ulimit -a innodb_flush_log_at_trx_commit = 0

core file size (blocks, -c) 0


# MyISAM
key_buffer = 1024M
data seg size (kbytes, -d) unlimited
table_cache = 1024
max nice (-e) 0 sort_buffer_size = 16M
file size (blocks, -f) unlimited read_buffer_size = 4M
pending signals (-i) unlimited read_rnd_buffer_size = 4M
max locked memory (kbytes, -l) unlimited myisam_sort_buffer_size = 4M
max memory size (kbytes, -m) unlimited query_cache_size = 16M
open files (-n) 65535
pipe size (512 bytes, -p) 8 PostgreSQL:
POSIX message queues (bytes, -q) unlimited
max rt priority (-r) 0
stack size (kbytes, -s) 8192 shared_buffers = 500000
cpu time (seconds, -t) unlimited temp_buffers = 4000
max user processes (-u) unlimited
max_prepared_transactions = 0
work_mem = 128000
virtual memory (kbytes, -v) unlimited
maintenance_work_mem = 256000
file locks (-x) unlimited max_stack_depth = 8192
max_fsm_pages = 200000
max_fsm_relations = 10000
Установленное ПО: max_files_per_process = 1000
stats_start_collector = on
mysql> select version(); stats_command_string = off
stats_row_level = on
+---------------------+
autovacuum = on
| version() |
+---------------------+
| 5.0.32-Debian_3-log | Схема БД представлена на рисунке.
+---------------------+ Для PostgreSQL:
1 row in set (0.04 sec)
CREATE TABLE users
postgres=# select version(); (
user_id bigint NOT NULL,
version user_name character varying(100) NOT NULL,
--------------------------------------------------- CONSTRAINT users_pk PRIMARY KEY (user_id)
------------------------------------------------------------ ) WITHOUT OIDS;
PostgreSQL 8.1.8 on i486-pc-linux-gnu, compiled by
GCC cc (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21) CREATE UNIQUE INDEX users_user_name_u ON users ↵
(1 row) USING btree (user_name);

CREATE TABLE friends


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

№7, июль 2007 39


администрирование
user_id bigint NOT NULL, Методика тестирования
friend_id bigint NOT NULL,
CONSTRAINT friends_pk PRIMARY KEY (user_id, friend_id), Распредение количества запросов на чтение и запись бы-
CONSTRAINT user_id_fk1 FOREIGN KEY (user_id) ↵ ло выбрано в отношении 80% и 20% соответственно. Пос-
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, n чтение френдленты (95%);
post_body text, n чтение постов и комментариев (5%);
CONSTRAINT posts_pk PRIMARY KEY (user_id, posts_id),
CONSTRAINT user_id_fk3 FOREIGN KEY (user_id) ↵ n запись постов и комментариев к ним (95%);
REFERENCES users (user_id) n создание новых пользователей и изменение свойств
)
WITHOUT OIDS; уже существующих (5%).

CREATE TABLE comments


( Эти четыре типа запросов дают практически полную
user_id bigint NOT NULL, эмуляцию работы блогосервиса.
posts_id bigint NOT NULL,
comments_id bigint NOT NULL, Для PostgreSQL запросы выглядят так:
from_user_id bigint NOT NULL, Чтение френдленты:
comment_date bigint NOT NULL,
comment_title character varying(256) NOT NULL,
comment_body text, SELECT user_id, MAX(posts_id)
CONSTRAINT comments_pk PRIMARY KEY (user_id, ↵ FROM posts
posts_id, comments_id), WHERE user_id
CONSTRAINT user_posts_id_fk1 FOREIGN KEY (user_id, ↵ IN (SELECT friend_id
posts_id) REFERENCES posts (user_id, posts_id), FROM friends
CONSTRAINT from_user_id_fk2 FOREIGN KEY (user_id) ↵ WHERE user_id = UserId)
REFERENCES users (user_id) GROUP BY user_id;
)
WITHOUT OIDS;
Чтение постов и комментариев:
Для MySQL:
SELECT *
DROP TABLE IF EXISTS users; FROM posts
WHERE (posts_id = PostId);
CREATE TABLE users
(
user_id int(10) NOT NULL auto_increment, SELECT *
user_name varchar(100) NOT NULL, FROM comments
WHERE ((user_id = UserId) AND (posts_id = PostId))
PRIMARY KEY (user_id) ORDER BY comment_date;
) ENGINE=InnoDB;

DROP TABLE IF EXISTS friends; Запись поста:


CREATE TABLE friends
( SELECT NewPost(UserId, Date, Title, Body);
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; SELECT NewComment(UserId, Date, Title, Body);
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, SELECT NewUser(UserName)
post_body text NOT NULL,
PRIMARY KEY (user_id, post_id)
) ENGINE=InnoDB;
Редактирование свойств пользователя:
DROP TABLE IF EXISTS comments;
SELECT ModifyUser(UserId, UserName);
CREATE TABLE post_cmt
(
user_id int(10) NOT NULL,
post_id int(10) NOT NULL,
comment_id int(10) NOT NULL, Для MySQL:
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) SELECT user_id, MAX(posts_id)
) ENGINE=InnoDB; FROM posts
WHERE user_id
Для тестов с ENGINE=MyISAM отличий в структуре БД IN (SELECT friend_id
FROM friends
нет. Все дампы схем доступны по адресу: http://www.reki.ru/ WHERE user_id = UserId)
products/blogoservice. GROUP BY user_id;

40
администрирование
Для максимально оптимальной выборки Результаты тестирования СУБД MySQL и PostgreSQL в зависимости
от количества подключений
необходимо на внутренний запрос подключить
индекс по первичному ключу таблицы friends, Количество коннектов MySQL InnoDB MySQL MyISAM PostgreSQL
в пуле (read/write per sec) (read/write per sec) (read/write per sec)
а для внешнего запроса – первичный ключ по
1 600/60 500/20 4000/1500
таблице posts.
Однако, поскольку MySQL всех версий 5 1100/110 600/50 12000/3000

не умеет адекватно оптимизировать внешний 10 1100/110 600/50 14000/4000


запрос вне зависимости от созданных индексов 11-17 800/70 400/30 14000/4000
и их явного указния через FORCE(key list), раз- 20 и более Отказ от обслуживания Отказ от обслуживания 14000/4000
биваем сложный запрос на два простых: в пер-
вом запросе получаем список пользователей, а во втором – Важно отметить, что не существует одинаковых архи-
выбираем посты. тектурных решений для этих двух СУБД. В каждом слу-
чае требуется индивидуальный подход как в проектирова-
UsersSet = SELECT friend_id FROM friends ↵ нии структуры базы данных, так и в реализации механиз-
WHERE user_id = UserId
ма вставок и выборок данных.
и Именно поэтому в высоконагруженных проектах не-
допустимо использование «универсальных» фреймвор-
SELECT user_id, MAX(post_id) FROM posts ↵ ков для БД, поскольку ни один из них не учитывает архи-
WHERE user_id in (UsersSet) GROUP BY user_id
тектуру проекта, в котором используется, а большинство
Я не утверждаю, что MySQL 5 не умеет делать подза- их них не учитывает даже порядка использования индек-
просы. Утверждается, что скорость работы двух простых сов в СУБД.
запросов выше скорости работы одного сложного ввиду Поговорим про оптимизацию кода. Разумеется, коли-
специфических особенностей работы оптимизатора за- чество «служебных» запросов (проверок наличия или от-
просов. сутствия пользователя, комментариев и т. п.) можно сокра-
Чтение постов и комментариев: тить, введя, например, users_id как хэшированное имя поль-
зователя или разместив в памяти хэштаблицу ID и имен
SELECT * пользователей. Однако здесь мы тестируем производи-
FROM posts
WHERE (posts_id = PostId); тельность именно СУБД, а не всего программного комп-
лекса в целом.
SELECT *
FROM comments
WHERE ((user_id = UserId) AND (posts_id = PostId))
ORDER BY comment_date;
Результаты
Я сознательно не измерял время подключения к БД, а ис-
Запись поста: пользовал пул заранее созданных подключений. На наш
взгляд, отсутствие пула и постоянные переподключения
PostID = SELECT MAX(post_id) FROM posts; к базе у высоконагруженного проекта – уже показатель его
INSERT IGNORE INTO posts (user_id, post_id, post_date, ↵
post_title, post_body) VALUES (UserID, PostID, ↵ неправильной архитектуры.
Date, Title, Body);
Выводы
Запись комментария: Вся описанная в литературе хваленая производительность
MySQL достигается только на примитивных запросах на чте-
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; ↵ пись, MySQL проигрывает PostgreSQL в разы.
INSERT IGNORE INTO comments (user_id, posts_id, ↵
comment_id, from_user_id, comment_date, ↵ Поэтому ниша MySQL – проекты, не требующие какой-
comment_title, comment_body) ↵ либо ссылочной целостности и бизнес-логики внури базы
VALUES (UserId, PostId, CommentId, PosterId, Date, ↵
Title, Body);</pre> данных и структурой, в которой возможны только простые
выборки без сложных пересечений. Даже в проекте типа
Создание пользователя: блогосервиса, MySQL в разы уступает в производитель-
ности PostgreSQL, а при достаточно большом количест-
SELECT COUNT(1) FROM users WHERE user_name = UserName; ве одновременных выборок (больше 20) происходит отказ
INSERT INTO users(user_name) VALUES (UserName);
GET_LAST_INSERT_ID от обслуживания.
Разумеется, не существует «серебряной пули», кото-
Редактирование свойств пользователя: рая могла бы убить любого зверя. В любом и каждом про-
екте следует тестировать применимость той или иной тех-
SELECT COUNT(1) FROM users WHERE user_id = UserId; нологии и ни в коем случае нельзя при выборе СУБД пола-
UPDATE users SET user_name = UserName ↵
WHERE user_id = UserId; гаться на предыдущий «опыт» других разработчиков, ведь
вполне может оказаться что их выбор – не более чем дань
Как мы можем видеть, алгоритмы работы с БД оптими- традиционному заблуждению.
зированны как под MySQL, так и под PostgreSQL. Удачи!

№7, июль 2007 41


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

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

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

Если вы сталкиваетесь с постоянными зависаниями, неудобством управления или нехваткой


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

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

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

№7, июль 2007 43


администрирование
тановить веб-сервер (lighttpd), а также при необходимос- n ipkg remove <имя_пакета|регулярное_выражение> –
ти настроить поддержку PHP. удаляет один или несколько пакетов;
n ipkg list – выводит на экран полный список пакетов;
Системные требования n ipkg list_installed – выводит на экран список установ-
Для того чтобы запустить OpenWRT, в роутере должно быть ленных пакетов.
установлено 2 Мб постоянной памяти и 8 Мб оперативной.
Указанные требования по RAM являются теоретическим У ipkg есть конфигурационный файл, который может со-
минимумом. Но на практике для запуска всех необходи- держать следующие инструкции:
мых приложений потребуется не менее 16 Мб. n src <имя> <http://url> – указывает репозитарии пакетов
Что касается постоянной памяти, она достаточно прос- (список репозитариев можно найти на поисковом сайте
то поддается расширению посредством подключения вне- пакетов ipkg [2]);
шнего USB-накопителя (см. «Настройка поддержки USB- n dest <имя> <путь> – указывает место установки паке-
носителя»). тов. По умолчанию существует два места установки: пос-
тоянная и оперативная память. Именно благодаря этой
Поддерживаемые модели возможности в случае недостатка постоянной памяти
маршрутизаторов можно установить пакеты на USB-накопитель (подроб-
Как сообщалось выше, наилучшей поддержкой сейчас об- нее на сайте разработчиков [3]).
ладают маршрутизаторы Linksys WRT54G и ASUS WL-500g,
а также их ближайшие «соседи». Доступ к системе в момент первой загрузки осущест-
Подробный список оборудования с указанием моде- вляется по telnet (в качестве telnet-сервера использует-
ли процессора, объема постоянной и оперативной памяти, ся реализация из BusyBox). После установки пароля и пе-
количеством USB-портов и текущим уровнем поддержки резагрузки предоставляется командный интерфейс пос-
в OpenWRT приведен на сайте разработчиков [1]. редством протокола SSH. В роли SSH-сервера выступает
Во всех примерах будет использоваться модель ASUS легковесный dropbear [4]. Он поддерживает аутентифика-
WL-500g. В ее основе – микропроцессор Broadcom 4710, ра- цию c использованием открытого ключа (аутентификацию
ботающий на частоте 125 МГц. Она оснащена 4 Мб посто- по паролю можно запретить). Сервер не имеет конфигура-
янной памяти и 16 Мб оперативной, имеет один порт USB ционного файла, и все настройки передаются параметра-
версии 1.1. ми командной строки.
Дополнительные утилиты для генерации ключа SSH-
Общие сведения о работе в OpenWRT сервера не нужны, dropbear обладает компонентом, реа-
Роль основных системных утилит в OpenWRT выполняет лизующим эту задачу:
BusyBox (см. стр. 54-56 журнала).
$ ls -l /usr/bin/dropbearkey
$ ls -l /bin/rm lrwxrwxrwx 1 root root 16 Feb 3 18:49 /usr/bin/dropbearkey -> ../sbin/dropbear

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


Следующей командой можно сгенерировать ключ RSA
$ busybox
длиной 1024 байта, записываемый в файл /tmp/tmpkey:
BusyBox v1.00 (2007.01.30-11:42+0000) multi-call binary
$ /usr/bin/dropbearkey -t rsa -f /tmp/tmpkey -s 1024
В качестве основного shell по умолчанию в OpenWRT
используется ash из BusyBox: Как уже сообщалось, существуют и другие интерфейсы
управления, доступные через Web: стандартно имеющийся
$ echo $SHELL в системе (webif) и от проекта X-Wrt (webif^2). X-Wrt – веб-
/bin/ash интерфейс и набор расширений к OpenWRT, увеличиваю-
щий простоту и удобство управления. Текущая стабиль-
В системе присутствуют скрипты инициализации. Они ная версия – webif^2 (0.3-8), именно она и будет использо-
расположены в директории /etc/init.d/ и являются обычны- вана в примерах.
ми shell-скриптами. В OpenWRT по умолчанию используется целых три фай-
Важным компонентом системы является пакетный ме- ловых системы: JFFS2, SquashFS и mini_fo.
неджер ipkg. Он очень прост в использовании, быстро ра- SquashFS – это ФС только для чтения со сжатием.
ботает и обладает достаточным функционалом. Рассмот- В ней хранится «базовый образ» системы, он монтирует-
рим основные его функции: ся в /rom.
n ipkg update – обновляет список пакетов (загружая его В JFFS2 хранятся все изменяемые данные, расположен-
из источников, указанных в конфигурационном фай- ные на FLASH маршрутизатора, они монтируются в /jffs.
ле); При изменении файл копируется с SquashFS на JFFS2,
n ipkg upgrade – обновляет все установленные пакеты; имеющую возможность записи, и уже там изменяется. Пос-
n ipkg install <имя_пакета> – устанавливает пакет (в ка- ле этого всегда используется версия файла c JFFS2. Такую
честве параметра может принимать имя пакета, а также возможность прозрачно реализует ФС mini_fo, она примон-
путь или HTTP URL, указывающий на файл пакета); тирована в /.

44
администрирование
Выглядит это следующим образом: Далее необходимо подключиться к маршрутизатору
по telnet, изменить пароль пользователя root, отключить за-
# mount пуск telnetd и установить имя маршрутизатора:
/dev/root on /mnt/rom type squashfs (ro)
/dev/mtdblock/4 on /mnt/jffs type jffs2 (rw) # telnet 192.168.1.1
/jffs on / type mini_fo (rw) root@OpenWrt # passwd
root@OpenWrt # nvram set telnet_enable=0
root@OpenWrt # nvram set wan_hostname=router
Процесс прошивки OpenWRT root@OpenWrt # nvram commit
root@OpenWrt # reboot
в маршрутизатор
Общепринятым и наиболее универсальным способом на- В этом примере используется утилита nvram. Она поз-
чальной установки является инсталляция посредством tftp воляет управлять практически всеми конфигурационны-
(легковесный FTP, работающий поверх UDP, а не TCP). За- ми параметрами. Последние сохраняются в специальную
грузчик рассматриваемого устройства создан таким обра- область постоянной памяти. Рассмотрим ее основные воз-
зом, что может принять образ прошивки по tftp и записать можности:
его на встроенную flash-память. Для проведения этой опе- n nvram set <имя_параметра>=<значение_парамет-
рации потребуется клиент tftp. ра> – установить значение параметра;
Для установки выберем минимальный образ системы, ко- n nvram get <имя_параметра> – получить значение па-
торый можно скачать по адресу: http://downloads.openwrt.org/ раметра;
whiterussian/0.9/micro. n nvram unset <имя_параметра> – удалить параметр;
Названия файлов в этой директории формируют- n nvram show – вывести полный список параметров
ся следующим образом: openwrt-<модель|архитектура>- и их значений;
<версия_ядра>-squashfs.<bin|trx>. Для используемой мо- n nvram commit – записать параметры в постоянную па-
дели маршрутизатора нужен образ openwrt-brcm-2.4- мять (количество циклов перезаписи ограничено, не де-
squashfs.trx. Информация об особенностях выбора и ин- лайте это слишком часто).
сталляции версии OpenWRT именно для различных ро-
утеров опубликована на странице документации сайта Теперь, для того чтобы подключиться к маршрутизато-
разработчиков [5]. ру, необходимо использовать SSH:
Настройк у локального адреса маршру тизатора
на 192.168.1.1 можно осуществить через стандартный веб- $ ssh 192.168.1.1 -l root
интерфейс. Password:
Для того чтобы перевести ASUS WL-500g в режим ин- root@router:~#

сталляции по tftp, необходимо отключить провод пита-


ния, зажать кнопку «restore», подключить кабель питания Добро пожаловать в мир OpenWRT!
и отпустить кнопку. Характерным признаком того, что ро- Рассмотрим самый простой случай настройки Интерне-
утер ожидает tftp-подключения, будет мигающий индика- та на маршрутизаторе:
тор «PWR».
Запуск клиента tftp и установка новой прошивки: # nvram set lan_proto=static
# nvram set lan_ipaddr=192.168.2.2
# nvram set lan_gateway=192.168.2.1
$ tftp 192.168.1.1 # nvram set lan_dns=192.168.2.1
tftp> get ASUSSPACELINK\x01\x01\xa8\xc0 /dev/null # nvram commit
tftp> binary # ifup lan
tftp> put openwrt.trx ASUSSPACELINK
tftp> quit
Таким образом, для внутреннего интерфейса LAN-роу-
Строка «\x01\x01\xa8\xc0» – не что иное, как 1.1.168.192, тера установлены: способ настройки – статический адрес,
записанное в шестнадцатеричной системе счисления. IP-адрес – 192.168.2.2, шлюз по умолчанию – 192.168.2.1,
В случае Linksys-процесс будет выглядеть следующим
образом:

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

Кроме возможности установки через TFTP, для мно-


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

№7, июль 2007 45


администрирование
Рассмотренная схема является достаточно простой, од-
нако маршрутизаторы, обладающие большей функциональ-
ностью, обычно устроены несколько сложнее. Рассмотрим
внутреннее сетевое устройство роутера на примере ASUS
WL500-g Premium (см. рис. 2).
Вместо 5-портового коммутатора на плату установ-
лен 6‑портовый управляемый коммутатор. Один из двух
Ethernet-портов, реализованных внутри CPU, не исполь-
зуется. Таким образом, OpenWRT использует два Ethernet-
порта.
На управляемом коммутаторе сконфигурировано две
виртуальных сети (VLAN).
В первый VLAN (номер 0) входят все порты кроме 0.
Ко второму VLAN, имеющему идентификационный но-
мер 1, отнесены порт 0 без тегирования и порт 5 с теги-
рованием.
Рисунок 2. Внутреннее сетевое устройство роутера
на примере ASUS WL500-g Premium В OpenWRT включена поддержка и добавлены два
VLAN – с номерами 0 и 1 соответственно.
DNS-сервер – 192.168.2.1. Стоит обратить внимание на то, Таким образом, внешние виды соединений в OpenWRT
что на данном этапе маршрутизатор имеет доступ в Интер- для более сложного устройства можно описать следую-
нет через LAN-порт. Такая настройка удобна на стадии кон- щим образом:
фигурации. Команда ifup заново инициализирует группу ин- n Порты, помеченные как LAN на маршрутизаторе, до-
терфейсов (в данном случае имя группы lan). ступны через vlan0.
Чтобы указать для WAN-порта статический IP-адрес, n Порт, помеченный как WAN на маршрутизаторе, досту-
нужно у названий параметров изменить префикс с lan пен через vlan1.
на wan (например: wan_proto=static). n Доступ к беспроводному соединению осуществляется
Теперь можно обновить список пакетов из Интернета через eth2.
и установить более функциональную версию ipkg (по умол-
чанию установлен shell-скрипт): При такой конфигурации настройки VLAN в OpenWRT
будут выглядеть следующим образом:
# ipkg update
# ipkg install ipkg vlan0hwname=eth0
vlan0ports="1 2 3 4 5*"
vlan1hwname=eth0
Специфика сетевых соединений vlan1ports="0 5*"
Рассмотрим несколько подробнее внутреннее устройс-
тво сетевых соединений SOC-маршрутизатора. Как вид- Внешний Ethernet-интерфейс (WAN) будет иметь сле-
но на схеме (рис. 1), внутри устройства находится 5-пор- дующие настройки:
товый коммутатор. Модуль Wi-Fi подключен посредс-
твом MINI‑PCI, и OpenWRT видит его как одно из обычных wan_ifname=vlan1
Ethernet-соединений.
Таким образом, внешние виды соединений в OpenWRT Локальный интерфейс будет сконфигурирован как мост
проецируются следующим образом: из двух других соединений:
n Порты, помеченные как LAN на маршрутизаторе, до-
ступны через eth0. lan_ifname=br0
lan_ifnames="vlan0 eth2"
n Порт, помеченный как WAN на маршрутизаторе, досту-
пен через eth1.
n Доступ к беспроводному соединению осуществляется Настройка поддержки USB-носителя
через eth2. USB flash-накопитель может понадобиться в совершенно
разных ситуациях. На нем можно хранить файлы, осущест-
Для того чтобы клиенты, подключенные локально вляя доступ к ним посредством FTP-сервера, установлен-
в Ethernet-порты и через беспроводное соединение, име- ного на маршрутизаторе, и многое другое.
ли доступ друг к другу, из соединений eth0 и eth2 собран На этом шаге у маршрутизатора уже настроен доступ
Ethernet-мост, обеспечивающий между ними прозрачную к Интернету.
передачу данных на канальном уровне. В зависимости от типа USB, которым обладает марш-
Для рассматриваемого роутера настройки будут вы- рутизатор, возможны следующие варианты:
глядеть так: UHCI USB 1.1:

wan_ifname=eth1 # ipkg install kmod-usb-uhci


lan_ifname=br0 # insmod usbcore
lan_ifnames="eth0 eth2" # insmod uhci

46
администрирование
OHCI USB 1.1: Их инсталляция через ipkg осуществляется так:

# ipkg install kmod-usb-ohci # ipkg install swap-utils


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

# ipkg install kmod-usb2 # mkswap /dev/scsi/host0/bus0/target0/lun0/part1


# insmod usbcore
# insmod ehci-hcd
Настройка автоматической активации swap:
Не подошедшие модули ядра рекомендуется удалить
следующим образом: # echo -e "#!/bin/sh\nswapon ↵
/dev/scsi/host0/bus0/target0/lun0/part1\n" > ↵
/etc/init.d/S20swap
# ipkg remove <имя_пакета> # chmod +x /etc/init.d/S20swap

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

# ipkg install kmod-usb-storage # free


# insmod scsi_mod
# insmod sd_mod total used free shared buffers
# insmod usb-storage Mem: 14308 10696 3612 0 668
Swap: 31336 0 31336
Total: 45644 10696 34948
Модуль usb-storage зависит от scsi_mod и sd_mod
(они установлены в системе по умолчанию), поэтому сна-
чала надо загрузить их. Перенос корня на USB-накопитель
При установке модулей ядра ipkg создает файлы в ди- Так как используемый роутер имеет всего 4 Мб flash-памя-
ректории /etc/modules.d, поэтому после перезагрузки они ти, целесообразно использование внешнего USB-накопи-
будут подгружаться автоматически. теля в качестве корневого устройства. Если вы не собира-
Кроме того, может понадобиться поддержка некоторых етесь устанавливать большое количество пакетов или в ва-
файловых систем, таких, как vfat, ext2, ext3. Рассмотрим шем маршрутизаторе установлен достаточный объем па-
пример подключения поддержки ФС ext2: мяти, пропустите этот шаг.
Создадим файловую систему ext2 на втором разделе
# ipkg install kmod-ext2 USB-накопителя, куда будет производиться перенос. При-
# insmod ext2
монтируем ее к /tmp и скопируем со встроенной flash-па-
Для управления таблицей разделов можно установить мяти данные:
fdisk:
# mkfs.ext2 /dev/scsi/host0/bus0/target0/lun0/part2
# ln -s /proc/mounts /etc/mtab
# ipkg install fdisk # mount /dev/scsi/host0/bus0/target0/lun0/part2 /mnt
# mkdir /tmp/root
# mount -o bind / /tmp/root
Если же существует необходимость в работе с ФС # cp /tmp/root/* /mnt -a
ext2/ext3 прямо с маршрутизатора, можно установить # umount /tmp/root
# umount /mnt
e2fsprogs. Этот набор утилит отсутствует в репозиториях,
настроенных в системе по умолчанию, так что в конфигу- Следующим шагом необходимо заменить init. Сущест-
рационный файл ipkg надо добавить дополнительное хра- вующий /sbin/init является символической ссылкой, указы-
нилище пакетов: вающей на BusyBox – его можно смело удалять:

# echo "src kamikaze-backports ↵ # rm /sbin/init


http://downloads.openwrt.org/backports/rc5/" >> ↵
/etc/ipkg.conf
# ipkg update На месте стандартного init разместим shell-скрипт, под-
# ipkg install e2fsprogs
гружающий необходимые модули (поддержки USB и нуж-
Теперь маршрутизатор обладает полной поддержкой ной ФС) и изменяющий корневой каталог. Создадим файл
USB-накопителей, может менять на них таблицу разделов, /sbin/init следующего содержания:
создавать файловые системы.
#!/bin/sh
for module in usbcore usb-ohci scsi_mod sd_mod ↵
Настройка swap на USB-накопителе usb-storage ext2; do {
Не буду вдаваться в подробности разбивки диска с исполь- insmod $module
}; done
зованием fdisk – лишь замечу, что раздел, который будет ис- sleep 5s
пользоваться для swap, станет первым на диске. В OpenWRT mount /dev/scsi/host0/bus0/target0/lun0/part2 /mnt
[ -x /mnt/sbin/init ] && {
по умолчанию не установлены утилиты управления swap. mount -o move /proc /mnt/proc && \

№7, июль 2007 47


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

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


Рассмотрим упомянутую возможность установки веб‑ин- Все достаточно просто и очевидно. Для PPPoE-подключе-
терфейса для управления OpenWRT. Стоит помнить, ния необходимо установить модуль к ядру, модуль к pppd,
что на практике он приносит не очень много пользы и мо- реализующий pppoe, и сам pppd.
жет быть использован лишь для базовой конфигурации. Все как в обычном Linux:
В репозиториях, настроенных по умолчанию, актуальной
версии X-Wrt нет. # ipkg install kmod-pppoe
# ipkg install ppp
Для ее установки необходимо выполнить следующую # ipkg install ppp-mod-pppoe
команду:
Далее приведу список параметров, хранящихся в nvram
# ipkg install ↵ и отвечающих за конфигурацию PPPoE:
http://ftp.berlios.de/pub/xwrt/webif_latest_stable.ipk
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/
Рисунок 3. Веб-интерфейс для управления OpenWRT ifup.pppoe. Он выбирает параметры из nvram (посредством

48
администрирование
nvram get) и согласно им запускает pppd. Без перезагрузки n wl0_infra <0|1> – инфраструктурный режим сети. Зна-
(вручную) запускать и останавливать PPPoE можно с помо- чение 0 – специальный (одноранговый) режим (Ad Hoc
щью следующих команд: mode), 1 – обычный режим.
n wl0_closed <0|1> – вещание ESSID. При установлен-
# ifup.pppoe wan ном значении 1 идентификатор сети не распространя-
# ifdown wan
ется.
Если вы столкнулись с какой-то проблемой или нестан- n wl0_channel <канал> – номер канала передачи (чис-
дартной ситуацией, можете с легкостью исправить эти ло от 1 до 11 и более, в зависимости от беспроводного
скрипты. Написаны они очень кратко, и при этом, к сожа- адаптера, установленного в маршрутизаторе).
лению, их качество оставляет желать лучшего. n wl0_macmode <disabled|allow|deny> – управление
фильтрацией по MAC-адресу. При значении ключа
Настройка PPTP-клиента disabled фильтрация отключена, при allow – перечис-
Первым делом необходимо установить модули ядра и PPTP- ленным в списке адресам предоставляется доступ,
клиент. при deny – запрещается.
n wl0_maclist [MAC [MAC]] – список MAC-адресов. Ад-
# ipkg install kmod-gre реса пишутся через пробел в следующем формате:
# ipkg install kmod-mppe
# ipkg install pptp 01:23:45:67:78:9A.

Для конфигурации конкретного соединения можно ли- Рассмотрим пример конфигурации, настроив Wi-Fi сле-
бо воспользоваться веб-интерфейсом, либо произвести дующим образом:
следующие действия:
nvram set wl0_mode=ap
# echo 'somepear vpn.foo.bar someuser' >> ↵ nvram set wl0_ssid=some_essid
/etc/ppp/pears.pptp nvram set wl0_infra=1
# echo 'someuser pptp:somepear somepass *' >> ↵ nvram set wl0_channel=4
/etc/ppp/chap-secrets nvram set wl0_macmode=disabled
# /etc/init.d/S90pptp start somepear nvram commit
# /etc/init.d/S90pptp stop somepear
При такой настройке маршрутизатор будет выпол-
В этом примере: нять роль точки доступа Wi-Fi, идентификатор сети бу-
n somepear – название точки доступа; дет some_essid, работать беспроводная сеть будет на чет-
n vpn.foo.bar – адрес PPTP-сервера; вертом канале, а подключиться сможет любой совмести-
n someuser – имя пользователя; мый клиент.
n somepass – пароль пользователя. Более подробно об этих и многих других опциях вы смо-
жете узнать на сайте дистрибутива OpenWRT [6].
Для того чтобы установить дополнительные правила
маршрутизации или брандмауэра, можно воспользовать- Настройка DHCP-сервера
ся скриптами pppd ip-up и ip-down. Рассмотрим следую- В роли DHCP-сервера в OpenWRT в основном использу-
щий пример: ется Dnsmasq – легковесный DHCP-север и DNS-прокси.
По умолчанию в OpenWRT все настройки DHCP располо-
# cat > /etc/ppp/ip-up.d/somepear жены в nvram, а скрипт запуска получает их оттуда и пе-
#!/bin/sh
interface_name=$1 редает как аргументы dnsmasq. Такой способ управления
remote_ip=$4 не очень удобен, да и сложившиеся тенденции (в первом
ipparam=$5
if [ "${ipparam}" = "pptp:somepear" ]; then выпуске Kamikaze, новой версии OpenWRT, отказались
/sbin/route add -net 10.0.0.0 netmask 255.255.248.0 ↵ от nvram) ведут к отказу от использования nvram. Именно
gw $remote_ip dev $interface_name
fi поэтому рассмотрим вариант конфигурации с использова-
нием обычных файлов.
В этом примере добавляется маршрут к сети 10.0.0.0/21 Первое, что необходимо сделать – заменить скрипт ини-
через IP-адрес удаленной стороны туннеля. циализации /etc/init.d/S60dnsmasq на следующий (связано
это с отказом от nvram):
Настройка беспроводного интерфейса
Большинство маршрутизаторов, на которых может быть #!/bin/sh
[ ! -f /tmp/dhcp.lease ] && {
установлен OpenWRT, относятся к классу беспроводных, touch /tmp/dhcp.lease
то есть имеют адаптер Wi-Fi. Рассмотрим несколько подроб- }
dnsmasq -C /etc/dnsmasq.conf
ней основные параметры беспроводного интерфейса:
n wl0_mode <ap|sta|wet> – режим работы точки Wi-Fi. Зна- Рассмотрим наиболее важные опции конфигурации
чение ap означает режим «точка доступа», sta – режим dnsmasq (/etc/dnsmasq.conf):
«клиента беспроводной маршрутизации», wet – режим n bogus-priv – на запросы обратного преобразования,
«беспроводного моста». не разрешенные локально (средствами lease файла
n wl0_ssid <essid> – идентификатор беспроводной сети или /etc/hosts), отвечать сообщением об отсутствии та-
(ESSID). кого имени.

№7, июль 2007 49


администрирование
n dhcp-range=192.168.1.5,192.168.1.200,255.255.255.0, Таблица брандмауэра filter, правила, распределяющие
192.168.1.255,12h – устанавливает диапазон выдавае- входящий трафик по разным цепочкам, разрешающие ло-
мых IP и время, на которое производится аренда. Фор- кальный трафик и ICMP:
мат записи следующий: адрес начала диапазона, адрес
конца диапазона, маска сети, широковещательный ад- -A INPUT -j input_rule
-A INPUT -i $WAN -j input_wan
рес, время аренды. -A INPUT -j LAN_ACCEPT
n read-ethers – использовать файл /etc/ethers, в котором -A
-A
INPUT -p icmp -j ACCEPT
INPUT -p tcp -j REJECT --reject-with tcp-reset
в формате «MAC-адрес IP-адрес» статически описаны -A INPUT -j REJECT --reject-with icmp-port-unreachable
настройки узлов. -A LAN_ACCEPT -i $LAN -j RETURN
-A LAN_ACCEPT -j ACCEPT
n dhcp-option=3,192.168.1.1 – опция указывает шлюз
по умолчанию. Формат этой записи следующий: номер Таблица брандмауэра filter, правила, распределяющие
опции dhcp, IP-адрес. исходящий трафик по разным цепочкам:
n dhcp-option=6,192.168.1.1 – опция указывает адрес
DNS‑сервера. -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
на сайте производителя [7]. -A OUTPUT -j REJECT --reject-with icmp-port-unreachable

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


В OpenWRT по умолчанию отсутствуют такие утилиты, проходящий трафик:
как iptables-save и iptables-restore, и, как следствие, до-
статочно неудобно распределены конфигурационные -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
ны в нескольких местах: /etc/config/firewall, /etc/firewall.user, -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j forwarding_rule
/etc/init.d/S35firewall. -A FORWARD -i $WAN -j forwarding_wan
С другой стороны, перестройка под себя скриптов ини- -A FORWARD -i br0 -o br0 -j ACCEPT
-A FORWARD -i $LAN -o $WAN -j ACCEPT
циализации и конфигурационных фалов брандмауэра то-
же вызывает сложности, если вы хотите, чтобы управле- Добавлять собственные правила необходимо в файл
ние «пробросом портов» из веб-интерфейса продолжа- /etc/firewall.user. Правила, добавленные через веб-интер-
ло работать. фейс, хранятся в файле /etc/config/firewall.
Если vы решили использовать утилиты iptables-save В примерах $WAN означает внешний порт, а $LAN –
и iptables‑restore, сначала нужно выполнить следующую внутренний. Под портом может пониматься группа из не-
команду: сколько портов и интерфейсов. Смотрите раздел «Специ-
фика сетевых соединений».
# ipkg install iptables-utils
Настройка VPN-сервера
Рассмотрим стандартные правила брандмауэра под- с использованием PPTPD
робнее: Демон PoPToP портирован под OpenWRT и достаточно
хорошо работает. Разумеется, CPU, который установлен
# iptables-save на маршрутизаторе, не сможет справиться с многомега-
битным VPN-трафиком и с большим количеством одновре-
Таблица брандмауэра nat, правила, отвечающие за ог- менных подключений.
раничение открытия новых TCP-соединений (не более 50 Однако задачу предоставления более или менее ка-
в секунду): чественного доступа нескольким пользователям успешно
решается такой конфигурацией. Установка производится
-A NEW -m limit --limit 50/sec --limit-burst 100 -j RETURN следующим образом:
-A NEW -j DROP
-A PREROUTING -m state --state NEW -j NEW
# ipkg install pptpd
Таблица брандмауэра nat, правило, реализующее ме-
ханизм NAT: Допустим, необходимо предоставлять доступ в сеть не-
скольким пользователям. Пользователи должны видеть друг
-A POSTROUTING -o $WAN -j MASQUERADE друга, а также все компьютеры, находящиеся в локальной
сети. Маршрутизатор является «центральным», и через не-
Таблица брандмауэра filter, правила, блокирующие не- го проходит весь трафик. Рассмотрим процесс конфигура-
корректные пакеты: ции такой системы.
/etc/ppp/options.pptpd – конфигурационный файл pppd,
-A INPUT -m state --state INVALID -j DROP в нем описывается множество параметров ppp. Среди них:
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp ! --tcp-option 2 ↵ допустимые способы аутентификации, методы шифрова-
--tcp-flags SYN SYN -j DROP ния данных, адрес VPN-сервера для VPN-клиентов и мно-

50
администрирование
гое другое. Здесь необходимо указать адрес VPN-серве- iptables -A output_rule -p 47 ↵
ра таким же, что и его основной локальный IP (по умолча-
iptables
-j ACCEPT
-A input_rule -p 47 ↵
нию – 192.168.1.1). Шифрование можно отключить, заме- -j ACCEPT
нив строку:
Для того чтобы работала передача трафика между ло-
mppe required,no40,no56,stateless кальной сетью и виртуальными клиентами ($WAN – имя ва-
шего внешнего интерфейса, например: eth1 или ppp0) до-
на следующую: бавим правила:

nomppe iptables -A forwarding_rule -s 192.168.1.0/24 ↵


-d 192.168.1.0/24 -j ACCEPT
iptables -A output_rule -o ppp+ -s 192.168.1.0/24 ↵
Для того чтобы клиенты, непосредственно подключен- -d 192.168.1.0/24 -j ACCEPT
iptables -A input_rule -i ppp+ -s 192.168.1.0/24 ↵
ные (по Ethernet) к маршрутизатору (будем называть их ло- -d 192.168.1.0/24 -j ACCEPT
кальными), имели связь с VPN-клиентами и наоборот, су- iptables -A forwarding_rule -i ppp+ -o $WAN -j ACCEPT
ществует два способа.
Первый способ: разделить клиентов по разным сетям Добавление этих правил лучше всего осуществлять
и сделать между ними маршрутизацию. Но тут возника- с использованием /etc/firewall.user.
ет проблема: если для локальных клиентов маршрутиза- Запуск и останов производится посредством скрипта
тор является шлюзом по умолчанию, то для VPN-клиентов инициализации следующим образом:
это неприемлемо, а значит, потребуется указывать допол-
нительный маршрут в сеть, в которой находятся локальные # /etc/init.d/S50pptpd start
# /etc/init.d/S50pptpd stop
клиенты. Указание дополнительных маршрутов невозмож-
но со стороны сервера, поэтому нужна настройка со сто- Теперь, подключившись к маршрутизатору по VPN, мож-
роны пользователя. но из любой точки мира работать с компьютерами локаль-
Второй способ: использовать технологию proxyarp. ной сети.
В этом случае маршрутизатор на ARP-запрос разрешения
IP‑адреса VPN-клиента, переданный локальным клиентом, Настройка FTP-сервера
будет отвечать MAC-адресом LAN-порта. Таким образом, В роли FTP-сервера под управлением OpenWRT может
ни для локальных, ни для внешних клиентов не требуется быть использован vsftpd. Установить его можно следую-
дополнительная маршрутизация. щим образом:
Проксирование протокола ARP включается следую-
щим образом: # ipkg install vsftpd

echo "proxyarp" >> /etc/ppp/options.pptpd Для настройки отредактируем конфигурационный файл


/etc/vsftpd.conf:
/etc/ppp/chap-secrets – файл паролей, в нем в стандартном
формате хранятся записи пользователей. background=YES
listen=YES
Предварительно узнав, каково значение парамет- write_enable=YES
ра name в options.pptpd, добавим пользователя с име- local_umask=022
check_shell=NO
нем testuser, паролем testpass и IP-адресом 192.168.1.201
(для того чтобы не возникало конфликтов с IP-адресами local_enable=YES
chroot_local_user=YES
локальных компьютеров, необходимо переконфигуриро- anonymous_enable=NO
вать DHCP‑сервер, ограничив диапазон выдаваемых ад- session_support=NO
userlist_enable=YES
ресов): userlist_deny=YES
userlist_file=/etc/vsftpd.users
# cat /etc/ppp/options.pptpd | grep ^name
name "pptp-server" При такой конфигурации будут использоваться систем-
ные учетные записи пользователей, но при этом  них бу-
# echo "testuser pptp-server testpass 192.168.1.201" >> ↵
/etc/ppp/chap-secrets дет разрешена аутентификация только тем пользователям,
имена которых перечислены в файле /etc/vsftpd.users.
Также существует файл /etc/pptpd.conf, содержащий ос- Сразу после аутентификации будет происходить смена
новные параметры PoPToP, значения по умолчанию устро- корня процесса (chroot) в домашнюю директорию пользо-
ят большинство пользователей. вателя. Поддержка сессий аутентификации (PAM и wtmp)
Кроме того, понадобится настройка брандмауэра, не- отключена за ненадобностью.
обходимо добавить следующие правила: Следующим шагом добавим одного пользователя, раз-
решим ему пользоваться FTP и установим для него па-
iptables -t nat -A prerouting_rule -i $WAN -p tcp ↵ роль:
--dport 1723 -j ACCEPT
iptables -A input_rule -i $WAN -p tcp ↵
--dport 1723 -j ACCEPT # echo "users:x:100:" >> /etc/group

№7, июль 2007 51


администрирование
# echo "someuser:*:2000:100:simple ↵ Имя пользователя и пароль для SMTP-аутентификации

#
user:/data:/bin/false" >> /etc/passwd
echo "someuser" >> /etc/vsftpd.users
можно указывать в командной строке посредством флагов
# mkdir /data && chown someuser:users /data -auusername и -appassword соответственно. Такая отправка
# passwd someuser писем обычно используется для различных уведомлений,
Настроим правила брандмауэра, добавив следующие лог-файлов и другого.
строки в файл /etc/firewall.user:
Настройка cron
iptables -t nat -A prerouting_rule -i $WAN -p tcp ↵ OpenWRT по умолчанию идет в поставке с работающим де-
--dport 21 -j ACCEPT
iptables -A input_rule -i $WAN -p tcp ↵ моном cron (часть BusyBox). Для его активации необходи-
--dport 21 -j ACCEPT мо выполнить лишь действие:

Настроим автоматическую загрузку: # nvram set cron_enable=1 && nvram commit


# /etc/init.d/S60cron start

# mv /etc/init.d/vsftpd /etc/init.d/S65vsftpd Теперь в качестве примера настроим синхронизацию


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

# vsftpd # ipkg install ntpclient


# killall vsftpd

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

Для отправки почты с маршрутизатора удобнее всего ис- Второй способ управления crontab – вызов программы
пользовать SSMTP. Для его установки необходимо выпол- /usr/bin/crontab (BusyBox) с параметром -e.
нить следующее:
Другие возможные применения
# ipkg install ssmtp Стоит учитывать, что в статье описаны далеко не все воз-
можности применения OpenWRT. Так например, сущес-
После установки необходимо исправить конфигура- твуют возможности скачивания файлов с помощью ути-
ционный файл /etc/ssmtp/ssmtp.conf и указать в нем поч- лит Wget и cTorrent, создания почтового сервера на базе
товый сервер (на нем должна быть разрешена пересыл- XMail, организация сервера печати (в случае наличия USB-
ка почты, полученной неавторизованным SMTP для ва- или LPT‑порта), установки Samba и множества других па-
шего IP, или вы сможете отправлять письма только в рам- кетов. Полный список пакетов можно найти в уже упомя-
ках одного сервера): нутой поисковой системе [8].
Удачи!
mailhub=mail.foo.bar.ru
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.
# ssmtp someuser@foo.bar.ru 5. http://wiki.openwrt.org/CategoryModel.
To: someuser@foo.bar.ru 6. http://wiki.openwrt.org/OpenWrtDocs/Configuration.
From: someuser@foo.bar.ru 7. http://www.thekelleys.org.uk/dnsmasq/doc.html.
Subject: Some notification message
Hello world! 8. http://ipkg.be.
9. http://wl500g.info/showthread.php?t=7048.

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

BusyBox: швейцарский нож


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

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

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

54
администрирование
версии GNU/Linux к этому достаточ-
но добавить лишь ядро ОС и катало- Где используется BusyBox и MoviX (популярный компактный дистри-
ги /etc, /dev. Примеры практического использования бутив с набором мультимедийных Open
BusyBox при создании дистрибутива вы Source-решений), в установщиках Debian,
Установка BusyBox можете найти в статье Всеволода Стахова Gentoo, Red Hat, Mandriva и других проек-
Бинарные пакеты с BusyBox для попу- «Создание загрузочных дискет и CD-дис- тов, а также во многих Linux-основанных ус-
лярных дистрибутивов GNU/Linux до- ков Linux» в №6 за 2003 г. или классических тройствах (Sharp Zaurus, роутеры, AP...).
ступны в соответствующих репозито- публикациях Брюса Перенса (Bruce Perens) В OpenWRT, (смотрите стр.42-52 жур-
риях, а архив с исходниками – на сай- «Building Tiny Linux Systems with Busybox», нала), в качестве командной оболочки
те проекта [2]. В статье рассматривает- доступных в Интернете (часть 1: http:// и базовых системных средств использу-
ся релиз BusyBox v1.5.0. Одна из глав- www.linuxjournal.com/article/4335, часть 2: ется именно BusyBox. Более подробный
ных целей, которую преследуют раз- http://www.linuxjournal.com/article/4395). список продуктов, использующих BusyBox,
работчики BusyBox, – оптимизирован- BusyBox нашел применение в таких доступен на сайте http://www.busybox.net/
ность и компактность кода – расчет на системах, как Familiar Linux (для КПК) products.html.
ограниченность памяти. Это не только
вновь говорит о плюсах его использо- Аргумент «menuconfig» вызывает ключить ненужные возможности. Пре-
вания во встраиваемых устройствах, более удобную конфигурацию в виде дусмотрен и обратный вариант: запуск
но и хорошо сочетается с другим под- меню с интерфейсом на базе curses make с «allnoconfig» отключает все оп-
ходом в духе UNIX way: высокий уро- (см. рис. 1). ции, чтобы после этого можно было вы-
вень настраиваемости (в бинарный Аргумент «defconfig» автоматичес- брать только то, что нужно.
файл BusyBox можно включить толь- ки включает все доступные опции, под- Далее все традиционно:
ко необходимые компоненты). готавливая к сборке BusyBox «общего
Еще на стадии компиляции (а точ- назначения». $ make
$ sudo make install
нее, до самого процесса сборки) мож- Так же, как и в случае с ядром Linux,
но выбрать только те базовые утилиты, после настройки создается конфи-
которые нужны. Реализовано это в сти- гурационный файл .config, к которо- Работа с BusyBox
ле настройки ядра Linux. Вместо более му можно затем всегда возвращать- Запуск оболочки BusyBox можно осу-
распространенного среди собираемых ся командой: ществить командой:
с automake приложений способа в виде
скрипта «configure» для предваритель- $ make oldconfig $ bb
ной конфигурации BusyBox нужно вы-
полнить одну из следующих команд: Это актуально при переходе на бо- Для разового вызова какой-либо
лее новую версию BusyBox со старой функции (как правило, одна функция
$ make config конфигурацией (чтобы при настройке BusyBox ограниченно реализует воз-
$ make menuconfig
$ make defconfig работать только с появившимися в оче- можности одной из утилит из состава
редном релизе опциями). GNU coreutils, util-linux и других стан-
Аргумент «config» инициирует за- По умолчанию, если до вызо - дартных пакетов) можно воспользо-
пуск «вопросника» со списком доступ- ва «make menuconfig» не существо- ваться командой:
ных опций и базовых утилит, пред- вал файл .config, make автоматичес-
лагающего проставлять «Y» или «N» ки предварительно запускается с ар- $ busybox <функция> [аргументы]
на месте нужных и ненужных возмож- гументом «defconfig». Таким образом,
ностей соответственно. пользователю останется только от- То есть, например:

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

№7, июль 2007 55


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

56
bugtraq

Множественные уязвимости Несколько уязвимостей в Trillian


в Mozilla Firefox Программа: Trillian Basic 3.1.6.0, возможно, другие версии.
Программа: Mozilla Firefox версии до 2.0.0.5. Опасность: Высокая.
Опасность: Высокая. Описание: 1. Уязвимость существует из-за того, что aim://
Описание: 1. Различные ошибки в браузере могут позво- URI-обработчик не проверяет aim:// URI перед записью дан-
лить злоумышленнику вызвать повреждение памяти и вы- ных в файл, указанный в параметре ini=. Удаленный поль-
полнить произвольный код на целевой системе. зователь может с помощью специально сформированного
2. Различные ошибки в механизме Javascript могут поз- aim:// URI записать произвольные файлы на целевую сис-
волить злоумышленнику вызвать повреждение памяти и вы- тему. Пример:
полнить произвольный код на целевой системе. <a href = 'aim: &c:\windows\system32\calc.exe" ↵
3. Уязвимость существует из-за ошибки в методах ini="C:\Documents and Settings\All Users\ ↵
Start Menu\Programs\Startup\pwnd.bat"'>#1</a>
addEventListener и setTimeout, которая позволяет удаленно-
му пользователю внедрить произвольный сценарий и вы- 2. Уязвимость существует из-за ошибки проверки гра-
полнить его в контексте безопасности другого сайта. ниц данных при обработке aim:// URI в плагине aim.dll. Уда-
4. Уязвимость существует из-за ошибки, которая поз- ленный пользователь может с помощью специально сфор-
воляет междоменное выполнение сценариев в подфрейме мированного aim:// URI вызвать переполнение буфера и вы-
другого веб-сайта с помощью вызова [window].frames[index]. полнить произвольный код на целевой системе. Пример:
document.open(). <a href = 'aim:///#1111111/11111111111111111111111111111111
5. Уязвимость существует из-за ошибки, которая поз- 1111111111111111111111111111122222222222222222222222222222222
2222222222222222222222222222222222222222222222222222222222222
воляет внешним элементам вызвать обработчик событий 2222222222222222222222222222222222222222222222222222222222222
и выполнить произвольный код на системе с привилегия- 222222222222222222222222222226666666AAAABBBB66666666666666666
6666666666666666666666666666666666666666666666666666666666666
ми chrome. 6666666666666666666666666666666666666666666666666666666666666
6. Уязвимость существует из-за ошибки при обработке 6666666666666666666666666666666666666666666666666666666666666
66666666666666666666666666666666666666666666'>#2</a>
XPCNativeWrapper. Удаленный пользователь может выпол-
нить произвольный код на целевой системе. URL производителя: www.ceruleanstudios.com.
URL производителя: www.mozilla.com. Решение: В настоящее время способов устранения уязви-
Решение: Установите последнюю версию 2.0.0.5 с сайта мости не существует. В качестве временного решения ре-
производителя. комендуется отключить обработчик aim:// URI.

Повреждение памяти Несколько уязвимостей


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

№7, июль 2007 57


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

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

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

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

58
администрирование
Возможности Puppet вом случае используется ссылка на внешний NFS-сервер,
Puppet [4], как и Cfengine, является клиент-серверной сис- во втором варианте на сервере Puppet запускается NFS‑по-
темой, использующей декларативный, то есть обязатель- добный сервис, который и экспортирует ресурсы. В послед-
ный для выполнения язык для описания задач и библиоте- нем случае по умолчанию путь указывается относитель-
ки для их реализации. Клиенты периодически (по умолча- но корневого каталога puppet – /etc/puppet. То есть ссылка
нию каждые 30 минут) соединяются с центральным серве- puppet://server.domain.com/config/sshd_config будет соответс-
ром и получают последнюю конфигурацию. Если получен- твовать файлу /etc/puppet/config/sshd_config. Переопреде-
ные настройки не совпадают с системным состоянием, они лить этот каталог можно с помощью директивы filebucket,
будут выполнены, при необходимости серверу отсылается хотя более правильно использовать одноименную секцию
отчет о произведенных операциях. Сервер сообщения мо- в файле /etc/puppet/fileserver.conf. В этом случае можно ог-
жет сохранить в syslog или файл, создать RRD-график, отос- раничить доступ к сервису только с определенных адресов.
лать на указанный e‑mail. Дополнительные уровни абстрак- Например, опишем секцию config:
ции Transactional и Resource обеспечивают максимальную
совместимость с существующими настройками и приложе- [config]
path /var/puppet/config
ниями, позволяя сфокусироваться на системных объектах, allow *.domain.com
не заботясь о различиях в реализации и описании подроб- allow 127.0.0.1
allow 192.168.0.*
ных команд и форматах файлов. Администратор опериру- allow 192.168.1.0/24
ет лишь с типом объекта, остальное Puppet берет на себя. deny *.wireless.domain.com
Так, тип packages знает о 17 пакетных системах, нужная ав-
томатически будет распознана на основании информации А затем обращаемся к этой секции при описании ре-
о версии дистрибутива или системы, хотя при необходимос- сурса:
ти пакетный менеджер можно задать принудительно.
В отличие от скриптов, которые часто невозможно ис- source => "puppet://server.domain.com/config/sshd_config"
пользовать в других системах, конфигурации Puppet, напи-
санные сторонними администраторами, будут в большинс- Перед двоеточием располагается название ресурса.
тве без проблем работать в любой другой сети. В Puppet В самых простых случаях в качестве имени можно просто
CookBook [5] уже имеется три десятка готовых рецептов. указать полный путь к файлу. В более сложных конфигу-
В настоящее время Puppet официально поддерживает сле- рациях лучше использовать псевдоним или переменные.
дующие операционные системы и сервисы: Debian, RedHat/ Псевдоним устанавливается с помощью директивы alias:
Fedora, Solaris, SUSE, CentOS, Mac OS X, OpenBSD, Gentoo
и MySQL, LDAP. file { "/etc/passwd":
alias => passwd
}
Язык Puppet
Чтобы идти дальше, вначале следует разобраться с основ- Другой вариант создания псевдонима хорошо подходит
ными элементами и возможностями языка. Язык – это од- в том случае, когда приходится иметь дело с разными опе-
на из сильных сторон Puppet. С его помощью описывают- рационными системами. Например, создадим ресурс, опи-
ся ресурсы, которыми администратор планирует управлять, сывающий файл sshd_config:
и действия. В отличие от большинства подобных решений,
в Puppet язык позволяет упростить обращение ко всем file { sshdconfig:
name => $operatingsystem ? {
схожим ресурсам на любой системе в гетерогенной среде. solaris => "/usr/local/etc/ssh/sshd_config",
Описание ресурса, как правило, состоит из названия, типа default => "/etc/ssh/sshd_config"
}
и атрибутов. Например, укажем на файл /etc/passwd и ус-
тановим его атрибуты: В этом примере мы столкнулись с возможностью выбо-
ра. Отдельно указан файл для Solaris, для всех остальных
file { "/etc/passwd": будет выбран файл /etc/ssh/sshd_config. Теперь к этому ре-
owner => root,
group => root, сурсу можно обращаться как к sshdconfig, в зависимости от
mode => 644, операционной системы будет выбран нужный путь. Напри-
}
мер, укажем, что в случае, если демон sshd запущен и по-
Теперь клиенты, подключившись к серверу, скопируют лучен новый файл, следует перезапустить сервис:
файл /etc/passwd и установят указанные атрибуты. В од-
ном правиле можно определять сразу несколько ресурсов, service { sshd:
ensure => true,
разделяя их с помощью точки с запятой. А что делать, ес- subscribe => File[sshdconfig]
ли конфигурационный файл, используемый на сервере, от- }
личается от клиентских или вообще не используется? На-
пример, такая ситуация может возникнуть при настройках Переменные часто используются при работе с пользо-
VPN-соединений. В этом случае следует указать на файл вательскими данными. Например описываем местораспо-
директивой source. Здесь два варианта, можно, как обыч- ложение домашних каталогов пользователей:
но указать путь к другому файлу, а также с помощью под-
держивающихся двух URI протоколов: file и puppet. В пер- $homeroot = "/home"

№7, июль 2007 59


администрирование
Теперь к файлам конкретного пользователя можно об- command => "/bin/cp -R /etc/skel /home/$name; ↵
ратиться как: /bin/chown -R $name:$group /home/$name",
creates => "/home/$name",
require => User[$name],
${homeroot}/$name }
}

В параметр $name будет подставлено учетное имя поль- Теперь, чтобы создать новую учетную запись, достаточ-
зователя. В некоторых случаях удобно определить значе- но обратиться к user_homedir:
ние по умолчанию для некоторого типа. Например, для ти-
па exec очень часто указывают каталоги, в которых он дол- user_homedir { "sergej":
group => "sergej",
жен искать исполняемый файл: fullname => "Sergej Jaremchuk",
ingroups => ["media", " admin]
}
Exec { path => "/usr/bin:/bin:/usr/sbin:/sbin" }
Отдельно стоят описания узлов (node), которые подде-
В том случае, если нужно указать на несколько вло- рживают наследование, как и классы. При подключении
женных файлов и каталогов, можно использовать пара- клиента к серверу Puppet будет произведен поиск соот-
метр recurse: ветствующей секции node и выданы специфические толь-
ко для этого компьютера настройки. Для описания всех ос-
file { "/etc/apache2/conf.d": тальных систем можно использовать node default. Описа-
source => "puppet:// ↵
puppet://server.domain.com/config/apache/conf.d", ние всех типов приведено в документе «Type Reference»,
recurse => "true" с которым необходимо ознакомиться в любом случае, хо-
}
тя бы для того, чтобы понять все возможности языка Puppet.
Несколько ресурсов могут быть объединены в классы Различные типы позволяют выполнять указанные коман-
или определения. Классы являются законченным описани- ды, в том числе и при выполнении определенных условий
ем системы или сервиса и используются обособленно: (например, изменение конфигурационного файла), рабо-
тать с cron, учетными данными и группами пользователей,
class linux { компьютерами, монтированием ресурсов, запуском и ос-
file {
"/etc/passwd": owner => root, group => root, ↵ тановкой сервисов, установкой, обновлением и удалени-
mode => 644; ем пакетов, работой с SSH-ключами, зонами Solaris и так
"/etc/shadow": owner => root, group => root, ↵
mode => 440 далее. Вот так просто можно заставить обновлять список
} пакетов в дистрибутивах, использующих apt, ежедневно
}
между 2 и 4 часами:
Как и в объектно-ориентированных языках, классы мо-
гут переопределяться. Например, в FreeBSD группой-вла- schedule { daily:
period => daily,
дельцем этих файлов является wheel. Поэтому, чтобы не range => [2, 4]
переписывать ресурс полностью, создадим новый класс }
exec { "/usr/bin/apt-get update":
freebsd, который будет наследовать класс linux: schedule => daily
}
class freebsd inherits linux {
File["/etc/passwd"] { group => wheel };
File["/etc/shadow"] { group => wheel } Обновление за тот период каждой системой будет вы-
} полнено только один раз, после чего задание считается
выполненным и будет удалено с клиентского компьютера.
Для удобства все классы можно вынести в отдельный Язык Puppet поддерживает другие привычные структуры:
файл, который нужно подключать директивой include. Оп- условия, функции, массивы, комментарии и подобные.
ределения могут принимать многочисленные параметры
в качестве аргументов, но не поддерживают наследования Установка Puppet
и используются в том случае, если нужно описать много- Для работы Puppet потребуются Ruby (начиная с версии 1.8.1
кратно используемые объекты. Например, определим до- и выше) с поддержкой OpenSSL и библиотеками XMLRPC,
машний каталог пользователей и команды, необходимые а также библиотека Faster [6]. В репозитарии Ubuntu 7.04,
для создания новой учетной записи: который использовался при тестовой установке, уже вклю-
чен пакет puppy:
define user_homedir ($group, $fullname, $ingroups) {
user { "$name": $ sudo apt-cache search puppet
ensure => present,
comment => "$fullname", puppet - centralised configuration management for networks
gid => "$group",
puppetmaster - centralised configuration manangement control daemon
groups => $ingroups,
membership => minimum,
shell => "/bin/bash",
home => "/home/$name", При инсталляции будут установлены все необходимые
require => Group[$group], пакеты: facter libopenssl-ruby libxmlrpc-ruby.
}

exec { "$name homedir": $ sudo apt-get install puppet puppetmaster

60
администрирование
Проверить наличие библиотек Ruby можно командой: $ puppetd --genconfig > /etc/puppet/puppetd.conf

$ ruby -ropenssl -e "puts :yep" Аналогично можно создать и site.pp на сервере:


yep
$ puppetd --genmanifest > /etc/puppet/manifests/site.pp
~$ ruby -rxmlrpc/client -e "puts :yep"
yep Еще один файл tagmail.conf, позволяет указать почто-
вые адреса, на которые будут отсылаться отчеты. В про-
Если не получено ошибок, значит, все необходимое стейшем случае можно использовать одну строку:
уже включено. Файлы, в которых описывается желатель-
ная конфигурация систем, в терминологии Puppet называ- all: admin@domain.com
ются манифестами (manifests). При запуске демон пытает-
ся прочитать файл /etc/puppet/manifests/site.pp, при его от- Конфигурационных файлов недостаточно, чтобы кли-
сутствии выдает предупреждающее сообщение. При тес- ент мог подключаться к серверу. Для этого необходимо еще
тировании можно указать демону на работу в автономном подписать сертификаты.
режиме, при котором манифест не требуется: Сначала, чтобы сервер узнал о новом компьютере,
на клиентской системе вводим команду:
$ sudo /usr/bin/puppetmasterd --nonodes
$ sudo puppetd --server grinder.com --waitforcert 60 --test
При необходимости к site.pp можно подключать дру- info: Requesting certificate
гие файлы, например, с описаниями классов. Для тесто- warning: peer certificate won't be verified in this SSL session
notice: Did not receive certificate
вого запуска в этот файл можно занести самую простую
инструкцию. Если будет выдана другая строка, следует проверить
работу сервера:
class sudo {
file { "/etc/sudoers": $ ps aux | grep puppet
owner => root,
group => root, puppet 5779 0.0 1.4 27764 15404 ? Ssl 21:49 0:00 ruby /usr/sbin/puppetmasterd
mode => 440,
}
} Межсетевой экран должен разрешать соединения на
node default { порт 8140.
include sudo На сервере получаем список сертификатов, нуждаю-
}
щихся в подписи:
Все конфигурационные файлы, как сервера так и клиен-
тов, расположены в /etc/puppet. Файл fileserver.conf, о кото- $ sudo puppetca --list
ром мы уже говорили, не обязателен и используется только nomad.grinder.com
в том случае, когда Puppet будет работать еще и как файл-
сервер. В Ubuntu в этом файле экспортируется подкаталог И подписываем сертификат клиента:
/etc/puppet/files. В подкаталоге ssl расположены сертифи-
каты и ключи, которые будут использоваться для шифро- $ sudo puppetca –sign nomad.grinder.com
вания при подключениях клиентов. Ключи создаются ав-
томатически при первом запуске puppetmasterd, вручную Теперь клиент может свободно подключаться к серве-
их можно создать командой: ру и получать настройки.
К сожалению, все возможности Puppet в пределах ста-
$ sudo /usr/bin/puppetmasterd --mkusers тьи показать невозможно. Но, как видите, это функциональ-
ный и гибкий инструмент, позволяющий решить большую
Файлы puppetd.conf и puppetmasterd.conf похожи. В них часть задач по одновременному администрированию боль-
указываются некоторые параметры работы демонов на кли- шого числа систем. И самое главное, проекту удалось соб-
ентской системе и сервере. Клиентский файл отличается рать пока небольшое, но постоянно растущее сообщество.
только наличием параметра server, указывающего на ком- Поэтому будем надеяться, что хорошей идее не дадут уме-
пьютер, на котором запущен puppetmasterd: реть или уйти в сторону.
Удачи!
[puppetd]
server = grinder.com
logdir = /var/log/puppet 1. Сайт проекта BladeLogic – http://www.bladelogic.com.
vardir = /var/lib/puppet 2. Сайт проекта OpsWare – http://www.opsware.com.
rundir = /var/run
# отсылаем отчет серверу 3. Сайт проекта Cfengine – http://www.cfengine.org.
report = true 4. Сайт проекта Puppet – http://reductivelabs.com/projects/puppet.
5. Puppet CookBook – http://www.reductivelabs.com/trac/puppet/
Чтобы не печатать все вручную, можно создать шаблон tagspuppet%2Crecipe.
с помощью самого puppetd: 6. Библиотека Faster – http://reductivelabs.com/projects/facter.

№7, июль 2007 61


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

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

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

Н
ачнем с определений. Что такое случаях используется промежуточный По терминологии мира PC-совмес-
операционная система? Следуя слой – программа-загрузчик. Принци- тимых компьютеров встроенным про-
википедии [6] – это программа пиально процесс загрузки ОС выгля- граммно-аппаратным средством слу-
(комплекс программ), которая управ- дит одинаково на всех системах. жит BIOS. При работе с другими сис-
ляет аппаратными средствами ком- Получается, что инсталляция опе- темами обычно используется слово
пьютера и служит средой для выполне- рационной системы – это копирова- firmware.
ния других программ. При включении ние файлов на постоянный носитель На SPARC-совместимых серве-
питания встроенные программно-ап- (с возможным изменением некоторых – рах производства SUN и FUJITSU-
паратные средства по определенным здесь уже используются процессы пер- SIEMENS в качестве firmware в ос-
правилам ищут операционную систе- воначальной конфигурации) и настрой- новном выступает OpenBoot (Open
му, загружают ее в память и передают ка аппаратно-программного комплекса Firmware) [7]. Более подробно работу
дальнейшее управление. В некоторых на загрузку с этого носителя. с OpenBoot можно рассмотреть в со-

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

№7, июль 2007 63


администрирование
Интересно, что официально под- ся настраиваемым параметром. Ког- Solaris Flash Archives
держивается обновление системы да-то стандартным советом было вы- Flash здесь значит не «USB-накопи-
с версии Solaris 8 до 10. Для обновле- делять под область подкачки размер тель», а всего лишь способ инсталля-
ния с более ранних версий (до 8) пред- дискового пространства в два раза ции, который больше похож на клони-
лагается сначала поднять версию ОС больший, чем размер доступной опе- рование (этот термин также употреб-
до максимально возможной. Напри- ративной памяти. Сейчас эти рекомен- ляется в документациии).
мер, с версии Solaris 2.5 до Solaris 9, дации не всегда актуальны – не ред- Суть метода состоит в том, что
после – до Solaris 10. кость встретить серверы с оператив- можно использовать одну рабочую
Все же при заметном повыше- ной памятью размером в несколько ги- систему как шаблон (master system).
нии версии (не релиза) рекомендует- габайт. В таком случае польза большо- И реплицировать эту инсталляцию
ся производить полную инсталляцию го свопа сомнительна. на другие системы, называемые кло-
системы, а не обновлять существую- Требования к частоте процессо- нами (clone system).
щую. Со случаями обновления версии ра по современным меркам совсем Можно «клонировать» системы
сталкиваться не приходилось, даже тя- небольшие. Для работы системы не- как полностью перезаписывая инфор-
жело представить необходимость про- обходим x86-совместимый процес- мацию на носителе (установка «с ну-
ведения подобных работ. Из-за боль- сор с частотой 120 МГц или процес- ля»), так и внося лишь частичные из-
шой гибкости в настройках скорей все- сор SPARC с минимальной частотой менения. Причем в клонировании мо-
го можно будет найти более красивое 200 МГц. жет участвовать не только системное
решение, пример будет дальше. Размер использования пространс- программное обеспечение, но и дру-
тва на жестком диске сильно зависит гие файлы.
Проверка конфигурации от количества установленных пакетов. Этот метод – удобный способ уп-
оборудования Требования могут отличаться от рели- равления большим количеством од-
Solaris 10 может работать на двух ти- за системы и составляют от 2 до 7 Гб нотипных серверов, на которые вре-
пах процессоров: SPARC и x86-сов- дискового пространства. мя от времени приходится наклады-
местимых. Поддерживаются системы, Требования к конкретному релизу вать патчи.
основанные на следующих архитекту- можно посмотреть в соответствующем Например, знакомая любому хос-
рах: UltraSPARC®, SPARC64, AMD64, «Release Notes» на сайте [1] или [4], ес-
теру ситуация, когда время от време-
Pentium и Xeon EM64T. Полный пере- ли вы используете OpenSolaris. ни приходится изменять версию PHP.
чень поддерживаемого оборудования Способ похож на архивирование груп-
можно получить в официальной до- Методы инсталляции Solaris пы файлов и их распаковку на другие
кументации, следуя ссылкам на сай- В официальных документах [1] можно машины.
тах [1, 4]. выделить несколько типов инсталля- Более подробно ознакомиться
Минимальная конфигурация за- ции, рассмотрим их: с этим видом установки Solaris 10 мож-
висит от задач, которые будет обслу- но на сайте [1] в книге No: 817­‑5668‑11
живать устанавливаемая система; Basic или «используя «Solaris 10 Installation Guide: Solaris Flash
желательно иметь четкое представ- программу‑инсталлятор» Archives (Creation and Installation)».
ление, для чего она будет использо- Как следует из названия – это самый
ваться. В зависимости от обслужива- простой вид инсталляции. Custom JumpStart
емых функций требования к аппарат- Под словом «простой» подразуме- Это самый популярный метод установ-
ной конфигурации могут значительно вается «требующий наименьшей ква- ки Solaris. Вернее, самый популярный
отличаться. лификации» системного администра- способ – установка системы по сети,
Начиная с версии Solaris 10 1/06 тора. Процесс установки таким спосо- используя технологию JumpStart.
все x86-совместимые системы долж- бом мало отличается от установки дру- JumpStart отличается от других ме-
ны иметь, как минимум, 256 Мб опера- гих популярных ОС. Он подразумева- тодов подходом к конфигурации систе-
тивной памяти (рекомендуется 512 Мб). ет загрузку временной ОС (с диска CD, мы и особенно полезен, если исполь-
Для предыдущих релизов Solaris 10 или DVD, или используя загрузку по се- зуется несколько серверов под управ-
требования меньше: 128 Мб и 256 Мб ти) и ответы на простые вопросы про- лением Solaris (обычно так и происхо-
соответственно. граммы-инсталлятора. дит – если в организациии появляет-
Для платформ, основанных на тех- В Solaris 10 существует два вида ся система под управлением Solaris –
нологии SPARC, требования к памяти программы-инсталлятора – с тексто- то не одна ).
ниже. Необходимо 128 Мб ОП, жела- вым и графическим интерфейсами. Суть метода – для установки каж-
тельно 256 Мб. Графический инсталлятор использу- дого сервера формируется отдельная
Для обоих видов платформ раз- ет Java, требования к системе в слу- среда выполнения. Другими словами –
мер минимально необходимой ОП так- чае его использования повышаются; заранее формируются ответы на воп-
же зависит от типа инсталляции, о чем в некоторых случаях могут быть выше, росы, возникающие при инсталляции.
будет сказано позже. чем требования к рабочей системе. В официальной документации реко-
Система по умолчанию будет ис- Этот вид установки подробно рас- мендуется использовать программу-
пользовать 512 Мб виртуальной па- смотрен в нескольких документах инсталлятор для настройки неболь-
мяти (swap), что, конечно же, являет- на ресурсе [1]. шого количества серверов. Осмелюсь

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

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


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

№7, июль 2007 65


администрирование
Например, как-то раз мне при- Reduced Network Support Рекомендации по дисковому про-
шлось столкнуться с интересным слу- Software Group странству составляют 6,8 Гб.
чаем. Долгое время работал сервер Содержит минимум пакетов, необхо-
под управлением Solaris 8. Одной из димых для загрузки и запуска системы В большинстве случаев устанав-
функций этого сервера была обработ- с ограниченной поддержкой сетевых ливается максимально возможный
ка электронной почты. Понадобилось сервисов. Этот набор программ пре- набор пакетов. Иногда сторонние про-
настроить дополнительную проверку доставляет возможность многополь- изводители программного обеспече-
почты через внешний фильтр – milter. зовательской работы через консоль ния (например, Cisco или Oracle) вы-
В Solaris 8 использовался Sendmail и включает в себя утилиты для управ- ставляют свои требования по набору
версии 8.11 с патчами от SUN. ления системой. установленных пакетов, патчей и их
Для использования технологии Также этот системный набор позво- версий.
milter требовалась версия не ниже 8.12, ляет настроить сетевые интерфейсы, Различные методы инсталляции
а это уже из набора Solaris 9. Обнов- но не запускает сетевые сервисы. могут предоставлять разные возмож-
ление версии системы не рассматри- Рекомендации по дисковому про- ности по управлению устанавливаемы-
валось – слишком много других серви- странству – 2 Гб. ми пакетами. Максимальную гибкость
сов работало на сервере, в том числе при установке можно достигнуть, ис-
программы сторонних разрабочиков. Core System Support пользуя метод JumpStart.
На другой машине был собран пакет Software Group Разбиение системного ПО на па-
sendmail с нужной функциональнос- Содержит минимум пакетов, необходи- кеты имеет одну неприятную особен-
тью, после чего ПО для почтового сер- мых для полноценной работы системы ность, проявляющуюся в момент инс-
виса было заменено штатными средс- с сетевыми сервисами. талляции.
твами системы. Время простоя одно- Рекомендации по дисковому про- Установка системы пакетами за-
го сервиса составило всего несколько странству – 2 Гб. нимает гораздо больше времени,
минут; остальная функциональность чем другими способами. Каждый па-
системы не пострадала. End User Solaris Software Group кет в момент установки кроме непос-
Разбиение системного ПО на па- Содержит пакеты, необходимые для ра- редственно копирования файлов про-
кеты предоставляет большую гиб- боты с сетвыми сервисами, а также веряет зависимости, записывает слу-
кость в момент установки и дальней- оконный менеджер и набор программ жебную информацию, может выпол-
шей работы. Администратор может ус- с графическим интерфейсом. нять дополнительные действия.
тановить не только стандартные набо- Рекомендации по дисковому про- Нередко случается, что установ-
ры ПО, но и легко создавать собствен- странству – 5,3 Гб. ка Solaris растягивается на несколь-
ные. Например, для экономии мес- ко часов.
та на дисках. Перейдем к рассмотре- Developer Solaris Software Group В случае если инсталляцию систе-
нию наборов. Содержит все файлы из предыдуще- мы необходимо провести очень быс-
го набора плюс дополнительные паке- тро – придется использовать другие
Стандартные наборы программ ты, полезные для разработчиков. Они способы, например, Flash Archives.
В Solaris 10 предопределено 6 набо- включают в себя библиотеки, файлы
ров системных пакетов. Для каждого заголовков, документацию и инстру- Стандартные вопросы
набора существуют рекомендации по менты разработки. Перед инсталляцией системы необ-
использованию дискового пространс- Компиляторы в этот набор не вхо- ходимо знать ответы на вопросы, воз-
тва, которые описывают использова- дят, к сожаленью, их придется достав- никающие в большинстве случаев ус-
ние следующих областей: лять отдельно. тановки. Все вопросы с возможны-
n Виртуальная память (Swap). Требования к дисковому пространс- ми ответами перечислены в табли-
n Патчи. тву увеличились до 6,6 Гб. це «Checklist for Installation» в книге
n Дополнительное программное No: 817‑0544‑12 «Solaris 10 Installation
обеспечение (пакеты). Entire Solaris Software Group Guide: Basic Installations».
Содержит все файлы из предыдущего Сами вопросы и ответы на них вы-
Скорее всего установленная систе- набора плюс дополнительные пакеты, глядят так же, как в программе-инс-
ма будет занимать меньше места, чем полезные для работы серверов. талляторе. Ниже приведены краткие
написано в рекомендациях. Рекомендации по дисковому про- описания вопросов, возможные отве-
Системные пакеты можно най- странству составляют 6,7 Гб. ты, ответы по умолчанию (методы отве-
ти на установочном диске (или на ус- тов могут отличаться и зависят от типа
тановочном сервере) в директории Entire Solaris Software Group инсталляции). Повторять полный спи-
Solaris_10/Product/. Plus OEM Support сок вопросов и ответов не вижу смыс-
Из каких конкретно пакетов состоит Содержит все файлы из предыдущего ла, лишь добавлю, как ответы на неко-
каждый набор, можно посмотреть там же набора плюс дополнительные пакеты, торые из них отражаются на настрой-
в файле Solaris_10/Product/.clustertoc. содержащие драйверы устройств, ко- ке системы.
Рассмотрим стандартные наборы торые не были подключены в момент Кроме конфигурационных фай-
пакетов Solaris 10 подробнее. инсталляции системы. лов настройку системы можно про-

66
администрирование
изводить, используя утилиты sys- Kerberos Например, информация об уста-
unconfig(1M) и sysidtool(1M). Файлы с настройками Kerberos хранят- новленных пакетах хранится в файле
ся в папке /etc/krb5/. /var/sadm/install/contents.
Является ли система Файлы журнала о прошедшем про-
частью сети? Сервисы имен цессе инсталляции системы хранятся
Ответ на этот вопрос никаких конк- Solaris может использовать информа- в каталоге /var/sadm/system/logs/ и /var/
ретных изменений в системе не дела- цию о системных настройках из раз- sadm/install/logs/.
ет. Только влияет на последователь- личных источников. Информация об
ность следующих вопросов – раздел использовании всех служб берет- Выводы
«настройки сети». ся в первую очередь из файла /etc/ По каждому виду инсталляции сущест-
nsswitch.conf. Настройки конкретных вует отдельная книга, также встреча-
Настройки сети служб можно посмотреть в соотвест- ются статьи с конкретными примерами.
Для каждого сетевого интерфейса, вующих разделах документации. Вообще процесс установки современ-
в том числе использующего DHCP ных ОС выглядит примерно одинако-
для своей настройки, необходим файл Маршруты по умолчанию во, по крайней мере в простейших слу-
/etc/hostname.hme0, где hme0 – имя ин- Информация о маршрутах по умолча- чаях. Отличия проявляются в тонкос-
терфейса. нию хранится в файле /etc/defaultrouter, тях настройки и используемой терми-
Для протокола IPv6 используются по одной строчке на маршрут. Про- нологии. Как видно, легендарная опе-
файлы вида: /etc/hostname6.hme0. грамма-инсталлятор предлагает ука- рационная система предоставляет ад-
В этих файлах лежат настройки ин- зать только один маршрут. Файл чи- министратору большую свободу в вы-
терфейсов, используемые командой тается только при загрузке системы. боре действий уже в процессе инстал-
ifconfig. Можно ограничиться одним Текущие настройки маршрутизации ляции. Именно гибкостью настройки
файлом для настройки, но обычно до- на работающей системе можно пос- Solaris всегда отличался от других сис-
полнительно используется информа- мотреть командой: тем. Возможно, во многих случаях она
ция из других источников. В основном не пригодится – тогда будут использо-
это файлы /etc/hosts и /etc/netmasks. netstat -rn ваться стандартные варианты настро-
Могут использоваться не только ек. Работать с «динозавром» совсем
файлы, но и другие информационные Управлять настройками маршрути- не страшно.
службы: DNS, LDAP, NIS, NIS+ и т. п. зации можно командой route.
Откуда конкретно берется информа- Осмелюсь напомнить, что для кор- 1. http://docs.sun.com – официальная до-
ция, можно посмотреть в файле /etc/ ректной работы шлюз должен нахо- кументация. У многих почему-то воз-
nsswitch.conf. диться в той же подсети, что и один никают проблемы с использовани-
Подробную информацию по ис- из работающих интерфейсов. ем этого ресурса. Документации мно-
пользуемым файлам можно посмот- Также во время инсталляции сис- го, и она очень хорошо структуриро-
реть в соответствующих разделах до- тема может попытаться определить вана. Вместо стандартного «поиска
кументации. настройки маршрутизации самостоя- по словам» мне, например, удобно ис-
тельно, используя протокол ICMP, если пользовать вкладку «Browse Product
Настройки DHCP конфигурация сети позволяет. Documentation». По крайней мере, ког-
Если сетевой интерфейс использует да знаешь, что ищешь.
протокол DHCP для своей настройки, TimeZone, locales 2. http://sunsolve.sun.com – документация,
то в системе создается файл /etc/dhcp. Информация о временной зоне, гео- патчи, обновления, полезные ссылки.
hme0, где hme0 – имя интерфейса. графическом регионе и другая хра- Для использования некоторых ресур-
нится в файле /etc/TIMEZONE, кото- сов потребуется регистрация или плат-
Имя системы рый является символической ссылкой ный уровень поддержки.
Часто hostname путают с именами ин- на /etc/default/init. 3. http://www.sun.com/bigadmin/home/
терфейсов, хранящимися в файлах index.html – ресурс для системных ад-
/etc/hosts, /etc/hostname*. Интерфейсов Остальные вопросы министраторов и сообщества. На этом
может быть несколько, а имя у систе- Остальные вопросы касаются раз- сайте можно встретить множество по-
мы – одно. В системном руководстве бивки дисков, набора устанавливае- лезных советов или примеров настрой-
(man) говорится, что если сетевых ин- мых пакетов и т. п. Конкретные воп- ки – «How To».
терфейсов несколько, то именем сис- росы и ответы на них зависят от типа 4. http://www.opensolaris.org.
темы служит имя Primary Interface. На инсталляции. 5. http://www.opennet.ru/mp/solaris – раз-
практике дело обстоит несколько ина- Настройки файловой системы хра- дел opennet.ru, посвященный Solaris.
че. Начиная с версии 10, информация нятся в файле /etc/vfstab, синтаксис Где, кроме всего прочего, можно най-
об имени системы хранится в следую- которого походит на подобные файлы ти подборку полезных ссылок на рус-
щих файлах: из других систем. Информацию об уста- ском языке.
n /etc/nodename; новленной системе можно посмотреть 6. http://ru.wikipedia.org.
n /etc/inet/hosts; командой showrev с различными ключа- 7. http://playground.sun.com/1275 – домаш-
n /etc/inet/ipnodes. ми, а также в каталоге /var/sadm. няя страница OpenBoot.

№7, июль 2007 67


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

Построение отказоустойчивой системы


с помощью Oracle Physical Standby

Сергей Косько

Развернув информационную систему на базе СУБД Oracle и организовав надёжную стратегию


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

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

О
дин из вариантов такой реплика- передаётся с помощью данных, запи-
ции можно реализовать с помо- сываемых процессом LGWR. В режи-
щью специальной базы данных ме максимальной производительнос-
Oracle Standby. Её можно применять ти возможна передача изменений как
совместно с обычным резервным ко- LGWR, так и ARCn.
пированием. Режим Standby DB обес- В случае необходимости такая база
печивает опция Data Guard базы дан- может быть в короткий срок активиро-
ных Oracle. Конфигурация Data Guard вана в качестве производственной.
состоит из одной производственной Поскольку БД Logical Standby не яв-
и одной или более резервных баз дан- ляется точной копией основной ба-
ных standby, которые находятся в осо- зы и не поддерживает некоторые ти-
бом режиме, предусматривающем не- пы данных, SQL-команды, имеет тре-
прерывный приём и применение потока бования по обеспечению уникальнос-
изменений от производственной базы. ти строк в таблицах [4], рассмотрим Структура Oracle Data Guard
Изменения передаются по универсаль- реализацию именно Physical Standby
ной сети между разнесёнными геогра- DB. Мне кажется, что использовать БД n Режим базы данных должен быть
фически серверами средствами Oracle Logical Standby лучше не как резерв- ARCHIVELOG.
Net [1]. Упрощённую схему взаимодейс- ную копию, а в качестве базы для от- n Необходимо использовать про-
твия смотрите на рисунке. чётов. Выберем для работы основ- граммное обеспечение Oracle
В зависимости от конкретных тре- ной и резервной баз следующие на- Server версии Enterprize Edition.
бований по времени восстановления стройки: производственная база ра- В тестах будем использовать вер-
и допустимой потери данных при ава- ботает в режиме maximum availability, сию Oracle10.2 EE for Solaris.
рии (recovery time objective, recovery переданные изменения применяются
point objective [2]). Возможны различ- резервной базой в режиме Real-Time Подготовка рабочей
ные сценарии реализации: Apply Redo. Для такого режима рабо- конфигурации
n Physical standby DB – резервная ты инициатором передачи информа- Итак, у нас имеется работающая про-
база данных является точной фи- ции об изменениях выступает как раз изводственная (primary) база данных
зической копией основной, нахо- процесс LGWR. Разница между режи- Oracle, расположенная на сервере
дится в монтированном состоянии мами защиты заключается в том, что в Poltava, и нам необходимо создать ре-
и при этом переносится поток redo- режиме maximum protection транзакция зервную базу standby на сервере Fastiv.
информации. фиксируется только тогда, когда за- Необходимо подготовить конфигура-
n Logical standby DB – резервная ба- пись произведена и в локальные жур- ционные файлы и сделать дополни-
за данных не является точной копи- налы, и удалённо, в случае невозмож- тельные настройки.
ей основной, открыта в режиме чте- ности удалённой записи база данных Пусть имя базы будет «TST», при-
ния–записи и при этом переносит- останавливается, а в режиме maximum своим для производственной primary-
ся поток SQL-команд. performance для продолжения работы базы значение ORACLE_SID=ORCL,
достаточно только локальной записи, для standby – DB ORACLE_SID=ORCL1.
Конфигурация Oracle Data Guard и основная БД продолжает свою рабо- Файлы primary DB находятся в катало-
может находиться в трёх режимах за- ту, даже если связь с резервной базой ге /tstb/ORCL, файлы standby DB – в ка-
щиты: максимальной производитель- отсутствует. талоге /tstb/ORCL1.
ности (maximum performance), мак- Режим maximum availability пред- Для работы БД standby присваи-
симальной доступности (maximum ставляет компромиссный вариант, пе- вать различные значения перемен-
availability) или максимальной защи- реключаясь между двумя режимами ной ORACLE_SID для окружения ос-
ты (maximum protection) [3]. Измене- автоматически. Если связь работа- новной и резервной баз данных необ-
ния передаются копированием журна- ет без ошибок, передача происходит ходимости нет, но это позволяет сде-
лов базы данных, текущих или архив- синхронно, если произошел сбой, ав- лать так, чтобы файлы двух баз не на-
ных. Их запись осуществляется двумя томатически осуществляется переход кладывались друг на друга. Это поз-
процессами LGWR или ARCn. Процесс в менее строгий режим. После устра- воляет перемещать базы между сер-
LGWR ведёт запись активных журна- нения сбоев режим максимальной за- верами, временно или в тестовых це-
лов, дополнительные настройки вы- щиты восстанавливается [5]. лях совмещать их на одном и том же
нуждают его передавать изменения на Что необходимо для создания тес- сервере, имеющем два сетевых адрес-
резервный сервер с помощью так на- товой среды: са (poltava и fastiv).
зываемых standby redo log-файлов. n Два сервера одинаковой архитек- Необходимо выполнить следую-
Процесс ARCn переносит обычные ар- туры, они могут отличаться по коли- щие действия:
хивные журналы, дополнительные на- честву процессоров, памяти, дис- Вк лючим режим force logging
стройки вынуждают его передавать их ков, релизом операционной систе- на производственной системе для при-
ещё и на удалённый сервер. Если вы- мы и т. п. Пусть сервер primary DB нудительной записи в журналы БД ин-
браны режимы максимальных доступ- будет называться Poltava, а сервер формации, даже для так называемых
ности или защиты, поток изменений standby – Fastiv. операций Nologging:

№7, июль 2007 69


администрирование
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')
Создадим файлы standby redo log. Они нужны толь-
ко для работы БД standby, но мы создадим их и на primary, Настроим Oracle Net для сетевых адресов Poltava
и на standby, в случае переключения ролей между базами и Fastiv.
не будет необходимости в их создании. Пример настроек файлов listener.ora и tnsnames.ora при-
Файлы standby redo необходимо создать не меньшего ведены в листинге 3.
размера, чем online redo log, и в количестве n+1 от количес-
тва redo group (cм. листинг 1). Листинг 3. Настройки Oracle Net

# listener.ora Network Configuration File:


Листинг 1. Добавление файлов Standby Redo # /ora/oracle10/network/admin/listener.ora
# Generated by Oracle configuration tools.
#!/bin/sh
# LISTENER =
sqlplus "/ as sysdba" <<EOF (DESCRIPTION_LIST =
ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ↵ (DESCRIPTION =
'/tstb/ORCL/redo01.stb' SIZE 100M REUSE; (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0) ↵
ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ↵ (PORT = 1525))
'/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 ↵ SID_LIST_LISTENER =
'/tstb/ORCL/redo04.stb' SIZE 100M REUSE; (SID_LIST =
exit (SID_DESC =
EOF (GLOBAL_DBNAME = TST)
(ORACLE_HOME = /ora/oracle10)
(SID_NAME = ORCL)
Установим параметры в файлах параметров init.ora/spfile. )
ora для primary и standby (см. листинг 2). (SID_DESC =
(GLOBAL_DBNAME = TST)
(ORACLE_HOME = /ora/oracle10)
Листинг 2. Список параметров файла init.ora/spfile.ora (SID_NAME = ORCL1)
)
*.audit_file_dest='/ora/admin/ORCL/adump' )
*.background_dump_dest='/ora/admin/ORCL/bdump'
*.control_files='/tstb/ORCL/control01.ctl', ↵
'/tstb/ORCL/control02.ctl', ↵ # tnsnames.ora Network Configuration File:
'/tstb/ORCL/control03.ctl' # /ora/oracle10/network/admin/tnsnames.ora
*.core_dump_dest='/ora/admin/ORCL/cdump' # Generated by Oracle configuration tools.
*.db_name='TST'
*.log_archive_format='log_%t_%s_%r.dbf' Poltava =
*.remote_login_passwordfile='EXCLUSIVE' (DESCRIPTION =
*.STANDBY_FILE_MANAGEMENT=AUTO (ADDRESS_LIST =
*.DB_UNIQUE_NAME=poltava (ADDRESS = (PROTOCOL = TCP)(HOST = poltava) ↵
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(poltava,fastiv)' (PORT = 1525))
*.LOG_ARCHIVE_DEST_1='LOCATION=/tstb/log1/ ↵ )
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) ↵ (CONNECT_DATA =
DB_UNIQUE_NAME=poltava' (SID = ORCL)
*.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 Fastiv =
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE (DESCRIPTION =
*.FAL_SERVER=poltava (ADDRESS_LIST =
*.FAL_CLIENT=fastiv (ADDRESS = (PROTOCOL = TCP)(HOST = fastiv) ↵
*.STANDBY_ARCHIVE_DEST=/tstb/log1/ (PORT = 1525))
*.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE )
(CONNECT_DATA =
(SID = ORCL1)
)
*.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'
Создание резервной БД standby
*.db_name='TST' Создадим резервные копии базы данных и файла паро-
*.log_archive_format='log_%t_%s_%r.dbf' лей и перенесем скопированные файлы на резервный сер-
*.user_dump_dest='/ora/admin/ORCL1/udump'
*.STANDBY_FILE_MANAGEMENT=AUTO вер Fastiv.
*.DB_UNIQUE_NAME=fastiv Поскольку значения ORACLE_SID для основной и ре-
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(poltava,fastiv)'
*.LOG_ARCHIVE_DEST_1='LOCATION=/tstb/log/ ↵ зервной баз отличаются, файлы паролей тоже будут иметь
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) ↵ разные имена, например, orapwORCL и orapwORCL1.
DB_UNIQUE_NAME=fastiv'
*.LOG_ARCHIVE_DEST_2='SERVICE=poltava LGWR SYNC AFFIRM ↵ Создадим standby control file и скопируем его на сервер
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) ↵ standby в местоположение, указанное в файле параметров
DB_UNIQUE_NAME=poltava'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE базы данных standby:
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.FAL_SERVER=poltava SQL>ALTER DATABASE CREATE STANDBY CONTROLFILE AS ↵
*.FAL_CLIENT=fastiv '/tmp/standby.ctl';
*.STANDBY_ARCHIVE_DEST=/tstb/log/

70
администрирование
Переключим основную базу данных в режим maximum Как можно видеть в скрипте, для переключения ролей не-
availability следующей командой: обходимо иметь доступ к каждой из баз данных, участву-
ющих в операции.
SQL>STARTUP MOUNT;
SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE ↵ Листинг 6. Обмена ролями между базами Poltava и Fastiv
AVAILABILITY;
#!/bin/sh
Базы данных готовы к работе. Теперь обе базы данных #
sqlplus "/ as sysdba" <<EOF
можно запускать. spool switchover.log
REM connect primary
connect sys/manager@poltava as sysdba
Операции с БД во время работы column SWITCHOVER_STATUS format A20 heading ↵
Во время работы необходимо выполнять определённые 'Switchover status|primary'
SELECT SWITCHOVER_STATUS FROM V\$DATABASE;
действия – пуск, остановка, открытие для чтения, регис- column DATABASE_ROLE format A20 heading ↵
трация пропущенных логов, активация резервной базы 'Role before|switchover'
select DATABASE_ROLE from V\$DATABASE;
(failover), обмен статусом (switchover). Рассмотрим эти опе- ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
рации: SHUTDOWN IMMEDIATE;
Скрипт stbstart отвечает за старт БД standby в режиме STARTUP MOUNT;
real-time apply. Остановку БД standby обеспечивает скрипт column DATABASE_ROLE format A20 heading ↵
'Role after|switchover'
stbshut (см. листинг 4). select DATABASE_ROLE from V\$DATABASE;
REM connect standby db on redo apply mode
Листинг 4. Пуск и остановка БД Physical Standby connect sys/manager@fastiv as sysdba
column SWITCHOVER_STATUS format A20 heading ↵
#!/bin/sh 'Switchover status|standby'
SELECT SWITCHOVER_STATUS FROM V\$DATABASE;
column DATABASE_ROLE format A20 heading ↵
#
sqlplus "/ as sysdba" << EOF
startup nomount; 'Role before|switchover'
alter database mount standby database ; select DATABASE_ROLE from V\$DATABASE;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING ↵ ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
CURRENT LOGFILE ALTER DATABASE OPEN;
DISCONNECT FROM SESSION; REM if in read only, do not open - restart
exit REM SHUTDOWN IMMEDIATE;
EOF REM STARTUP;
column DATABASE_ROLE format A20 heading ↵
'Role after|switchover'
#!/bin/sh select DATABASE_ROLE from V\$DATABASE;
exit
EOF
#
sqlplus "/ as sysdba" << EOF
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SHUTDOWN IMMEDIATE; Failover – cкрипт, активирующий резервную базу в слу-
exit
EOF чае аварии на базе primary. Поскольку резервной базы боль-
ше нет, перед активацией резервной базы её следует пере-
Проверим механизм передачи изменений переключе- вести в режим maximum performance (см. листинг 7).
нием журналов. На primary:
SQL>ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE ↵
PERFORMANCE;
SQL>ALTER SYSTEM SWITCH LOGFILE;
Регистрация пропущенных логов наглядно показана
на standby: в листинге 8.

SQL> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS ↵ Листинг 7. Активация резервной базы данных в случае аварии
FROM V$STANDBY_LOG;
#!/bin/sh
Скрипт stbreadonly отвечает за запуск БД standby в ре- #
sqlplus "/ as sysdba" <<EOF
жиме read-only (см. листинг 5). Доставка Redo в этом случае spool failover.log
продолжается, однако изменения будут отложены до выхо- column DATABASE_ROLE format A15 heading ↵
'Role before|switchover'
да из этого режима. select DATABASE_ROLE from V\$DATABASE;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE ↵
FINISH FORCE;
Листинг 5. Запуск БД standby в режиме read-only ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE ↵
#!/bin/sh PERFORMANCE;
# ALTER DATABASE OPEN;
sqlplus "/ as sysdba" << EOF column DATABASE_ROLE format A15 heading ↵
spool readonly.log 'Role after|switchover'
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; select DATABASE_ROLE from V\$DATABASE;
alter database open read only; exit
exit EOF
EOF

Листинг 8. Определение и разрешение вручную пропусков


Switchover – скрипт для смены ролей между база- передачи журналов
ми данных. Необходимо, чтобы БД primary была открыта,
SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# ↵
а standby была в режиме mount или recover (см. листинг 6). FROM V$ARCHIVE_GAP;

№7, июль 2007 71


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

MSG1=`echo "${MSG}" | egrep -i "ora-"` 1. http://download-uk.oracle.com/docs/cd/B19306_01/server.102/


if [ -n "$MSG1" ] b14239/concepts.htm#g1049956 – механизм работы Oracle Data
then Guard.
echo "\n${HOST}:${filename1}:${MSG1}\n"| /bin/mail ↵
${MYMAIL} 2. http://download-uk.oracle.com/docs/cd/B19306_01/server.102/
fi b14210/hadesign.htm#i1006243 – понятие RTO и RPO.
fi
done 3. http://download-uk.oracle.com/docs/cd/B19306_01/server.102/
b14239/log_transport.htm#i1179318 – режимы защиты Oracle
Это можно сделать, например, с помощью пакета Data Guard.
fetchlog [6]. На базе этого программного обеспечения со- 4. http://download-uk.oracle.com/docs/cd/B19306_01/server.102/
здан скрипт fetchalert (см. листинг 9), который можно за- b1423 9/c reate _ l s.ht m#i76 6 4 6 – о г р а н ич е н и е Lo gi c al
пускать с помощью демона crond: Standby DB.
5. http://download-uk.oracle.com/docs/cd/B19306_01/server.102/
testcase$EDITOR=vi;export EDITOR b14239/scenarios.htm#i1008082 – различные сценарии реали-
testcase$crontab -e
testcase$0,15,30,45 * * * * /usr/local/bin/fetchalert ↵ зации Oracle Data Guard.
>/dev/null 2>&1 6. http://sourceforge.net/projects/fetchlog – проект fetchlog.

72
bugtraq

Несколько уязвимостей Множественные уязвимости в Asterisk


в Microsoft Windows Active Directory Программа: Asterisk Open Source 1.0.x, Asterisk Open Source
Программа: Microsoft Windows 2000 Advanced Server, 1.2.x версии до 1.2.22, Asterisk Open Source 1.4.x версии
Microsoft Windows 2000 Datacenter Server, Microsoft Windows до 1.4.8, AsteriskNOW pre-release версии до beta7, Asterisk
2000 Server, Microsoft Windows Server 2003 Datacenter Edition, Business Edition A.x.x, Asterisk Business Edition B.x.x версии
Microsoft Windows Server 2003 Enterprise Edition, Microsoft до B.2.2.1, Asterisk Appliance Developer Kit версии до 0.5.0,
Windows Server 2003 Standard Edition, Microsoft Windows s800i 1.0.x версии до 1.0.2.
Server 2003 Web Edition, Microsoft Windows Storage Server Опасность: Высокая.
2003. Описание: 1. Уязвимость существует из-за ошибки про-
Опасность: Средняя. верки границ данных в реализации Asterisk STUN. Удален-
Описание: 1. Уязвимость существует из-за ошибки при об- ный пользователь может с помощью специально сформи-
работке количества конвертируемых атрибутов в LDAP-за- рованных RTP-пакетов аварийно завершить работу при-
просах. Удаленный пользователь может с помощью спе- ложения. Для удачной эксплуатации уязвимости должны
циально сформированного LDAP-запроса вызвать отказ быть включены: chan_sip, chan_gtalk, chan_jingle, chan_h323,
в обслуживании или выполнить произвольный код на це- chan_mgcp или chan_skinny.
левой системе. Для успешной эксплуатации уязвимости 2. Уязвимость существует из-за ошибки проверки гра-
на Windows Server 2003 требуется валидная учетная за- ниц данных в драйвере канала Asterisk Skinny (chan_skinny).
пись. Удаленный пользователь может с помощью специально
2. Уязвимость существует из-за ошибки при обработ- сформированных пакетов, содержащих в поле size данные
ке LDAP-запросов. Удаленный пользователь может с помо- о меньшем размере пакета, чем его реальный размер, ава-
щью специально сформированного LDAP-запроса времен- рийно завершить работу приложения. Для успешной эксплу-
но остановить работу службы. атации уязвимости chan_skinny должен быть включен.
URL производителя: www.microsoft.com. 3. Ошибка разыменования нулевого указателя обнару-
Решение: Установите исправление с сайта производите- жена в драйвере канала Asterisk IAX2 (chan_iax2). Удален-
ля. ный пользователь может с помощью специально сформи-
рованных LGRQ- и LAGRP-фреймов вызвать отказ в обслу-
живании приложения. Для успешной эксплуатации уязви-
Выполнение произвольного кода мости должен быть включен chan_iax.
в Microsoft IIS 4. Уязвимость существует из-за ошибки проверки гра-
Программа: Microsoft Internet Information Services (IIS) 5.1, ниц данных в драйвере канала Asterisk IAX2 (chan_iax2)
Microsoft Windows XP. при обработке RTP-фреймов. Удаленный пользователь мо-
Опасность: Средняя. жет послать слишком большой пейлоад (более 4096 байт)
Описание: Уязвимость существует из-за ошибки при обра- в голосовых или видеофреймах, вызвать переполнение сте-
ботке URL-запросов. Удаленный пользователь может с по- ка и выполнить произвольный код на целевой системе.
мощью специально сформированных URL-запросов к веб- URL производителя: www.asterisk.org.
странице, находящейся на уязвимом сервере, выполнить Решение: Установите последнюю версию с сайта произ-
произвольный код на целевой системе. Пример: http://[host]/ водителя.
[dir]/.dll/%01~0. Для удачной эксплуатации [dir] должна быть
виртуальной директорией, сконфигурированной с приви- Уязвимость при обработке CAB-
легиями Scripts & Executables. и RAR‑архивов в продуктах Symantec
URL производителя: www.microsoft.com. Программа: Очень большой список (подробнее смотрите
Решение: Установите исправление с сайта производите- на сайте производителя).
ля. Опасность: Высокая.
Описание: 1. Уязвимость существует из-за ошибки про-
верки границ данных в компоненте Symantec Decomposer
Уязвимость при обработке RAR-архивов при обработке CAB-архивов. Удаленный пользователь мо-
в ClamAV жет с помощью специально сформированного CAB-архива
Программа: ClamAV версии до 0.91. выполнить произвольный код на целевой системе.
Опасность: Средняя. 2. Уязвимость существует из-за ошибки проверки гра-
Описание: Уязвимость существует из-за ошибки разымено- ниц данных в компоненте Symantec Decomposer при обра-
вания нулевого указателя в файле libclamav/unrar/unrarvm.c ботке RAR-архивов. Удаленный пользователь может с по-
при обработке RAR-архивов. Удаленный пользователь мо- мощью специально сформированного RAR-архива вызвать
жет с помощью специально сформированного RAR-архива зацикливание приложения.
аварийно завершить работу приложения. URL производителя: www.symantec.com.
URL производителя: www.clamav.net. Решение: Установите исправление с помощью LiveUpdate.
Решение: Установите последнюю версию 0.91 с сайта про-
изводителя. Составил Александр Антипов

№7, июль 2007 73


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

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

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

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

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

№7, июль 2007 75


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

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

№7, июль 2007 77


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

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

Кирилл Сухов

Требования к веб-разработке постоянно растут. Если для какого-нибудь программиста


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

78
веб-программирование
WEB 2.0 – маркетинг на марше? конструкции document.getElementById(), но имеет несколь-
Если говорить откровенно, когда в мире веб-разработчи- ко больший функционал. Она может принимать в качестве
ков случился некий «AJAX-бум», я был настроен довольно аргумента как id элемента, так и сам элемент. Аргументов
скептически. В чём, собственно, революция? В возможнос- может быть более одного, и в этом случае функция возвра-
ти направлять запрос к серверу и получать ответ без пере- щает массив элементов.
загрузки страницы? Но это и так уже было. Выучить четы-
ре метода объекта XMLHttpRequest и стать разработчиком allNodes = $("firstDiv", "secondDiv");
for(i = 0; i < allNodes.length; i++) {
WEB 2.0? Звучит несерьёзно. alert(allNodes[i].innerHTML);
Со временем мне пришлось поменять свою точку зре- }
ния. Я понял, что WEB 2.0 – это не только маркетинговый
термин, это новый подход к веб-программированию, поз- Функция $F(id) возвращает значение полей ввода, при-
воляющий рассматривать результат труда не как html-стра- нимая аргументом идентификатор поля. Возможно, эта мис-
ницы, а как полноценные приложения. сия покажется не очень принципиальной, но применение
Впрочем, не будем на этом останавливаться, на эту те- $() и $F() по крайней мере освобождают время для более
му уже сломано немало копий. Я просто хочу рассказать глобальных задач. Кроме того, эта конструкция также мо-
об инструменте, помогающем перейти к WEB 2.0 вполне жет принимать в качестве аргумента не только идентифи-
безболезненно. катор, но и сам DOM-элемент.
Новый подход диктует новые требования, в частности, Следующая функция из этой компании – document.get
язык программирования JavaScript, который многие раз- ElementsByClassName. Вообще использовать имя клас-
работчики считали чем-то вторичным и не заслуживаю- са для получения DOM (HTML) элемента, приём неновый,
щим внимания, вышел на первый план. Библиотеки, об- но требующий некоторых телодвижений, вроде перебора
легчающие работу с ним, начали создаваться со време- всех подобных элементов, поиска нужного класса в слож-
ни его возникновения, но именно сейчас они как никогда ной структуре документа. Теперь мы избавлены от этой
актуальны. нудной работы.
Я хочу рассказать о библиотеке, основное предназна- Ниже представлен пример использования этой функ-
чении которой – обеспечить комфортную жизнь веб-разра- ции:
ботчику, снабдить его новыми возможностями.
<head>
Знакомьтесь – Prototype <script>
document.getElementsByClassName('foo');
Что собой представляет Prototype? Это свободно рас- // -> [HTMLElement, HTMLElement] (div#one, div#two)
document.getElementsByClassName('thud');
пространяемая JavaScript-библиотека, значительно об- // -> [HTMLElement, HTMLElement, HTMLElement] ↵
легчающая жизнь разработчика. Она написана Сэмом (div#two, li#item_one, li#item_two);
document.getElementsByClassName('thud', $('list'));
Стефенсоном (Sam Stephenson) и доступна по адресу // -> [HTMLElement, HTMLElement] (li#item_one, ↵
http://prototype.conio.net. Последняя версия (на момент на- li#item_two)
</script>
писания статьи) пронумерована как 1.5.1. </head>
Сама библиотека занимает всего 72 Кб и распространя- <body>
<div id="one" class="foo">Single class name</div>
ется по свободной лицензии (MIT-style license). <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>
<script src=prototype.js></script> </ul>
</body>
и вся мощь библиотеки к вашим услугам.
Что мы получим в результате? Совсем не набор ком- Функция $A() представляет собой удобный конструктор
понентов или каких-либо «виджетов», а коллекцию объ- массивов, преобразуя к этому типу данных любую коллек-
ектов и их методов, из которых можно конструировать цию объектов, принимаемую в качестве аргумента.
свои библиотеки и расширения. Prototype – это библиоте- Функция $W() выполняет вполне банальную, но час-
ка для построения собственных библиотек, именно поэто- то встречающуюся задачу – приведение строки к масси-
му она используется, например, в Ruby On Rails, Rico и дру- ву. Тут всё просто:
гих framework-средах.
w('apples bananas kiwis')
// возвращает массив ['apples', 'bananas', 'kiwis']
Приятные мелочи
С них обычно начинают описание библиотеки. Пусть они Функция $H() предназначена для работы с хэш-масси-
принципиально не важны, но очень удобны. Должен заме- вами. Она возвращает объект класса Hash и предоставля-
тить, что к этому удобству, как и вообще ко всему хороше- ет методы для работы с ним.
му, быстро привыкаешь. Прежде всего это Hash.merge() – добавляющий новые
Прежде всего это упрощение синтаксиса обращения ключ/значение, each() – перебирающий все ключи/значе-
к DOM-элементам и их свойствам посредством функций ния массива, а также методы toJSON и toQueryString, на-
$() и $F(). Первая из них является заменой привычной значения которых вполне ясно по названиям.

№7, июль 2007 79


веб-программирование
Ниже представлен пример работы функции $H и объ- В данном случае варианты перебора касаются разли-
екта Prototype.Hash. чий браузеров в интерпретации DOM-модели, но аналогич-
ный механизм может быть использован в обработке всех
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) {
Расширение объектов JavaScript
alert(pair.key + ' = "' + pair.value + '"'); }); Основное предназначение Prototype – расширение воз-
$H({ action: 'ship', order_id: 123, fees: ↵ можностей для javascript-разработчика. Для этой благой
['fee1', 'fee2'] }).toQueryString()
цели стандартные объекты JavaScript обрели новые воз-
Кроме того, у объекта Hach есть исключительно полез- можности (если быть формальным – методы). Полный спи-
ный метод inspect(), позволяющий получить в браузере «чи- сок расширений можно получить, ознакомившись с до-
табельное» представление хэш-массива. кументацией по библиотеке. Обозначим только некото-
К приятным мелочам (хотя это, наверное, уже нечто по рые из них.
крупнее) я бы отнёс ещё и целый объект – PeriodicalExecuter, Прежде всего «тюнингу» подвергся объект Event. С точ-
предоставляющий возможность периодического вызова ки зрения скептика, конечно, использование Prototype
заданной функции через указанный интервал. Его «родс- не добавляет каких-либо новых, принципиальных воз-
твенник» – объект Ajax.PeriodicalUpdater выполняет такие можностей в работу с этим объектом, но, безусловно, де-
же действия, с запросом к серверу, но об этом – позже. лает удобными и самое главное кроссбраузерными уже
существующие.
Попытка за попыткой Например, метод observe(element, name, observer,
Вообще процесс кроссбраузерной JavaScript-разработки useCapture) добавляет обработчик события DOM-элементу,
всегда представлял некоторые трудности по причине неод- с учётом различий объектной модели браузеров.
нозначной реакции разных обозревателей на ошибки сцена- Метод stopObserving(element, name, observer, useCapture)
риев. В Prototype предусмотрен объект (функция) Try.these(), убирает это событие. Фактически эти методы дают ре-
который сильно облегчает эту и другие задачи. Фактически ализацию паттерна проектирования «Обозреватель»
он исполняет функции паттерна проектирования «Фасад». в JavaScriot.
Он перебирает возможные варианты обработки и возвра- Метод findElement(event, tagName) находит в дереве
щает результат того обработчика, который оказался успеш- DOM‑объектов первый тег, совпадающий с параметром
ным. Пример его использования: tagName, начиная с объекта, породившего событие.
Метод stop(event) останавливает распространение со-
<script> бытия.
function getXmlNodeValue(xmlNode){
return Try.these( Кроме этого, расширенный объект Event теперь име-
function() {return xmlNode.text;}, ет свойства, соответствующие нажатию специальных кла-
function() {return xmlNode.textContent;)
); виш (таких, как <Tab> или <Esc>), а также статические ме-
} тоды обработки нажатия кнопки мыши и положения кур-
</script>
сора на странице.
К классу Object были применены не
совсем обычные расширения. Во-пер-
вых, это метод extend(object), позволя-
ющий реализовать наследование (ес-
ли, конечно, для объектов JavaScript
этот термин вообще применим), а во-
вторых, тот же метод с двумя аргу-
ментами – extend(destination, source),
позволяющий копировать все свойс-
тва и методы объекта source в объект
destination).
Впрочем, манипуляции с объекта-
ми (не слишком укладывающимися
в классическую концепцию ООП), те-
ма для отдельного разговора.
Класс Function дополнен методами,
позволяющими связать данный экзем-
пляр функции с объектами bind(object)
и bindAsEventListener(object).
Не остался без внимания и класс
String. Он дополнен методами, широ-
ко распространёнными в веб-програм-
Рисунок 1. Компонент Rico.Accordion. Вкладки на горизонтальной панели раскрывают
независимое содержимое мировании, но применяемыми на сто-

80
веб-программирование
роне сервера. Это escapeHTML()/unescapeHTML(), отвеча- name: 'Podcasting Hacks',
first: 'Jack',
ющие за экранирование и восстановление HTML-разметки, last: 'Herrington',
и stripTags(), просто убирающим любые HTML- и XML-теги. publisher: 'O\'Reilly'
}
];
Обработка форм
Для облегчения этой часто встречающейся задачи в биб- Для работы с этим форматом Prototype даёт нам не толь-
лиотеке предусмотрен объект Form с рядом полезных ме- ко функции приведения к данной нотации хэш-массива (объ-
тодов: ект Hash) или получение/передачу в JSON обычной стро-
Form.getElements(form) возвращает массив значений ки (объект String). В библиотеке присутствует очень полез-
элементов формы вне зависимости от их типа: ная функция evalJSON (разумеется, объекта String), об-
легчающая работу с ответом сервера, сгенерированным
llNodes = Form.getElements("myform"); в этой нотации.
for(i = 0; i < allNodes.length; i++) {
//операции над каждым элементом Пример:
}
var person = '{ "name": "Violet", "occupation": ↵
"character" }'.evalJSON();
getInputs(form [, typeName [, name]]) возвращает массив person.name;
значений элементов Input, причём с помощью необязатель-
person = 'grabUserPassword()'.evalJSON(true);
ных элементов можно уточнить тип и имя элемента.
Функционал методов findFirstElement(form), focusFirst- person = '/*-secure-\n{"name": "Violet", "occupation": ↵
"character"}\n*/'.evalJSON()
Element(form), а также disable(form) и reset(form) вполне ясен person.name;
из их названий.
Замечательный метод Form.serialize() помогает переда- Соответственно существует и обратное преобразова-
вать данные на сервер, возвращая элементы формы в ви- ние. Это метод unfilterJSON. Пример его работы:
де строки, параметров HTTP-запроса:
'/*-secure-\n{"name": "Violet", "occupation": ↵
"character", "age": 25}\n*/'.unfilterJSON()
'field1=value1&field2=value2&field3=value3' // получаем на выходе:
// '{"name": "Violet", "occupation": "character", "age": 25}'
что очень удобно как при отправке сложных форм, так и
для работы с AJAX. С помощью расширения стандартного класса Object
Расширения класса Form, такие как класс Form.Element, можно легко автоматизировать приведение к данной но-
Form.Observer, предоставляют дополнительные возможнос- тации:
ти для работы, но о них особый разговор.
var Person = Class.create();
Person.prototype = {
Работа с JSON initialize: function(name, age) {
JSON (JavaScript Object Notation), формат, который в насто- this.name = name;
this.age = age;
ящее время стал одним из стандартов обмена информаци- },
ей между объектами javascript и в осо-
бенности в клиент-серверном взаи-
модействии. В некоторых случаях он
удобней XML и гораздо экономичней,
а следовательно – быстрее в работе.
В этом формате данные определя-
ются коллекцией пар ключ/значение,
которые можно представить, как хэш
или ассоциативный массив.
Ниже приведён пример представ-
ления данных в нотации JSON. По-мо-
ему, довольно удобно и читаемо:

var g_books = [
{
id: 1,
name: 'Code Generation in Action',
first: 'Jack',
last: 'Herrington',
publisher: 'Manning'
}, {
id: 2,
name: 'PHP Hacks',
first: 'Jack',
last: 'Herrington',
publisher: 'O\'Reilly'
}, { Рисунок 2. Компонент Rico.Color. Цвет бара меняется в зависимости от введённых
id: 3, цифр

№7, июль 2007 81


веб-программирование
toJSON: function() { <div id
return ('My name is ' + this.name + <br><textarea id="tagert" cols=100 rows=10 ></textarea>
' and I am ' + this.age + ' years old.').toJSON(); <input type=button onlick="somrAjax">
}
};
var john = new Person('John', 49); Ничего не понятно? Сейчас разберёмся. Аргументы,
Object.toJSON(john); передаваемые Ajax.Request, обозначены в нотации JSON
(JavaScript Object Notation).
Первый параметр, который получает при создании
А как же Ajax? Ajax.Request, это URL ресурса, к которому идёт запрос.
Возможно, сейчас для многих разработчиков – это основ- Второй – это параметры запроса, записанные в выше-
ная причина использования JavaScript-библиотек. Основ- упомянутой нотации JSON (это только один вариант, они
ная проблема обычно заключается в унификации запросов могут быть переданы методу и в качестве строки, сфор-
и получении ответов сервера, а также преодолении разли- мированной как URL).
чий между браузерами. Третий параметр, в данном случае функция onLoaded(),
Для работы с объектом XMLHttpRequest в Prototype су- выполняемая при получении ответа сервера объекта,
ществует объект Ajax, классы, наследуемые от которого но на её месте мог быть и массив нескольких обработчи-
стоит подробно рассмотреть. ков с функциями, заданными пользователем:
В первую очередь это класс Ajax.Base, служащий осно-
вой для других классов, определённых в Ajax. Основным var myOpts = {onComplete: showResponse,
onLoaded: registerLoaded};
инструментом для формирования запросов к серверу яв-
ляется его наследник – класс Ajax.Request. Пример его ис- Остальные параметры этого метода:
пользования: n requestHeader – список HTTP-заголовков в виде ассо-
циативного массива, где ключами выступают названия
<script> заголовков.
function someAjax($url)
{ n onSuccess/onFilure – значениями этих полей являются
var myAjax = new Ajax.Request( пользовательские функции, выполняемые при успеш-
url,
{method: 'get', ном или неудачном выполнении запроса.
parameters: { n Asynchronous – булевый индикатор асинхронности
type:'care',
name:'volga’ AJAX‑запроса. По умолчанию имеет значение TRUE.
}, n postBody – содержит данные, передаваемые в теле
onLoaded:function(){
alert(‘test’) HTTP‑запроса.
}
onComplete: someFunction}
); Остальные ещё более интересные возможности содер-
} жатся в следующем классе, наследуемом от Ajax.Request,
function someFunction (req) это класс Ajax.Udapter, который решает задачу по вставке
{ возвращённого сервером HTML-кода в заданный DOM-объ-
$('tagert').value = req.responseText;
} ект. Ajax.Udapter очень удобен для динамического измене-
</script> ния содержания страницы. В дополнение к свойствам ро-
дительского класса он содержит и не-
которые дополнительные.
Во-первых, это insertion (Object,
String) – функция, которая вызывается
для вставки полученного текста в объ-
ект, вызываемая с двумя аргумента-
ми – объект, в который будет произ-
водиться вставка текста и непосредс-
твенно сам текст, полученный в резуль-
тате запроса.
Второе свойство – evalScripts опре-
деляет, будут ли выполняться скрипты,
полученные в HTTP- ответе.
Конструктор этого объекта – Ajax.
Updater (container, url, options) содер-
жит новый аргумент – container, зна-
чение которого является идентифика-
тором DOM-элемента, в который будет
произведена вставка текста, получен-
ного в результате запроса.
Ajax.PeriodicalUpdater, наследу-
Рисунок 3. Главная страница сайта библиотеки script.aculo.us емый от Ajax.Base, идёт ещё даль-

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

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

№7, июль 2007 83


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

История компании Intergraph


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

Джим Тейлор

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

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

№7, июль 2007 85


ретроспектива
зов на свою технику. Конечно, спад
активности на рынке повлёк за со-
бой небольшое падение цены на ак-
ции компании, однако сильно повли-
ять на её финансовое состояние он
не смог.
К середине 80-х годов Intergraph
на пару с Computervision удержива-
ла второе место в мире по продажам
САПР, уступая лишь гиганту IBM. Од-
нако, в отличие от своей соперницы,
компания Мидлока неуклонно уве-
Графическая карта Edge (1991 г.), устанавливаемая в InterPro 32 личивала долю принадлежащего ей
рынка.
вый отдел продаж и сервисной под- первые полностью автономные рабо- В 1984 году Intergraph начала раз-
держки. Его менеджеры ориентирова- чие станции серии InterPro 32 с 2 Мб работку модулей для инженерных
лись на нужды каждого отдельно взя- оперативной памяти, жёстким диском расчётов и анализа, совместимых
того рабочего, а не на требования всей на 26 Мб, а также флоппи-дисково- со всеми линейками компьютеров DEC.
индустрии. Группам менеджеров при- дом на 1,6 Мб. Этот шаг, а также поддержка со сторо-
сваивались отдельные рынки, напри- Наконец Intergraph начала предо- ны Tangent позволили компании оста-
мер, архитектура, электроника, карто- ставлять коммерческую реализацию вить Computervision позади.
графия, а также индустриальное стро- своей локальной сети с пропускной В марте 1985 года Intergraph сдела-
ительство. способностью 2 мегабита за секунду. ла серьёзный шаг на пути к завоева-
Подобное нововведение быстро Что интересно, сетевая технология нию азиатского рынка, открыв в Япо-
дало свои «плоды», позволив ком- компании использовала те же прото- нии собственное представительс-
пании прочно закрепиться на новых колы CSMA/CD (Carrier Sense Multiple тво. Пользуясь дистрибьюторскими
рынках. Например, поставки САПР Access with Collision Detection – переда- каналами японской Mutoh Industries,
в 1983 году приносили Intergraph уже ча с контролем несущей и обнаружени- Intergraph стала одной из немногих
20% всех доходов. ем столкновений), которые в будущем компаний, предоставляющих САПР на
Компания сделала первый шаг будет использовать Ethernet. мировом рынке.
на рынок печати, начав поставлять Все эти разработки требовали не- В это же время она приобрела ком-
оборудование для электронной вёрс- малых финансовых затрат, поэто- панию The Rand Group, которая зани-
тки. Intergraph также не отставала му Мидлок принял решение о выхо- малась разработкой программного
и в производстве нового аппаратного де компании на фондовую биржу че- обеспечения для инженерного проек-
и программного обеспечения. рез выпуск акций, который состоял- тирования.
В 1980 году она первой на рын- ся в 1981 году. Теперь Intergraph предоставляла
ке выпустила графический терми- Дабы ускорить продвижение собс- своим клиентам САПР «под ключ»:
нал, включавший в себя два монитора твенных продуктов на рынке систем подбор аппаратного и программного
с высоким разрешением в 1280х1024 автоматизированного проектирова- обеспечения под конкретный случай,
пикселей. ния, в сентябре 1984 года Intergraph его установку и наладку, а также пре-
Через год Intergraph представила инвестировала более 5 млн. долларов доставление технической поддержки
терминал с цветным дисплеем, отоб- в молодую компанию Tangent Systems, и сервисного обслуживания.
ражавшим 4096 цветов. специализирующуюся на компьютер- Несмотря на то что компания счи-
А по прошествии ещё 12 месяцев ных средствах для инженерных расчё- талась лидером в поставках комплек-
графические терминалы компании об- тов и анализа. сных решений для автоматизирован-
ладали встроенным графическим про- Компания Мидлока собиралась ис- ного управления, Мидлок со товари-
цессором для обработки трёхмерного пользовать дистрибьюторские каналы щи не собирались идти в кильватере
изображения, работавшим параллель- Tangent для реализации собственно- индустрии и вместе с остальными иг-
но с центральным компьютером. го программного обеспечения в США, роками рынка начали плавный пере-
В это же время Intergraph выпус- а также за рубежом. Аналитики одоб- ход от больших ЭВМ к персональным
тила две линейки рабочих станций рили желание Intergraph продвигать компьютерам.
собственного производства, InterAct свои товары и услуги на новых рын- Даже в этом случае «Intergraph
и InterPro, ориентированных на систе- ках на фоне экономического спада была не просто поставщиком рабо-
мы автоматизированного проектиро- всей индустрии. чих станций, отдельных электронных
вания. Изначально они работали на ба- В январе 1985 года, в то время компонентов или же одного лишь про-
зе архитектур VAX и Micro VAX произ- как большинство компаний, занима- граммного обеспечения», – вспомина-
водства DEC и требовали подключе- ющихся САПР, начало замедлять тем- ет бывший вице-президент компании
ния к мейнфреймам. пы своего производства, Intergraph Кейт Шонрок (Keith Schonrock).
В 1984 году компания выпустила лишь увеличивала количество зака- В отличие от большинства своих

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

№7, июль 2007 87


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

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

№7, июль 2007 89


ретроспектива
роятной скоростью, в результате чего пособны. Компания продолжала вы- платил истцу 300 млн. долларов. В эту
у Intergraph появилось множество но- пускать рабочие станции на базе про- сумму, кроме моральной компенсации,
вых клиентов. цессоров Pentium, однако они прино- входила покупка патентной базы по чи-
Представив в 1994 году свою пер- сили ей одни лишь убытки. В конце пу С5, а также лицензирование ряда
вую рабочую станцию на базе процес- 1998 года IBM и SGI выразили желание других патентов Intergraph.
сора Pentium, компания смогла за не- купить Intergraph. В августе 1999 го- После завершения судебного про-
полный год реализовать на 41% боль- да компания объявила о прекраще- цесса против Intel Intergraph приня-
ше систем по сравнению с годом ра- нии производства аппаратного обес- лась за «окучивание» и других игро-
нее. Правда, на прибыли этот показа- печения и увольнении 400 сотрудни- ков рынка. «Под удар» попали произ-
тель практически не отразился – до- ков. Поиск потенциального клиента водители компьютеров Dell, Gateway
ход Intergraph от продаж компьютеров на её компьютерную технику закон- и Hewlett-Packard. И если первой ком-
прибавил всего 4%. чился в июле 2000 года, когда компа- пании благодаря Intel удалось ус-
ния Intergraph объявила о подписании кользнуть от правосудия, то осталь-
Ты мне больше не дружок договора с компанией SGI и продаже ным пришлось расстаться с весь-
На протяжении последующих трёх лет ей линейки рабочих станций и серве- ма крупными суммами. Следующими
компания продолжала планомерно те- ров Zx10. в «перекрестье прицела» Intergraph по-
рять деньги. На рынок рабочих стан- В этом же году нашла себе хо- пали японские производители Fujitsu,
ций на базе архитектуры х86 один зяина и Intense 3D, дочерняя компа- NEC и Toshiba, судебная тяжба с кото-
за другим вышли «гиганты» IBM, Dell, ния Intergraph, занимавшаяся произ- рыми длится до сих пор. На сегодняш-
Compaq и другие, отнявшие хороший водством и продажей графических ний день в «копилке» Intergraph лежит
«кусок пирога» у Intergraph. карт сторонним компаниям. За вре- 865 миллионов долларов, полученных
Однако самый сильный удар компа- мя своего существования (Intense 3D в результате судебных процессов, и это
нии нанес её партнёр – Intel. В 1996 го- «ушла в плаванье» в июле 1997 года) ещё не предел.
ду производитель процессоров начал она стала поставщиком видеоадапте- Однако не стоит считать, что пос-
требовать от Intergraph прекращения ров для рабочих станций производства ледние пять лет компания занимается
изымания лицензионных отчислений IBM, DEC, Compaq и, конечно же, самой исключительно «выкачиванием» денег
за патенты по С5, а также лицензи- Intergraph. Новым владельцем компа- из других игроков рынка. После рес-
ровании всей патентной базы компа- нии стал производитель графических труктуризации Intergraph в 2002-м её
нии, относящейся к производству про- процессоров – 3DLabs (на чипах кото- финансовые показатели начали опять
цессоров. Естественно, Intergraph от- рой, кстати, и были построены видео- повышаться, достигнув 548 млн. дол-
ветила отказом и Intel задействовала карты Intense 3D). ларов – лучшего показателя за послед-
своё монопольное положение на рын- Отныне компания занималась ис- ние 12 лет существования компании.
ке, проведя ряд нелегальных дейс- ключительно разработками програм- За это время Джима Тейлора на пос-
твий, дабы заставить компанию вы- много обеспечения, а также постав- ту исполнительного директора сменил
полнить свои требования. Среди них кой комплексных технических реше- Хелси Вайз (Halsey Wise), также став-
было повышение цен на чипы, а так- ний и системной интеграцией. ший президентом Intergraph.
же сокрытие технической информа- Очередная реорганизация и со-
ции о новых процессорах с целью уве- Время собирать урожай кращение подразделений с четырёх
личения у Intergraph сроков разработ- В 2001 году, спустя 32 года, свой до двух (топливо и энергетика, а так-
ки новых рабочих станций. В резуль- пост исполнительного директора по- же безопасность, правительство и ин-
тате компания потеряла в 1996 году кинул основатель Intergraph Джеймс фраструктура) позволило ещё более
301 млн. долларов, а цена её акций Мидлок. Его место занял Джим Тей- повысить доходную часть, доведя этот
упала с 20 до 8 долларов за штуку. лор (Jim Taylor), также посвятивший показатель в 2005-м до 577 млн. дол-
Загнанной в угол компании ничего работе в компании всю свою жизнь – ларов.
не оставалось, как обратиться в суд. он был одним из четвёрки первых ин- В завершение можно сказать лишь
17 ноября 1997 года Intergraph подала женеров компании. одно: Intergraph, несмотря ни на что,
иск против Intel, обвинив её по трём В начале 2002 года Intergraph про- движется вперёд. И пускай это уже
пунктам: нарушении собственной па- вела очередную реструктуризацию, не тот лидер рынка, каким компания
тентной базы, недобросовестном от- в результате которой была разделе- была лет двадцать назад, Intergraph
ношении к компании, а также наруше- на на четыре подразделения: Реше- особо не расстраивается. Успешное
нии антимонопольного права. ния для правительства, Картография, развитие, хороший доход, безоблачное
Судебная тяжба с Intel непосредс- Топливо и Энергетика, а также Об- будущее. Остальное – не важно.
твенным образом повлияла на бизнес щественная безопасность и комму-
компании. Intergraph, в то время забо- никации. 1. http://www.intergraph.com.
тившаяся лишь об отстаивании сво- Судебный процесс между Intergraph 2. http://www.fundinguniverse.com.
их прав в суде, более не могла быс- и Intel длился на протяжении почти пя- 3. http://www.wikipedia.org.
тро реагировать на изменения рын- ти лет. 17 апреля 2002 года производи- 4. http://www.computer-business-review.
ка, вследствие чего её компьютеры тель процессоров решил уладить иск com.
и серверы оказались неконкурентос- мирным путём, в результате чего вы- 5. http://www.byte.com.

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

Qt 4: программирование GUI на C++


Жасмин Бланшет, Марк Саммерфилд
средств разработки для создания при- графика, работа с реляционными ба-
ложений с графическим пользователь- зами данных (на примере MySQL) и до-
ским интерфейсом (на C++). Основное кументами XML, создание элементов
содержание разбито на 3 части, харак- системы помощи.
теризующиеся различными уровнями В заключительной части – интерна-
сложности: базовый, средний и про- ционализация (юникод, различные ло-
двинутый. кализации для приложения), многопо-
В первой все начинается с простей- точность, создание плагинов, специ-
шего аналога традиционному «Hello, фичные для различных платформ воз-
world» – создания окна с единствен- можности, несколько страниц о Qtopia
ным виджетом с текстом приветствия. для разработки ПО для встраиваемых
После этого следует рассмотрение ва- устройств.
рианта с несколькими элементами уп- Кроме того, в книге приводится ин-
Книга позиционируется как «единс- равления, постепенно расширяется формация об установке Qt для под-
твенное официальное руководство по описание интерфейса окон и возмож- держиваемых платформ и краткое ру-
практическому программированию ностей взаимодействия с пользовате- ководство по C++ для разработчиков
в среде Qt 4.1». Ее авторы уже рабо- лем. Завершается базовая часть воп- на Java и C#.
тали над подобным изданием для Qt 3 росами создания собственных видже-
и являются менеджерами (один, прав- тов и их внедрения в Qt Designer. n
Издательство: «КУДИЦ-ПРЕСС»
да, в прошлом) по документированию Во второй части затронуты такие n
Год издания: 2007
в компании Trolltech, подарившей ми- аспекты, как обработка событий, опе- n
Количество страниц: 648
ру Qt. На редкость приятно оформлен- рации ввода-вывода (файлы, катало- n
ISBN: 978-5-91136-038-2
ное руководство описывает в конкрет- ги, межпрограммное взаимодействие), n
Цена: ≈ 282 руб.
ных примерах различные возможнос- сеть (протоколы FTP, HTTP, TCP и UDP), К н и г а п р е д о с т а в л е н а и з д ат е л ь с т в о м
ти применения кроссплатформенных двухмерная и трехмерная (QtOpenGL) «КУДИЦ-ПРЕСС».

Мастерская CSS: профессиональное


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

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

Применение UML 2.0 и шаблонов


проектирования, 3-е издание
Крэг Ларман
сами фазы: начальная  развития (она На третьей – диаграммы видов
разбита на  итерации), а в последней деятельности (моделирование про-
сравниваются адаптивное и предик- цессов), концепции обобщений и спе-
тивное планирование. циализации, архитектурный анализ,
На начальной фазе подробно рас- применение дополнительных шабло-
сматриваются процессы определения нов GoF, работа с базой данных, до-
предъявляемых к проекту (основных кументирование (создание докумен-
и дополнительных) требований и опи- тов SAD).
сания прецедентов в различных фор- На протяжении всей книги пред-
матах. На первой итерации второй ставленная теория дополняется дву-
фазы – модели предметной области мя примерами ее практического ис-
и выделение концептуальных клас- пользования: система автоматизации
сов, системные диаграммы последо- торговой точки и игра «Монополия».
Эта книга – новая редакция известно- вательностей и диаграммы пакетов Все примеры программного кода на-
го фундаментального труда по объек- UML, объектное проектирование с по- писаны на языке Java.
тно-ориентированному анализу и про- мощью CASE-средств, диаграммы вза-
ектированию от человека, призываю- имодействия и классов UML, объект- n
Издательство: «Вильямс»
щего все новых и новых специалис- ное проектирование с использованием n
Год издания: 2007
тов учиться «мыслить объектами». шаблонов GRASP, формирование про- n
Количество страниц: 736
Она удобно структурирована и состо- граммного кода. На второй – исполь- n
ISBN: 978-5-8459-1185-8
ит из 6 частей (40 глав). В введении зование дополнительных шаблонов n
Цена: ≈ 698 руб.
описаны некоторые базовые понятия GRASP и шаблонов GoF, применение К н и г а п р е д о с т а в л е н а и з д ат е л ь с т в о м
и процессы, в последующих частях – UML для визуализации моделей. «Вильямс».

Операционные среды, системы


и оболочки. Основы структурной
и функциональной организации.
Учебное пособие
Станислав Назаров
при прочтении многих материалов ос- службы каталогов (Active Directory), се-
тается ощущение неосновательнос- тевые файловые системы, различные
ти и неполноты в описании конкрет- типы атак, мониторинг и оптимиза-
ных фундаментальных понятий и ме- ция ОС, восстановление после сбоев,
ханизмов. а также интерфейсы ОС (программный
Среди рассматриваемых тем есть на примере разработки под Windows
как основные моменты из базовых кур- и пользовательский). В конце каждой
сов технических вузов: общие пред- главы приведены контрольные вопро-
ставления об операционных системах, сы для проверки усвоения материала.
Судя по аннотации, книга близка к то- процессы и потоки, многозадачность,
му, чтобы претендовать на звание все- организация и распределение памя- n
Издательство: «КУДИЦ-ПРЕСС»
объемлющего и доступного для всех ти и виртуальная память, подсистема n
Год издания: 2007
учебного пособия по операционным ввода-вывода и файлов системы, се- n
Количество страниц: 504
системам для студентов экономичес- тевые операционные системы (UNIX n
ISBN: 978-5-91136-036-8
ких вузов. Вдобавок, в качестве важ- и Windows 2000), – так и менее осве- n
Цена: ≈ 440 руб.
ной особенности обозначено соответс- щаемые в этих учебных программах К н и г а п р е д о с т а в л е н а и з д ат е л ь с т в о м
твие современным технологиям. достижения IT: виртуальные машины, «КУДИЦ-ПРЕСС».
Однако все это привело не только
к позитивным результатам, поскольку Обзор книжных новинок подготовил Дмитрий Шурупов

№7, июль 2007 93


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

Редакционная подписка
для физических лиц
n Вы можете оформить подписку n Вы можете оформить подписку n Журнал высылается почтой прос-
на любой российский адрес. с любого месяца на любой срок. той бандеролью только после пос-
n При заполнении квитанции обя‑ n В графе «Сумма» проставьте сумму тупления денег на расчетный счет
зательно РАЗБОРЧИВО укажи‑ за выбранное количество номеров. и копии заполненного и оплачен‑
те фамилию, имя, отчество пол‑ Стоимость одного номера журна- ного бланка, отправленной в ре‑
ностью, почтовый индекс и ад‑ ла 150 руб. За 10 месяцев (с марта дакцию по факсу: (495) 628‑82‑53
рес получателя (область, город, по декабрь) – 1500 руб. НДС и поч- или на элек тронный а д рес:
улица, номер дома, номер квар‑ товые расходы включены в стои- info@samag.ru.
тиры), контактный телефон. мость.

94
подписка на 2007 год
Российская Федерация печати «Гасид» (370102, г. Баку, ул. Джавадхана, 21)
n
Подписной индекс: годовой – 20780, полугодовой – 81655 n
Казахстан – по каталогу «Российская Пресса» через
Каталог агентства «Роспечать» ОАО «Казпочта» и ЗАО «Евразия пресс»
n Подписной индекс: 87836 n
Беларусь – по каталогу изданий стран СНГ через РГО
Объединенный каталог «Пресса России» «Белпочта» (220050, г. Минск, пр-т Ф. Скорины, 10)
Адресный каталог «Подписка за рабочим столом» n
Узбекистан – по каталогу «Davriy nashrlar» российс-
Адресный каталог «Библиотечный каталог» кие издания через агентство по распространению пе-
n Альтернативные подписные агентства: чати «Davriy nashrlar» (7000029, г. Ташкент, пл. Муста-
Агентство «Интер-Почта» (495) 500-00-60, курьерская киллик, 5/3, офис 33)
доставка по Москве n Армения – по списку номенклатуры «АРЗИ» через
Агентство «Вся Пресса» (495) 787-34-47 ГЗАО «Армпечать» (375005, г. Ереван, пл. Сасунци Да-
Агентство «Курьер-Прессервис» вида, д. 2) и ЗАО «Контакт-Мамул» (375002, г. Ереван,
Агентство «ООО Урал-Пресс» (343) 375-62-74 ул. Сарьяна, 22)
ЛинуксЦентр www.linuxcenter.ru n Грузия – по списку номенклатуры «АРЗИ» через АО
n Подписка On-line «Сакпресса» ( 380019, г. Тбилиси, ул. Хошараульская, 29)
http://www.arzi.ru и АО «Мацне» (380060, г. Тбилиси, пр-т Гамсахурдия, 42)
http://www.gazety.ru n Молдавия – по каталогу через ГП «Пошта Молдовей»
http://www.presscafe.ru (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134)
по списку через ГУП «Почта Приднестровья» (МD-3300,
СНГ г. Тирасполь, ул. Ленина, 17)
В странах СНГ подписка принимается в почтовых отделе- по прайс-листу через ООО Агентство «Editil Periodice»
ниях по национальным каталогам или по списку номенк- (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134)
латуры «АРЗИ»: n Подписка для Украины:
n Азербайджан – по объединенному каталогу россий- Киевский главпочтамт
ских изданий через предприятие по распространению Подписное агентство «KSS», тел./факс (044)464-0220

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

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

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

№7, июль 2007 95


СИСТЕМНЫЙ АДМИНИСТРАТОР
№7(56), Июль, 2007 год
Читайте
в следующем
УЧРЕДИТЕЛИ
Владимир Положевец
Александр Михалев

номере:
РУКОВОДИТЕЛЬ ПРОЕКТА
Петр Положевец

РЕДАКЦИЯ
Исполнительный директор
Владимир Положевец
Ответственный секретарь Gmail как внешний фильтр можные задачи. Решить задачу помо-
Наталья Хвостова для корпоративной почты жет инструмент System Control Panel
sekretar@samag.ru Уже многие оценили качество филь- (SysCP), о котором пойдет речь в сле-
Технический редактор трации спама и вирусов такого серви- дующем номере журнала.
Владимир Лукин са, как Gmail. Он позволяет размещать
Главный редактор почтовую службу для целого домена на Axigen Mail Server:
электронного приложения своих серверах, после чего почта ста- почтовый сервер
«Open Source»
Дмитрий Шурупов
новится доступна как через web, так и для малого офиса
по протоколу pop3. Такая комбинация Сегодня почтовый сервер на базе
Внештатные редакторы
Алексей Барабанов возможностей и дает нам способ ис- UNIX-подобной ОС ассоциируется
Иван Максимов пользовать Gmail как внешний фильтр с непонятной новичку комбинацией
Дмитрий Горяинов для почты. Подробности – в августов- вроде Postfix + Doveco + Squirrelmail +
Кирилл Сухов ском выпуске журнала. Clam AV + S pam As s as sin + Б Д +
PostfixAdmin. Далеко не каждый ре-
РЕКЛАМНАЯ СЛУЖБА mod_python и mod_perl шится строить такую систему. Румын-
тел./факс: (495) 628-8253 Модули сервера Apache mod_python ская компания GeCAD Technologies
Евгения Тарабрина и mod_perl позволяют встроить ин- LTD, предлагает свое решение вопро-
reсlama@samag.ru терпретаторы языков Python и Perl са – быстрый, защищенный почтовый
непосредственно в сервер и значи- сервер AXIGEN Mail Server с открытой
Верстка и оформление
тельно увеличить производительность архитектурой. О нём мы расскажем
maker_up@samag.ru
Дизайн обложки веб-приложений. Perl – старый и хо- в августовском номере «Системного
Дмитрий Репин рошо зарекомендовавший себя иг- администратора».
Николай Петрочук рок на этом рынке. Но в последние го-
ды Python занял уверенные позиции Создание COM‑компонентов
По вопросам распространения в области веб-разработок и привле- с помощью VBScript
обращайтесь по телефону: кает всё большее внимание. Читайте Вы создаете много скриптов, и вам на-
(495) 628-8253 (доб. 120) в следующем номере обзор возмож- доело переносить код из одного файла
ностей этих средств. в другой? Есть отличное решение – со-
107045, г. Москва, здайте COM-объекты на основе своих
Ананьевский переулок, дом 4/2, стр. 1
тел./факс: (495) 628-8253
Панель управления скриптов. В следующем номере жур-
Сайт журнала: www.samag.ru
хостингом SysCP нала в качестве примера создадим
Как упростить управление хостингом? COM‑объект Detect.Domain, который
ИЗДАТЕЛЬ Даже при тщательно спланированной содержит несколько методов. Исполь-
ЗАО «Издательский дом архитектуре и выборе компонентов бу- зуя их, можно определить длинное имя
«Учительская газета» дущей системы, без некоторой автома- домена (DC=Microsoft,DC=Com), корот-
тизации процесса потребуется очень кое имя домена (Microsoft) и DNS-имя
Отпечатано типографией много времени, чтобы решить все воз- домена (Microsoft.Com).
ГП «Московская Типография №13»
Тираж 15000 экз.
Уважаемые читатели!
Журнал зарегистрирован
в Министерстве РФ по делам печати,
Продолжается подписка на 2-ое полугодие 2007 года.
телерадиовещания и средств массо-
вых коммуникаций (свидетельство
ПИ № 77-12542 от 24 апреля 2002 г.). Приобрести новые и старые номера журнала
вы можете через интернет-магазин LinuxCenter.ru.
За содержание статьи ответственность
несет автор. За содержание реклам-
ных материалов ответственность не-
сет рекламодатель. Все права на опуб- Доставка почтой в любую точку России.
ликованные материалы защищены.

96