Академический Документы
Профессиональный Документы
Культура Документы
СЬ
ЛИ
ЛИ
ТЯ Е
Ж ПИ
ЗА ДНИ
НУ
РА КУ
ЛЫ ГО
ТИ РАС
КУ ВО
О
НИ НО
ТР
№11(36) ноябрь 2005
С
БЫ
подписной индекс 20780
КА
www.samag.ru
И
ЬГ
ЬД О
РА СКА
ТЕ
К
ИС НН
ЕН
УС
БО
НА ТПУ
ИЛ ДА
ТП
НЧ ЖИ
ВО
РА Е О
КО НЕО
АВ СЛ
Л
ПО
УЕ
ЗА
Автоматизируем установку
драйверов в Windows
Так видит журнал читатель, оформивший подписку:
Ещё один способ
восстановить MBR
Тонкий клиент –
шаг к мэйнфреймам?
Разрабатываем
документацию в NPJ:
эффективно и удобно!
Используем возможности ftpd
Расширения РHP:
ПОДПИШИТЕСЬ И ЧИТАЙТЕ! пять шагов к написанию
№11(36) ноябрь 2005
2
тенденции
ний для использования в вузе следую- Более подробную информацию ли об успешном завершении нагру-
щая: для основных, ядерных приложе- о докладах на конференции и програм- зочного тестирования продукта «Бит-
ний выбираются крупные поставщики мных продуктах Microsoft можно най- рикс: Управление сайтом 4.0». Этот
(Microsoft, SAP, Oracle); для ниши раз- ти по адресу http://www.microsoft.com/ программный продукт предназна-
вивающегося и специализированного Rus/Education. чен для создания, управления и раз-
программного обеспечения (например, вития веб-проектов и ориентирован
системы автоматизации составле- Андрей Филиппович на сегмент малого и среднего бизне-
ния расписания) выбираются лучшие са (SMB).
по результатам анализа; для исследо- Oracle выпускает В качестве тестовой системы был
вательских или маленьких локальных бесплатную редакцию выбран сервер начального уровня
задач выполняются собственные раз- СУБД «Kraftway GEG Express 100» с опера-
работки; для использования студента- Тридцать первого октября 2005 го- ционной системой Red Hat Enterprise
ми выбираются приложения, ориенти- да корпорация Oracle анонсировала Linux AC Release 3, а в качестве ба-
рованные на технологию тонкого кли- выход бета-версии новой редакции зы данных использовалась Oracle 10g
ента; при разработке сервисно-ори- Oracle Database 10g Express Edition Release 2 (Standard Edition One).
ентированной архитектуры (SOA) ис- (Oracle Database XE). Данная редак- Для тестирования были выбраны
пользуются открытые стандарты на ция СУБД распространяется бес- Oracle-версии продукта «Битрикс: Уп-
веб-сервисы. платно, и независимые разработчи- равление сайтом – «Старт» (включа-
При организации IT-инфраструкту- ки программного обеспечения мо- ющая в себя минимальный набор мо-
ры предпочтение отдается беспровод- гут абсолютно свободно распростра- дулей для управления корпоративны-
ной связи. Для удобства администри- нять и внедрять Oracle Database XE ми сайтами) и «Бизнес» (полнофунк-
рования в 90% случаев используется в составе своих решений. Новая ре- циональная версия продукта, предна-
унифицированное программное обес- дакция СУБД основывается на коде значенная для создания и управления
печение от Microsoft (Active Directory, Oracle Database 10g Release 2 и пол- корпоративными порталами, интернет-
XP, Exchange, SharePoint и др.). В ос- ностью совместима с семейством ком- магазинами, сайтами СМИ и другими
тавшихся 10% – используются техноло- мерческих СУБД Oracle Database 10g. интернет-проектами).
гии Apple и UNIX для изучения полигра- Oracle Database XE предоставляет В результате суточного тестирова-
фических систем и проведения некото- разработчикам тот же интерфейс SQL ния данных продуктов были получены
рых научных исследований. К важному и PL/SQL, что доступен и в старших ре- следующие результаты.
преимуществу такой организации до- дакциях, плюс интерфейс к ряду язы- Версия «Старт», включающая 4 мо-
кладчик также отнес удобство органи- ков программирования, включая Java, дуля, «выдержала» 1 117 956 уни-
зации вычислительных кластеров. .NET и PHP. кальных пользователей (3 879 336
Oracle Database XE доступна для 32- хитов), а состоящая из 18 модулей
Курьезы Microsoft разрядных платформ Linux и Windows, версия «Бизнес» – 465 160 уни-
В целом конференция вызвала боль- и на нее накладываются следующие кальных пользователей (1 614 103
шой интерес среди специалистов и бы- ограничения: хита).
ла проведена на высоком техническом Используется только один ЦП. Среднее время ожидания д ля
уровне, однако без курьезов не обош- Используется не более 1 Гб ОЗУ. «Старта» и «Бизнеса» составило
лось. Во время демонстрации реше- Допускается работа только одного 0,265 и 1,107 секунд соответственно.
ний Microsoft сначала не удалось вый- экземпляра БД. Количество же ответов, время ожи-
ти в Интернет для получения доступа Не более 4 Гб пользовательских дания которых от 3 до 7 секунд, со-
к Microsoft Learning Gateway, а затем данных на жестком диске. ставило 0,04% и 0,55% от общего
при попытке запуска системы Learning числа запросов.
Network Manager после перезагрузки Для зарегистрировавшихся на сай-
операционной системы всплыло со- те корпорация Oracle предоставляет Добиться столь высоких показа-
общение о необходимости активации бесплатный доступ к форуму, который телей удалось благодаря 2-уровне-
используемой копии Windows. Это со- сопровождают специалисты компа- вой конфигурации сервера («front-
бытие, произошедшее после слов Оль- нии. Скачать Oracle Database XE мож- end» (прокси-сервер nginx 0.1.44) +
ги Дергуновой о необходимости про- но по ссылке: www.oracle.com/database/ «back end» (apache 1.3.33 + php 4.3.11 +
ведения воспитательной работы сре- xe.html. e-accelerator 0.9.3)) и использованию
ди молодежи по использованию ли- в качестве базы данных Oracle 10g
цензионного программного обеспе- Андрей Маркелов Release 2. В то же время версия про-
чения, с одной стороны, вызвало бур- граммного продукта, использующая
ную радость большей части посетите- Завершено тестирование в качестве базы данных MySQL, проде-
лей конференции, а с другой – позво- нового программного монстрировала гораздо более скром-
лило осознать значимость того факта, продукта по созданию ные результаты – «всего» 30 000 уни-
что в России количество пиратских ко- веб-ресурсов кальных пользователей.
пий программного обеспечения снизи- Первого ноября 2005 года компании
лось с 99% до 87%. «Битрикс», «QSOFT» и ФОРС объяви- Николай Никульшин
4
интервью
MiniMo – мини-браузер
из семейства Mozilla
Mozilla
Антон Борисов
Многим из вас приходилось работать с программными продуктами, в названии которых
присутствует слово Mozilla. В этом году, пожалуй, только ленивый не слышал о браузере
Mozilla FireFox. Однако главный герой сегодняшнего рассказа – браузер MiniMo, родословная
которого начинается с браузера Mozilla. Некоторые детали его разработки и концепцию
развития поведает Дуг Тернер (Doug Turner) – глава проекта.
Расска жите, как вы оказа лись ми. В определенный момент кому-то вильное направление, но одно ясно –
в Netscape Communications Inc., о ва- пришла в голову сумасшедшая идея от «безумной идеи» выиграли милли-
шей работе в этой компании, её ос- выпустить исходный код в публичный оны. «Освобождение ящерицы» в ито-
новных направлениях. доступ. В Netscape Communications мо- ге вылилось в лучший код, стало боль-
Я присоединился к команде Netscape им шефом был Крис Хофман. Он и сей- ше инноваций, и, наконец, война брау-
в 1996 году, для работы над клиен- час мой шеф в Mozilla Foundation. На- зеров вышла на новый виток.
том браузера под Mac-платформу. столько хороший, что у меня нет жела-
Поначалу было не очень интересно, ния мечтать о лучшем. Сколько людей занято в проекте
но это была работа на лучшую компа- MiniMo и кто вам помогает при раз-
нию, над лучшим продуктом того вре- Как бы вы охарактеризовали идею работке?
мени. Годом позже я стал работать выпуска исходного кода Netscape Что касается создания проекта MiniMo,
над вещами гораздо интереснее: се- в публичный доступ? С точки зре- то его родителями являются: Крис
тевое взаимодействие, многопоточ- ния того времени и с точки зрения Хофман, Дарин Фишер (Darin Fisher)
ность, xpcom, низкоуровневые подсис- реалий сегодняшнего дня. и я. Это было несколько лет назад. Да-
темы и над более сложными проблема- Я не был уверен вначале, что это пра- рин теперь работает в Google над дру-
Что представляет из себя ся Internet Explorer, то для мобильных уст- ся» («Make good software that people like to
MiniMo? ройств это далеко не так: здесь присутс- use, and the rest will take care of itself»).
После того как в январе 1998 года были твуют такие имена, как Opera, NetFront, Коллектив Mozilla Foundation сложил-
выпущены в свет исходные коды Netscape Obigo, Nokia Series 40/60 Browser, Openwave, ся в июле 2003 года в основном из быв-
Navigator [1], началась новая ветка в исто- Pocket Internet Explorer, NicheView, Picsel, ших участников корпорации Netscape [10].
рии развития браузеров. Одним из «побоч- RocketBrowser, Wapaka, Thunderhawk, Он разрабатывает не только MiniMo,
ных» эффектов стало появление MiniMo Skweezer, Andromeda и некоторые другие. но и такие продукты, как Mozilla FireFox,
(MiniMozilla) – мини-браузера для КПК и мо- Сфера применений пока, на мой взгляд, Mozilla Thunderbird, Mozilla SeaMonkey,
бильных устройств [2]. достаточно узкая – помимо непосредствен- и многие другие. Большинство из них, ко-
Что из себя представляет MiniMo? ного отображения веб-страниц и удобной нечно же, напрямую не связано с MiniMo,
Это в первую очередь исходный код бра- интеграции с Google Maps на этом функцио- но от каждого зависит общее развитие
узера Mozilla, который можно собрать нал и заканчивается. Технология MiniMozilla продукта.
для мобильной платформы, например, построена таким образом, что в принципе В частности, технологический темп для
для КПК iPAQ. Вполне очевидно, что полная можно отделить интерфейс пользователя развития MiniMo задает Дуг Тернер, Крис
функциональность настольной Mozilla для (UI) от ядра браузера Mozilla и построить Хофман координирует бизнес-планирова-
мобильных устройств не требуется. На пер- новые приложения под конкретные требо- ние. Официально Дуг Тернер начал рабо-
вый план выходит компактность браузера вания заказчика, но пока об этом мало что тать на Mozilla Foundation с декабря 2004 го-
и повышенные требования к распределе- слышно. Также мало слышно и об актив- да. Хотя послужной список данными пер-
нию памяти (в КПК количество ОЗУ все- ном использовании в MiniMo подключае- сонами не афишируется, но удалось уз-
таки отличается от настольных ПК). Вто- мых модулей. Впрочем, не буду заострять нать, что до прихода в Netscape в 1996 го-
рой немаловажный фактор – это умение внимание на том, чего пока нет. Отмечу, ду Дуг Тернер работал в компании Apple
отображать html-страницы для экранов что проект MiniMo идет вперед семимиль- Computer Inc.
КПК-устройств (разрешение в пределах ными шагами. И лозунгом развития Mozilla Первое упоминание об успешном пор-
160x240 пикселов или более; сейчас уже Foundation отчасти может служить фраза тировании MiniMo на КПК датируется 8 де-
типичны устройства с разрешением экра- Криса Хофмана (Chris Hofmann) – «Созда- кабря 2003 года, когда Дуг Тернер пишет
на 640х480 пикселов) [3]. Если для настоль- вайте хорошие продукты, которые приятны в своем блоге – о запуске Firebird на iPAQ
ных ПК доминирующим браузером являет- для использования, а остальное приложит- 5555 [4].
гими вещами, а Крис занят создани- изводит КПК и смартфоны для I-Mate, Что касается запуска MiniMo на Opie,
ем бизнес-связей в Mozilla Foundation. HP, Orange, Dell и др.), наш код рабо- то здесь потребуется переписать код
Над MiniMo CE активно работают 6 че- тает нормально. под QT. Как вы знаете, сейчас Mozilla
ловек, каждый в своем направлении. основана на GTK-коде, поэтому зако-
Мы также помогаем нескольким спе- Как вашей команде удается тести- номерно, что и MiniMo зависит от GTK.
циалистам, работающим над версией ровать MiniMo на всех линейках КПК, Портирование на QT-основу происхо-
Linux MiniMo. У нас большая команда скажем, и на семействах Windows дит (см. http://dot.kde.org/1094924433).
тестеров, людей, которые придумыва- Mobile и дистрибутивах Familiar Как только оно завершится, то появит-
ют новые классные идеи, и, конечно же, Linux? Какие виртуальные машины ся причина для перестраивания дере-
мы получаем отдачу от всего направ- вы используете? ва MiniMo, чтобы в дальнейшем выпус-
ления развития FireFox. Прямо сейчас Отличный вопрос. Многие разработ- кать исполняемые файлы и в форма-
Марсио Галлио (Marcio Gallio) и я за- чики других браузеров для мобильных те MiniMo/QT.
няты разработкой ядра MiniMo. Фигу- устройств используют эмулирующие
рально выражаясь, мы стоим на пле- приложения. Для нас это не актуаль- Я попробовал запустить MiniMo 0.07
чах таких гигантов, как Джонни Стен- но, т.к. мы используем ядро от FireFox, в Windows CE 2002 (WinCE 3.0), од-
бэк (Johnny Stenback), Дэвид Барон поэтому если какая-то функция рабо- нако все попытки оказались не-
(David Baron) и всех тех сотрудников, тает в FireFox, то она будет работать удачными. В чем может быть про-
которые двигают технологию Mozilla и в MiniMo. блема, в WinCE 3.0 или все-таки
вперед, т.к. MiniMo базируется в пер- Однако есть такие опции, кото- в MiniMo? Есть ли планы выпускать
вую очередь на коде Mozilla. рые отсутствуют в FireFox, напри- MiniMo в виде одного инсталлятора,
мер, рендеринг для малых экранов а не в виде архива файлов?
На каких аппаратных платформах (Small Screen Rendering). У меня есть Для использования в Windows CE 2002
MiniMo может работать сегодня? мысль написать такое расширение требуется перекомпиляция кода MiniMo
В основном это ARM и несколько x86- для FireFox, чтобы у пользователей ПК с использованием SDK от WinCE 2002.
устройств. Существует несколько спе- была возможность увидеть, как стра- Сейчас мы сфокусированы в основном
цифичных вопросов, но наш код очень ница отображается на устройствах на Windows CE 2003, так что и для бо-
удобен в портировании. На большинс- с экраном 240x360. Мы компилируем лее старой версии WinCE в скором вре-
тве устройств, что поставляет HTC код на настольных ПК и копируем его мени будет релиз. Что касается инс-
(тайваньская компания High Tech на КПК. Затем тестируем и делаем вы- талляторов, то для себя мы использу-
Computer Corporation [11], которая про- вод о функциональности. ем как коммерческие, так и собствен-
6
интервью
Какие планы развития MiniMo? И как сил бы развитие MiniMo, если на рын-
Дуг Тернер – соавтор первой антиспам происходит тестирование дополни- ке было что-то стоящее.
программы SpamBlaster, созданной в 1997 тельного функционала?
году. Сотруд ник компании Netscape Для MiniMo также существует план Насколько мне известно, с Nokia
Communications c 1996 года. Занимался развития [5]. Что же касается дополни- и с T-Mobile подписаны контракты
развитием объектной модели XPCOM, про- тельного функционала, то он, как пра- по поставке MiniMo вместе с их про-
работкой вопросов поддержки сети и пото- вило, появляется в качестве расши- дукцией. Насколько это верно?
ковых (thread) вопросов в браузерах серии рений к продукту. Например, Spatial У меня не входит в практику распро-
Netscape, а в последствии и в серии Mozilla. Navigation – это расширение, кото- страняться, кто собирается, а кто
В декабре 2004 года возглавил разработ- рое я написал для Pioneer Research. не собирается что-то поставлять, по-
ку браузера MiniMozilla в компании Mozilla Его цель – использовать клавиши вверх, ка не выпущен официальный пресс-
Foundation. вниз и т. д. для навигации по докумен- релиз. Так что, извините, говорить
ту (см. http://www.mozilla.org/access/ об этом преждевременно.
ные инсталляторы. Так что не волнуй- keyboard/snav). На сегодня это расшире-
тесь – MiniMo будет выпускаться и в ка- ние выглядит как опция, которую мож- Есть ли разработчики, которых
честве единого файла. но загрузить с http://addons.mozilla.org. вы могли бы отметить отдельно?
Как только расширение становится до- Мы сотрудничаем с компанией INdT
Для меня представляют интерес статочно востребованным, оно интег- (http://www.indt.org.br/indt), с коман-
русскоязычные ресурсы, поэтому рируется в дерево разработки. Одна- дой, которая работает над разными
я зашел на mail.ru и обратил внима- ко чтобы быть включенным, это конк- Open Source-проектами. В качестве
ние на то, что браузер автоматиче- ретное расширение проходит не толь- одного из таких проектов они выбра-
ски не распознает кодировку. ко через руки тестеров, но и через ру- ли MiniMo. Последние несколько ме-
Мы делаем достаточно широкие шаги ки тех, кто повседневно его использует, сяцев их внимание было сфокусиро-
вперед. Предлагаю использовать вер- т.е. знает расширение практически до вано на GTK-коде нашего кроссплат-
сию 0.08, ибо многие проблемы реша- мелочей. Поэтому относительно качес- форменного браузера. Также среди их
ются с выходом каждой новой версии. тва кода можете не волноваться. работ значится проект MaeMo – пор-
Некоторые вопросы, возникающие тирование на платформу Nokia 770
с перекодировками, связаны с тем, как Означает ли это, что практически (см. http://www.indt.org.br/maemo).
определять установленные на устрой- любое расширение, написанное для
стве шрифты и как проводить переко- FireFox, будет работать и с MiniMo? Ссылки:
дирование из национальных кодовых В общем-то, да. У нас было несколь- 1. http://en.wikipedia.org/wiki/Netscape.
страниц в юникод-представление. На- ко расширений для FireFox, которые 2. http://en.wikipedia.org/wiki/Minimo.
деюсь, в версии 0.10 многие из них бу- через несколько минут доработки за- 3. http://www.linuxdevices.com/articles/
дут решены. работали и с MiniMo. Расширения, AT7396996719.html.
стоящие упоминания, – это adblock 4. http://weblogs.mozillazine.org/dougt/
Действительно здорово осозна- и colorzilla. archives/004471.html – first announcement
вать, что исходный код для MiniMo of FireBird at IPAQ 5555.
и для Firefox почти один и тот же. Есть ли у вас планы по созданию 5. ht tp://w w w.linuxdevices.com /news /
Однако в ходе тестирования MiniMo прототипа для Symbian OS? NS8 91114 50 47.html – roadmap for
на различных версиях Windows CE Д.T.: Таких планов нет. Есть люди, ко- MiniMo.
я столкнулся с проблемой быст- торым нравится Symbian, и те, кото- 6. http://www.meer.net/~dougt/minimo_ce –
родействия. Если я сравню Pocket рые ненавидят его. Я действительно MiniMo WinCE builds – домашняя стра-
Internet Explorer (PIE) с MiniMo, не знаю, к кому я тяготею. Если смо- ница Дуга Тернера. Отсюда вы може-
то последний никак не кажется мне треть на API от Symbian и сравнивать те загрузить последние релизы MiniMo
быстрым. Есть ли какие-либо под- его с Linux, то, скорее всего, я принад- для платформы Windows CE.
вижки в улучшении данной про- лежу ко второму лагерю. 7. http://www.absoluteastronomy.com /
блемы? encyclopedia/m/mi/microbrowser.htm –
Д а , п р о и з в о д и т е л ь н о с т ь и м е е т С о гл а с н о о б з о р а м , в ы п ус к а е - классификация микробраузеров.
очень важное значение. Но срав- мым компанией Opera Software 8. Сравнить характеристики различных
нивать PIE с MiniMo недостаточно Inc., они не рассматривают MiniMo веб-браузеров можно пользуясь табли-
честно, т.к. PIE в действительнос- браузер в качестве конкурента, цей – http://www.absoluteastronomy.com/
ти не отображает многие сайты кор- т.к. Opera-Mini работает на других encyclopedia/c/co/comparison_of_web_
ректно, у него слабая реализация платформах (Symbian OS, Palm OS). browsers.htm.
JavaScript, и он не может выполнять Сможете ли вы утверждать, что ваш 9. http://davetitus.com/mozilla.
AJAX (http://developer.mozilla.org/en/ коллектив также не рассматривает 10. http://www.absoluteastronomy.com /
docs/AJAX). Впрочем, я не открещи- браузер от Opera в качестве конку- encyclopedia/m/mo/mozilla_foundation.
ваюсь от проблемы с быстродействи- рирующего продукта? html.
ем. Да, она существует, и мы ее посте- Мне бы не хотелось оценивать, кто ко- 11. http://en.wikipedia.org/wiki/High_Tech_
пенно решаем. му является конкурентом. Лично я бро- Computer_Corporation.
Знаете ли вы, что с помощью компьютера можно не только работать с документами, играть,
обмениваться письмами, но еще и разговаривать? Сегодня, отбросив максимум рекламной
шелухи, мы рассмотрим достоинства и недостатки трех наиболее популярных клиентов
интернет-телефонии – Skype, Gizmo Project и Google Talk.
Михаил Платов
«А в чем, собственно, ринговых сетей, широко используемых П о д д е р ж к а р а з л и ч н ы х п л а т-
вопрос?» для обмена файлами (Napster, KaZaA, форм (Windows, Mac OS X, Linux,
За последние несколько месяцев ры- Gnutella и др.). С тех пор в течение поч- PocketPC).
нок компьютерной телефонии пере- ти трех лет сеть Skype активно разви- Наличие API для разработки собс-
жил несколько значительных событий. вается, а количество пользователей твенных расширений программы.
Наиболее интересными среди них яв- программы неуклонно продолжает рас- 27 различных языков в интерфей-
ляются запуск проекта Gizmo Project, ти. За первый год работы сеть набрала са клиента Skype.
а также открытие голосового сервиса свой первый миллион активных пользо-
компанией Google. Сразу после этого вателей, за второй год – еще два, сей- Как работает Skype
в сети появились многочисленные ста- час их количество медленно, но вер- Для того чтобы понять техническую
тьи, рассказывающие о преимущест- но приближается к отметке в 5 милли- часть, обратимся к рис. 1.
вах новых сетей перед старыми кон- онов… Последним значимым этапом Сеть состоит из программных кли-
курентами. Как ни странно, сколь-ни- в истории Skype стало слияние с извес- ентов Skype, работающих на компью-
будь единого мнения о том, какая же тными и популярными сервисами элек- терах пользователей. В зависимости
сеть на данный момент является луч- тронной коммерции e-bay и PayPal [1]. от условий работы один и тот же кли-
шей, представлено не было. Более то- Что же лежит в основе успеха Skype? ент может выступать либо как «обыч-
го, мнения различных обозревателей Для ответа на этот вопрос достаточно ный узел», либо как «суперузел» се-
зачастую оказывались диаметрально посмотреть на список основных воз- ти [2]. У последних есть по меньшей
противоположными. Для внесения яс- можностей программы: мере два характерных признака:
ности в этот вопрос было произведе- Передача речи, мгновенных сооб- Они всегда имеют реальный интер-
но небольшое исследование, с резуль- щений и файлов. нет-адрес.
татами которого вы сможете ознако- Высокое качество речи. Они принимают непосредственное
миться в этой статье. Итак, кандидат Проведение конференций. участие в поддержке работы сети
№1 – Skype. Связь с традиционной телефон- Skype.
ной сетью (через сервисы SkypeIn
Skype, «Let the whole и SkypeOut). Собственно, благодаря наличию
world talk for free» Дополнительные возможности (ин- «суперузлов» Skype и относят к де-
В недалеком 2003 году, основате- теграция с MS Outlook, Firefox, ра- централизованным сетям. Поиск або-
ли сети KaZaA Николас Зенстром бота с сетями wi-fi хот-спотов, воз- нентов, отслеживание их текущего со-
и Янус Фрис создали революционную можности «корпоративного» управ- стояния (активен/не активен), обмен
для своего времени программу для ин- ления счетами и др.). мгновенными сообщениями и файла-
тернет-телефонии с совершенно непо- Шифрация всех передаваемых дан- ми – все это производится с участи-
нятным названием – Skype. Ее изюмин- ных (алгоритмы AES, RC4). ем «супер узлов». Впрочем, их самой
ка заключалась в том, что для переда- Отличная работа из-за NAT и бранд- важной функцией является то, что каж-
чи «голоса» использовались идеи пи- мауэров. дый из них может выступать посред-
8
администрирование
ником при передаче голосового тра- нивались качество
фика между другими клиентами се- передаваемой ре-
ти Skype, находящимися за сервера- чи, а также величи-
ми NAT (см. вариант «3» на рис. 1). на задержки. С по-
Теоретически подход Skype позволя- м о щ ью Et he rnet-
ет бороться абсолютно со всеми ви- снифера опреде-
дами NAT (см. врезку «NAT и STUN»), лялись характер-
правда, к сожалению, борьба эта ве- ные особенности
дется руками ничего не подозреваю- реализации рабо-
щих абонентов (ведь физически «су- ты клиентов из-за
перузлы» находятся на компьютерах NAT (используемые
самых обычных пользователей сети). протоколы, IP-ад-
Так, один день работы Skype в режиме реса узлов, участ-
«суперузла» может стоить владельцу вующих в переда-
Рисунок 1. Структура сети Skype
компьютера до 800 Мб трафика других че голосового тра-
пользователей Skype [3]. Ситуация усу- фика). Вариант, при котором оба клиента
губляется тем, что на данный момент При тестировании проверялось непосредственно подключены к Ин-
не существует официального способа качество работы в следующих сце- тернет при тестировании не рассмат-
запретить клиенту Skype становиться нариях: ривался. Такая схема подключения яв-
«суперузлом». Конечно же, можно схит- Разговор между двумя абонентами, ляется достаточно редкой. Все же ча-
рить и поместить свой компьютер за находящимися за одним и тем же ще такие люди работают либо из-за
NAT, но в таком случае вы лишь обос- NAT-сервером (внутри организа- сервера NAT, либо через прокси-сер-
трите проблему качества речи в сети, ции или локальной сети). вер (локальные и корпоративные се-
переложив ее решение на плечи дру- Разговор между абонентом находя- ти) и очень редко напрямую (как пра-
гих пользователей Skype. щимся в Интернет (dial-up-подклю- вило, это удел конечных пользовате-
чение), и абонентом за динамичес- лей, часто dial-up). К тому же прове-
Личное знакомство ким NAT (разговор между пользо- дение всех вариантов тестов с реаль-
Итак, идем на http://www.skype.net и за- вателями Интернета, подключен- ными интернет-адресами в моем слу-
гружаем Windows-версию клиента ными к одному и тому же провай- чае было несколько затруднительным.
Skype (на момент написания статьи – деру). Отчаиваться по этому поводу не стоит,
версия 1.3.0.66). Владельцам модемов Разговор между двумя абонента- результаты тестов в данном сценарии
придется подождать загрузки 7-мега- ми (dial-up и LAN), находящимися более чем предсказуемы.
байтного файла установки. После ин- за различными несимметричными
сталляции запустим программу и за- NAT-серверами (разговор между Тестирование Skype
регистрируем себе уникальное имя пользователями Интернета, под- Первый же тест преподнес сюрприз –
в сети Skype. ключенными к различным провай- даже находясь в одной локальной се-
Интерфейс программы достаточно дерам). ти, клиенты Skype умудрялись обме-
прост и понятен (см. рис. 2). нивались данными через «суперузел»
Первое, что мы сделаем, – найдем в Швейцарии, подключенный к Интер-
человека, с которым будем общать- нету с помощью беспроводной тех-
ся (можно искать по skype-именам нологии 802.11. (провайдер Monsoon
или просто найти пользователей в ре- Networks). Думаю здесь комментарии
жиме Skype-me, желающих поболтать), излишни.
и добавим его в список контактов. Пос- При тестировании по второй схе-
ле этого, нажав на зеленую кнопку вни- ме поведение клиента полностью со-
зу экрана, мы начнем звонить. В мо- ответствовало ожидаемому – данные
ем случае вызов проходил достаточно передавались напрямую между учас-
долго – около 10 сек. Кроме того, когда тниками (см. вариант «2» на рис. 1).
у вызываемого абонента было запуще- Субъективно качество речи было луч-
но несколько skype-клиентов на раз- ше, чем при разговоре по обычному те-
ных компьютерах (для Skype такая си- лефону, но все-таки хуже, чем у конку-
туация допускается), звонок иногда до- рентов (см. ниже).
ходил только до одного из них. Третья схема (см. «3», рис. 1) пол-
ностью повторила результаты первой,
Методика тестирования разве что география в этот раз бы-
Для каждой из рассматриваемых се- ла другой – Великобритания, Япония
годня программ проводился опреде- и США. Качество речи сильно меня-
ленный набор испытаний. В процес- лось от звонка к звонку – от полной
се каждого теста субъективно оце- Рисунок 2. Интерфейс skype-клиента невозможности разговора, до ред-
10
администрирование
ются на указанный в систе- го, но интенсивного тестиро-
ме e-mail. вания Call Out качество речи
Таким образом, сообще- было несколько хуже, чем при
ния голосовой почты также внутрисетевых звонках. При-
можно централизованно хра- чиной этому, судя по всему,
нить на любом почтовом сер- являлось транскодирование.
вере. В параметрах настрой- Дело в том, что подавляю-
ки Gizmo можно указать вто- щее большинство оборудо-
рой e-mail адрес, на который вания операторов не подде-
будут отсылаться уведомле- рживает даже открытый ко-
ния о пришедших голосовых дек iLBC, не говоря уже о ком-
сообщениях (так предлагает- мерческом ISAC и его собра-
ся реализовывать SMS-опо- тьях из пакета GIPS. Поэто-
вещения). При желании мож- му звонки перед терминаци-
Рисунок 5. Отображение положения участников разговора
но настроить безусловную на карте мира ей скорее всего подвергаются
переадресацию входящих транскодированию на одном
звонков на другой номер, в том чис- места – реализованные возможности из серверов SipPhone, которое и при-
ле и номер ТФОП (в этом случае або- STUN оптимальны с точки зрения сов- водит к некоторому ухудшению качес-
нент будет оплачивать все переадре- местимости с другими устройствами тва речи. С другой стороны, благодаря
суемые звонки по соответствующему сети. Впрочем, это вовсе не означает, транскодированию даже пользователи
тарифу для Call Out). что специальные расширения функци- с низкоскоростными интернет-канала-
Другой приятной особенностью ональности для лучшей совместной ми могут делать call-out-звонки с при-
Gizmo является отображение учас- работы Gizmo из-за NAT невозможны емлемым качеством.
тников разговора на карте мира в принципе… Для услуг междугородной и меж-
(см. рис. 5). Для этого использует- дународной телефонии SipPhone,
ся интерфейс системы Google Maps. Групповое использование как и другие подобного рода компании,
К слову реализация этой возможности Одним из таких «расширений» мож- скорее всего использует возможнос-
тоже имеет мелкие недостатки. Так при но считать службу Bonjour. Послед- ти крупных операторов IP-телефонии.
совершении звонков через Call Out на няя является реализацией открыто- Как правило, последние для передачи
карте вместо расположения вызыва- го протокола IETF Zeroconf и активно голоса используют выделенные сети
емого абонента (которое достаточно используется в MacOS X для простой IP MPLS, поэтому проблем с ухудше-
точно можно определить по номеру работы с сервисами в локальной сети нием качества на их участке не воз-
телефона) показывалась точка в США (сетевые настройки компьютеров, ра- никает и наибольшее влияние все-та-
(предположительно точка установки бота с файлами и принтерами, обмен ки оказывает состояние интернет-ка-
шлюза, соединяющего SipPhone c тра- музыкой и картинками). С помощью нала между клиентом и сервером
диционными сетями). этой службы клиенты Gizmo Project SipPhone. На данный момент серверов
могут напрямую передавать голосо- SipPhone, работающих за пределами
Работа с NAT вой трафик при звонках в рамках од- США, обнаружено не было – при раз-
В этом пункте Gizmo Project продол- ной подсети. говорах голосовые пакеты всегда пе-
жает следовать идее максимально- Некоторые пользователи сообща- редавались через единственный сер-
го использования уже существующих ли о проблемах в работе управляе- вер, расположенный в США. (Справед-
и проверенных технологий. При рабо- мого оборудования D-Link, возникаю- ливости ради нужно отметить, что при
те с клиентами, находящимися за NAT, щих после установки Bonjour (вместе прочих равных условиях качество речи
используется открытый протокол с Gizmo Project или Apple iTunes) [5], по- в Gizmo при проведении тестирования
STUN. Правда, как показало практи- этому если возможность прямых раз- из-за NAT было лучше, чем у Skype, ис-
ческое исследование поведения теку- говоров в локальной сети вам не нуж- пользующего для транзита «суперуз-
щей версии Gizmo, возможности STUN на, а потенциально «проблемное» обо- лы» в Японии, Европе и США.)
реализованы далеко не полностью – рудование имеется просто деинстал-
только для передачи данных между лируйте эту службу с помощью про- А все ли хорошо
клиентом за NAT и интернет-сервером граммы TurnOffBonjour.exe, входящей в американском королевстве…
сети SipPhone. В этом случае на качес- в стандартную инсталляцию Gizmo. К сожалению, при работе с Gizmo
тво речи значительное влияние будет не обошлось и без большой ложки де-
оказывать взаимное расположение Особенности терминации гтя. Во-первых, программа действи-
клиента и сервера. Последний, к сло- Для тестирования услуги звонков тельно является бета-версией (а мес-
ву, находится в США. на обычные телефоны все вновь ре- тами даже и альфа), особенно в пла-
Если же вспомнить, что в сети гистрирующиеся пользователи полу- не стабильности. Так, клиент несколь-
SipPhone помимо клиентов Gizmo так- чают на счет 35 центов. Стоимость ко раз произвольно завершал свою ра-
же работают обычные шлюзы и IP-те- звонка в Россию – 7 центов, тарифика- боту (особенно часто при попытке от-
лефоны, то все сразу встает на свои ция – поминутная. В процессе коротко- правки IM-сообщений на русском язы-
Google Mail. Для получения последней Google особенно интересен. Если Таким образом, возможно, уже сей-
нужно попросить любого знакомого Skype использует собственный за- час в клиенте Google Talk есть подде-
с почтой Gmail прислать вам пригла- крытый протокол, а Gizmo Project – ржка популярного в мире IP-телефо-
шение. К сожалению, других офици- стандартный для IP-телефонии SIP, нии кодека G723! С точки зрения здра-
альных способов регистрации в Gmail то в основе Gtalk лежит протокол вого смысла это может означать од-
для людей, проживающих за предела- Jabber/XMPP, широко используемый но – интеграция с телефонными сетя-
ми США, на данный момент нет. Open Source-сообществом для пере- ми не за горами. Причем благодаря то-
После получения приглашения дачи мгновенных сообщений. Благода- му, что поддержка кодека есть непос-
и успешной регистрации можно войти ря этому совместно с Google Talk гипо- редственно в клиенте, отпадает не-
в Gtalk. Интерфейс программы типичен тетически можно использовать абсо- обходимость в перекодировании ре-
для Google – просто, удобно и в то же лютно любой Jabber-клиент. Список га- чи, что для конечных пользователей
время красиво (см. рис. 6). рантированно работающих альтерна- должно отразиться в более высоком
Имеется традиционный список тив можно найти на соответствующем качестве речи при разговорах с або-
контактов, для его наполнения можно разделе сайта google [6]. Клиенты бу- нентами телефонных сетей. Главное,
использовать адресную книгу Gmail дут работать с сервером Google, поэ- чтобы версия в клиенте Google оказа-
или просто ввести e-mail нужного че- тому создавать учетную запись в Gmail лась совместимой с тем, что называ-
ловека в поле поиска. Если введенный все равно придется. В будущем плани- ется G723.1 у телефонистов…
12
администрирование
NAT и STUN нию, возникают проблемы. Так, при уста- только в том случае, если узел за NAT
На сегодняшний день подавляющее чис- новке соединения с помощью SIP участни- сам предварительно посылал им какие-
ло компьютеров подключено к Интерне- ки диалога внутри SIP-сообщений указы- либо пакеты.
ту с использованием протокола четвер- вают IP-адреса и номера портов, которые Динамический NAT, ограниченный
той версии протокола IP. Одной из извест- будут использоваться для передачи RTP- по IP-адресам и портам. То же, что
ных проблем этой версии является нехват- пакетов. Если NAT-сервер не занимается и предыдущее, только ограничения за-
ка адресного пространства. Так, для адре- анализом содержимого пакетов на уров- даны более жестко: узел в Интернет мо-
сации в IPv4 используется 32 разряда, что не протокола (а именно так все известные жет отсылать пакеты только с того пор-
позволяет обращаться к 4 294 967 296 ус- реализации и поступают), то RTP-пакеты та, на который он предварительно что-
тройств. Для Интернет на стадии его за- просто не дойдут до адресата, ведь в SIP- то получил от узла из-за NAT.
рождения (20 лет назад) эта цифра ка- сообщениях будут указаны внутренние Симметричный NAT – все пакеты от
залось огромной. С позиции настоящего немаршрутизируемые адреса участни- внутреннего IP-адреса и порта к вне-
времени эта цифра уже не кажется столь ков. Для решения этой проблемы исполь- шнему IP-адресу и порту преобразуют-
большой, напротив, многие говорят о гря- зуется протокол STUN – Simple Traversal of ся в один и тот же IP-адрес и порт NAT-
дущей нехватке IP-адресов, особенно ког- UDP through NAT [9]. Его основная идея за- сервера. Отличие заключается в том,
да начнут появляться бытовые устройства ключается в том, чтобы дать возможность что при обращении к различным вне-
(телефоны, холодильники и другие предме- клиенту определить, что он находится за шним IP-адресам порты на NAT-серве-
ты бытовой техники), подключенные к Ин- NAT, а также сообщить ему IP-адрес и но- ре тоже будут изменяться. Таким обра-
тернету. Сейчас же для «экономии» час- мер порта, которые получатся после транс- зом, только один интернет-узел может
то используется механизм NAT – Network ляции внутреннего адреса сервером NAT. посылать пакеты узлу, находящемуся
Address Translation. Общую идею NAT мож- Имея эту информацию, клиент сможет сам за NAT-сервером.
но описать так: преобразование адресов правильно указать в SIP-сообщениях вне-
одной сети в адреса другой сети. В наибо- шний адрес и номер порта для передачи Для первых трех типов NAT можно с ус-
лее популярном частном случае (подклю- RTP-данных на сервере NAT. пехом использовать внешний STUN-сер-
чение локальной сети к Интернету) это бу- С точки зрения STUN выделяются 4 ос- вер, а вот для четвертого типа этот метод
дет трансляция внутренних адресов ло- новных типа реализации NAT-серверов: уже не поможет – номера портов, назнача-
кальной сети (10.0.0.0/8, 172.16.0.0/12, Динамический неограниченный NAT. емые для пакетов к STUN-серверу и второ-
192.168.0.0/16) в один внешний интернет- В этом случае все запросы от опреде- му участнику разговора, будут разными.
адрес, полученный от провайдера. Обраба- ленного внутреннего IP-адреса и пор- Единственным возможным здесь вариан-
тывая пакеты, NAT-сервер будет просто за- та отображаются на один и тот же вне- том является интеграция функциональнос-
менять «локальные» адреса клиентов сво- шний IP-адрес и порт. Кроме того, раз- ти STUN-сервера в прокси-сервер голосо-
им интернет-адресом, а при получении от- личные узлы Интернета могут послать вого трафика. В этом случае номера пор-
ветных данных из Интернета будет прово- пакеты узлу за NAT, отправляя их на со- тов будет возможно определить, и соеди-
дить обратное преобразование. При этом ответствующий порт NAT-сервера. нение будет установлено. Вам это еще ни-
для служб, работающих на уровне IP, ника- Динамический NAT, ограниченный чего не напоминает? Правильно! Именно
ких проблем не возникает – NAT прозрач- по IP-адресам. То же, что и предыду- так и работает механизм «суперузлов» сети
но меняет заголовки IP-пакетов. С прото- щее, за исключением того, что вне- Skype, позволяющий успешно работать да-
колами более высокого уровня, к сожале- шние узлы могут посылать пакеты же из-за симметричного сервера NAT.
Чего в Gtalk нет вать таковыми контакты Gmail мож- ализована не вся желаемая функцио-
Оценивать функциональность Google но лишь с очень большой натяжкой), нальность.
Talk достаточно сложно. Если в ряду крайне ограниченны возможности по-
его конкурентов рассматривать Skype иска абонентов (глобального катало- Российский путь
и Gizmo Project, то, безусловно, наибо- га нет, только личная адресная кни- Некоторое представление о том, как
лее существенным недостатком будет га из Gmail). развивается интернет-телефония в ми-
отсутствие связи с традиционной те- ре, мы получили, но что происходит
лефонной сетью. Если же конкурента- Статус и стабильность у нас? Говоря об интернет-телефонии
ми будут «мессенджеры» от Microsoft, На данный момент сервис Gtalk офи- в России, можно упомянуть, как мини-
AOL и Yahoo, то в сравнении с ними уже циально находится в стадии Beta. Од- мум, два проекта – Mail.Ru Agent и сеть
имеющиеся на данный момент воз- нако, как показало непродолжитель- sipnet.ru.
можности передачи голоса будут бо- ное, но достаточно интенсивное тес-
лее чем достаточны. тирование, детище Google на данный Mail.ru Agent
Что же касается других полез- момент более чем стабильно – за все Детальное изучение MRA показа-
ных, но пока отсутствующих функций, время испытаний не возникло ни од- ло, что он скорее является очеред-
то в Gtalk на данный момент нет аудио- ной ошибки. ным ICQ-клоном, ориентированным
и видеоконференций, нельзя исполь- Таким образом, приставка beta в первую очередь на обмен мгновен-
зовать эмотиконы, практически отсутс- в названии данной программы скорее ными сообщениями. Голосовые функ-
твуют профили пользователей (назы- означает то, что пока в программе ре- ции номинально имеются, но качество
«Sound by Global IP Sound» шее, по сравнению с конкурентами, качес- Как результат, при нехватке пропуск-
Такую фразу можно встретить в описании тво передачи речи». ной способности качество речи у вто-
большинства рассмотренных сегодня сис- А теперь, как говорится, вопрос на за- рого клиента будет лучше.
тем (кроме сети Тарио и агента Mail.Ru). Не- сыпку – если все рассмотренные сегод- Благодаря выбору более оптимального
которые пояснения по поводу смысла этой ня сети для передачи речи используют маршрута удалось найти такой путь до-
фразы можно найти на сайте [10]. Соглас- один и тот же набор кодеков от GIPS (а су- ставки пакетов, что задержка и процент
но размещенной там информации, предме- дя по официально доступной информа- потерь оказались меньше, чем у конку-
том деятельности компании Global IP Sound ции, так оно и есть), то почему же так от- рентов.
является разработка и лицензирование личается качество передачи речи в раз-
речевых кодеков IP-телефонии, обладаю- личных сетях? Первый случай скорее является край-
щих высоким качеством речи и более ус- Можно привести два варианта ответа ностью, и его суть кратко можно выразить
тойчивых к потерям IP-пакетов. Наиболее на этот вопрос: так – «ошибка проектировщиков и про-
известным кодеком этой компании яв- Используются различные алгоритмы граммистов».
ляется iLBC – Internet Low Bitrate Codec выбора конкретного кодека из паке- Второй вариант, при прочих равных ус-
(см. [11]), описание алгоритма работы ко- та, предоставляемого GIPS. Реаль- ловиях, может оказывать очень сильное
торого можно найти в RFC-3951. Другими, но это может означать следующее – влияние на качество. Так, разговаривать
но уже закрытыми, кодеками GIPS являют- там, где одна программа выбирает, через неизвестный узел в Японии или бес-
ся – iSAC, Enhanced G711, iPCM-wb. Более например, iLBC с размером потока проводного клиента в Швейцарии (Skype),
подробное описание их особенностей мож- 13.3 кБит/с, другая благодаря исполь- как правило, оказывалось хуже, чем через
но найти в [12], кратко информацию, при- зованию более совершенных методов выделенный сервер в США (Gizmo). Луч-
водимую в данном документе, можно вы- определения имеющейся пропускной шее же качество достигалось при переда-
разить так: «Закрытые кодеки при опре- способности выбрала менее требова- че данных напрямую между участниками
деленных условиях могут обеспечить луч- тельный ISAC с битрейтом 10 кБит/с. разговора (Google Talk).
их практической реализации (по срав- Работа с NAT ля он запросто может поставить в ту-
нению с тем же GTalk) оставляет же- Как видно из названия, сеть использу- пик – «интуитивного понимания» нет.
лать лучшего. Оценку голосовых воз- ет протокол SIP. Вариант борьбы с NAT Прежде чем что-либо сделать, реко-
можностей, к сожалению, произвес- стандартен – STUN. Сеть предостав- мендуется обязательно ознакомиться
ти не удалось – при нахождении або- ляет свой сервер (stun.sipnet.ru), кли- с соответствующим разделом встро-
нентов за NAT слышимость была ну- ентская часть протокола присутству- енной системы помощи. Кроме того,
левой. ет во всех популярных SIP-клиентах. часть настроек учетной записи доступ-
С технической точки зрения MRA По информации с официального сай- на в свойствах учетной записи сервера
использует собственный бинарный та, реализация STUN в sipnet.ru поз- CommuniGate PRO. Описание этих на-
протокол (на вид достаточно ICQ- воляет работать даже из-за симмет- строек приводится уже в другом мес-
подобный), что ограничивает круг ричного NAT, хотя на практике устано- те. Другими словами, в плане «друже-
его применения только абонентами вить соединение из-за NAT при помо- любного» интерфейса spinet еще есть
mail.ru. щи клиента x-lite мне не удалось. (хо- чему поучиться…
тя Gtalk, Skype и Gizmo соединялись Второй вариант использует те же
Sipnet.ru без проблем). узлы сети Tario, но уже для вызова або-
А вот этот проект, как оказалось, име- нентов sipnet. Позвонив на номер узла
ет самое что ни на есть непосредствен- Связь с телефонными сетями Tario в вашем городе и набрав добавоч-
ное отношение к теме нашего сегод- Связь с телефонными сетями возмож- ный SIP-номер абонента, вы можете
няшнего разговора. Сеть sipnet в неко- на в двух вариантах: позвонить любому пользователю сети
тором смысле можно считать россий- Звонки абонентов sipnet в ТФОП. sipnet. Если же абонент занят или не-
ским аналогом SipPhone. Так, с 27 ок- Звонки из ТФОП абонентам spinet. доступен, вы можете оставить ему со-
тября каждый желающий может бес- общение голосовой почты (для реали-
платно подключиться к сети sipnet.ru, Для «приземления» звонков в те- зации этой возможности используется
заполнив небольшую форму на веб- лефонные сети используется платфор- платформа CommuniGate PRO). Спи-
сайте. Собственного программного ма Tario Softswitch. Одной из ее осо- сок городов и номеров телефонов уз-
клиента (как Gizmo Project у sipphone), бенностей является то, что абоненты лов доступа на данный момент приво-
у sipnet нет, вместо это предлагается сами могут выбирать конкретные уз- дится только в личном кабинете або-
использовать бесплатные версии про- лы, через которые будут совершаться нента sipnet. Звонок на узел Тарио та-
грамм, поддерживающих протокол SIP их звонки (до появления sipnet эта воз- рифицируется как звонок на обычный
(CounterPath x-lite, Microsoft Messenger можность была доступна только опера- городской телефон.
и др). Также можно использовать ап- торам, работающим с Tario). Специа-
паратные голосовые шлюзы, причем листам интерфейс-платформы более Качество речи
юридическим лицам Sipnet готов пре- чем понятен (ведь для них это и дела- К сети могут подключаться любые SIP-
доставить их бесплатно. лось), а вот начинающего пользовате- совместимые клиенты. На официаль-
14
администрирование
Таблица 1. Сводная таблица возможностей Нет четкой политики относитель-
Возможности Skype Gizmo Project (Beta) Google Talk (Beta) Sipnet.ru* но использования мгновенных со-
Связь с телефонными сетями Да Да Да Да общений.
Возможность проведения
Да Да Нет Нет Общие недочеты в реализации
конференций
служб (неполная локализация), от-
Мгновенные сообщения Да Да Да Нет
Да, за дополнительную
сутствие https в личном кабинете,
Голосовая почта Да, бесплатно Нет Да, бесплатно
плату нетипичный интерфейс форума.
Дополнительные услуги Да, средствами
Да, за дополнительную
(переадресация, автоответчик Да Нет платформы
и т. д.)
плату
CommuniGate PRO Вместо выводов
Передача файлов Да Нет Нет Нет В заключение подведем краткий итог.
Возможность работы с другими
Нет Да Нет Да Самое большое преимущество Skype –
сетями
количество пользователей. Согласи-
Шифрация трафика Да Нет Нет Нет
тесь, довольно сложно использовать
Субъективная оценка работы
4 3 5 2
с NAT (максимум – 5 баллов) Gizmo, если все знакомые в Skype,
«Прямые звонки» между
Нет Да, с помощью Bonjour Да, с помощью STUN Неизвестно а если вспомнить, что Skype еще и за-
абонентами локальной сети
крыт, то надеяться на «мягкую» миг-
Да, с использованием Да, с помощью самой Да, с использованием
Возможность записи разговоров
средств 3-х фирм программы средств 3-х фирм
Нет
рацию и вовсе не приходится. Если же
Набор речевых кодеков
Да Да Да Нет
раньше вы и ваши друзья не пользо-
от Global IP Sound
вались интернет-телефонией, посмот-
Используемый протокол Собственный SIP XMPP SIP
рите на Gizmo Project или Google Talk.
Возможность контроля качества Номинально присутствует, Есть, работает
речи в реальном времени
Нет
но работает некорректно достаточно корректно
Нет
С помощью первого можно звонить
Отображение собеседников
Нет Да Нет Нет
на обычные телефоны, второй же мо-
на карте
жет прийтись по вкусу тем, кто допол-
Возможность расширения
функциональности
Да, через API Нет Нет Нет нительно хочет сменить (или получить)
Размер дистрибутива 7,2 Мб 9,3 Мб 960 Кб Неприменимо e-mail. Владельцам широкополосного
Потребление памяти при работе 18,4 Мб 14 Мб 2,6 Мб Неприменимо подключения к Интернету (128 кбит/с
Windows, MacOS X,
Windows 2000/XP, и выше) можно посмотреть в сторону
Поддерживаемые платформы MacOS X, Linspire Windows 2000/XP Неприменимо
Linux, Pocket PC sipnet, особенно если вам часто прихо-
Статус Release Beta Beta Неприменимо дится звонить, а в плане мгновенных
* Приводятся возможности только для сети Sipnet.ru. Sipnet – это не клиент, а открытая сеть и некоторые пункты к нему (как к сети) сообщений устраивает и ICQ.
не применимы
Более подробное сравнение воз-
ном сайте имеются инструкции по на- нации), но, насколько мне известно, та- можностей всех рассмотренных се-
стройке Microsoft Windows Messenger кого сервиса у sipnet.ru пока нет. годня клиентов можно найти в Таб-
и CounterPath X-lite. При работе с этими лице 1.
программами скорее всего придется Краткий итог
использовать самые неэкономичные Основные плюсы sipnet.ru: Литература и ссылки:
кодеки G711A и G711U (MS Messenger Бесплатные внутрисетевые звонки 1. http://investor.ebay.com/event.cfm.
других и не знает, а все остальное, и голосовая почта. 2. Salman A Baset, Henning Schulzrinne, An
что входит в x-lite, на практике не под- Дешевые междугородные и между- Analysis of the Skype Peer-to-Peer Internet
держивается терминирующими шлю- народные звонки. Telephony Protocol, September 2005.
зами провайдеров). Возможность звонков абонентам 3. http://www.connect.ru/article.asp?id=4997.
Как мы помним из [11], для такой сети sipnet через выделенные го- 4. http://www.imfederation.com.
связи нам понадобится канал свя- родские номера. 5. http://www.voipuser.org/forum_topic_
зи около 80 кБит/c в каждую сторону Возможность пополнения счета че- 2567.html.
(пользователям dial-up можно не бес- рез российские системы интернет- 6. http://www.google.com/talk/otherclients.
покоиться). расчетов. html.
Если же взять SIP-клиент или аппа- Дополнительные возможности (на- 7. http://www.imfederation.com.
ратный шлюз с поддержкой G723 или стройки маршрутизации, заказ 8. http://www.google.com/talk/developer.
G729, то можно без проблем пользо- звонков). html#protocols.
ваться междугородной связью, а вот Возможности группового исполь- 9. Rosenberg J, STUN – Simple Traversal
при разговорах с другими абонента- зования. of User Datagram Protocol (UDP) Through
ми сети трудности останутся – из-за ог- Network Address Translators (NATs),
раничений нашего канала мы не смо- Основные минусы sipnet.ru RFC3489, march 2003.
жем говорить с пользователями x-lite Нет удобного и интуитивно понят- 10. http://www.globalipsound.com.
и MS Messenger. ного интерфейса пользователя. 11. Платов М. Что важно знать об IP-теле-
В принципе эта проблема могла бы Нет четких правил относительно фонии. – Журнал «Системный адми-
решаться использованием централи- используемых кодеков. нистратор», №5, май 2005 г. – 20-25 c.
зованного перекодирования (как это, Сложности в работе dial-up-клиен- 12. Global IP Sound GIPS Codecs – http://www.
например, делает sipphone при терми- тов. globalipsound.com/datasheets/Codecs.pdf.
Сергей Супрунов
Протокол FTP предназначен для передачи файлов по сети. Существует множество очень
функциональных ftp-серверов, однако для использования в «личных» целях, как правило,
вполне достаточно возможностей входящей в состав FreeBSD программы ftpd.
П
рограмма ftpd представляет собой достаточно прос- Протоколом определены два режима взаимодействия:
той ftp-сервер. В отличие от таких инструментов, активный и пассивный, понимание которых крайне важно
как ProFTPd, PureFTPd и других, ftpd не имеет раз- в случае использования в сети брандмауэров.
витых средств конфигурирования, работы с правами до-
ступа и т. д. Однако если вы не собираетесь строить пуб- Активный режим работы FTP
личный ftp-сервер, то его возможностей вам вполне хва- В активном режиме процесс установления соединения
тит для организации «бытовых» функций, таких как обмен между сервером и клиентом выглядит следующим об-
файлами между сервером и вашей рабочей машиной, на- разом:
пример, для размещения HTML-страниц на веб-сервере Клиент с непривилегированного порта (с номером боль-
или настройки простейшего резервирования. ше 1024) отправляет запрос на порт 21 сервера (порт уп-
равления).
Начнем с теории После процедуры авторизации (команды USER и PASS)
Для начала давайте коротко ознакомимся с самим прото- клиент начинает прослушивать порт N и отправляет
колом FTP. Он описывается довольно объемным докумен- на сервер команду PORT, сообщающую ему, какой имен-
том RFC 959 и определен только для транспортного прото- но порт открыт.
кола TCP; UDP-реализации, в отличие от TFTP, нет. Сервер, получив команду PORT, устанавливает соеди-
Характерной отличительной особенностью FTP от дру- нение с указанным портом N со своего порта 20. Это со-
гих протоколов является то, что он для своей работы за- единение используется для передачи данных.
действует два порта – порт данных и порт управления.
Порт управления используется для установления соеди- Посмотрим, как это происходит на практике. Для эму-
нения между клиентом и сервером, для управления режи- ляции работы управляющего соединения вполне подой-
мами работы и т. д. дет стандартная утилита telnet. Чтобы посмотреть, как ра-
В то время как порт данных служит для передачи запра- ботает порт данных, воспользуемся небольшой програм-
шиваемой информации. мкой на Python:
16
администрирование
#!/usr/local/bin/python Теперь по команде LIST, запрашивающей список фай-
# lystener – скрипт для прослушивания указанного порта
лов в текущем каталоге, сервер устанавливает соедине-
import sys, socket ние с указанным портом (со стороны сервера используется
host = str(sys.argv[1]) порт 20) и передает запрошенные данные, которые и фикси-
рует наш сценарий. После выполнения команды соединение
port = int(sys.argv[2])
по порту данных разрывается, но управляющее соединение
s = socket.socket() сохраняется, пока не будет подана команда QUIT.
s.bind((host, port))
s.listen(1) Как видите, активный режим удобен для администра-
m = s.accept() тора сервера, поскольку при этом задействуются только
print 'Connected on', m[1]
порты 20 и 21 (причем инициализация соединения – только
while(1): на 21 порту), а остальные можно смело закрыть брандмау-
rsv = str(m[0].recv(256))
print rsv эром. С другой стороны, для клиента этот режим крайне не-
if rsv == '': приятен, так как вынуждает держать открытыми непривиле-
print 'No data more. Connection is closed.'
break; гированные порты. Поскольку общепринятой практикой яв-
ляется запрет любых входящих соединений на клиентские
m[0].close()
s.close() машины (а в случае работы через NAT вообще требуется
выполнять «проброс» внешних соединений до клиента либо
Этот скрипт будет прослушивать соединение на ука- организовывать работу в режиме прокси-сервера), то в этом
занном в параметрах командной строки порту и выводить плане более удобным является пассивный режим.
на экран всю полученную через созданный сокет инфор-
мацию. Пассивный режим работы FTP
Откроем две терминальные сессии, которые услов- В этом случае все соединения инициируются клиентом,
но назовем cmd (порт управления, обмен данными пока- что позволяет обойти ограничения, налагаемые обычно
зан зеленым шрифтом) и data (порт данных, соответству- брандмауэром и серверами NAT. Процесс организации со-
ющие строки – серые). Ввод пользователя выделен крас- единения теперь выглядит следующим образом:
ным шрифтом. На приведенном ниже листинге строки обо- Клиент с непривилегированного порта (с номером боль-
их терминалов показаны вперемежку, отображая хроноло- ше 1024) отправляет запрос на порт 21 сервера (порт уп-
гию их работы: равления).
После процедуры авторизации (команды USER и PASS)
cmd: serg$ telnet localhost 21
cmd: Trying 127.0.0.1...
клиент отправляет на сервер команду PASV, информи-
cmd: Connected to localhost. рующую о том, что он намерен работать в пассивном
cmd: Escape character is '^]'. режиме.
cmd: 220 myserver.ru FTP server (Version 6.00LS) ready.
cmd: USER username Сервер открывает непривилегированный порт и сооб-
cmd: 331 Password required for username. щает его номер клиенту.
cmd: PASS userpasswd
cmd: 230 User username logged in, access restrictions apply.
Клиент со своего порта N инициирует соединение на ука-
data: serg$ ./lystener localhost 25623 занный сервером порт, который и используется для об-
cmd: PORT 127,0,0,1,100,23 мена данными.
cmd: 200 PORT command successful.
cmd: LIST
cmd: 150 Opening ASCII mode data connection for '/bin/ls'. Чтобы смоделировать работу FTP-клиента в пассивном
data: Connected on ('127.0.0.1', 20)
режиме достаточно двух telnet-сессий:
data: total 8
data: drwxr-xr-x 2 0 0 512 Jun 4 2001 bin
data: drwxr-xr-x 2 1012 0 512 Sep 21 07:44 downdata cmd: serg$ telnet localhost 21
data: drwxr-xr-x 2 1012 0 512 Nov 12 2004 mankit cmd: Trying 127.0.0.1...
data: drwxr-xr-x 2 1012 0 512 Aug 26 04:58 updata cmd: Connected to localhost.
data: cmd: Escape character is '^]'.
data: cmd: 220 myserver.ru FTP server (Version 6.00LS) ready.
data: No data more. Connection is closed. cmd: USER username
cmd: 226 Transfer complete. cmd: 331 Password required for username.
cmd: QUIT cmd: PASS userpasswd
cmd: 221 Goodbye. cmd: 230 User username logged in, access restrictions apply.
cmd: Connection closed by foreign host. cmd: PASV
cmd: 227 Entering Passive Mode (127,0,0,1,245,5)
data: serg$ telnet localhost 62725
Итак, сначала мы устанавливаем соединение с пор- data: Trying 127.0.0.1...
том 21 сервера, проходим процедуру аутентификации. За- data: Connected to localhost.
тем запускаем во втором терминале наш скрипт lystener на data:
cmd:
Escape character is '^]'.
LIST
порту 25623 хоста localhost. Теперь даем серверу команду cmd: 150 Opening ASCII mode data connection for '/bin/ls'.
PORT, сообщая, на каком именно порту мы ждем соедине- data: total 8
data: drwxr-xr-x 2 0 0 512 Jun 4 2001 bin
ния. Обратите внимание на синтаксис команды: в качест- data: drwxr-xr-x 2 1012 0 512 Sep 21 07:44 downdata
ве аргументов указываются шесть октетов (первые четыре data: drwxr-xr-x 2 1012 0 512 Nov 12 2004 mankit
соответствуют IP-адресу хоста, последующие два – стар- data:
data:
drwxr-xr-x 2 1012 0 512 Aug 26 04:58 updata
Connection closed by foreign host.
ший и младший байты номера порта). В нашем случае порт cmd: 226 Transfer complete.
данных – 100*256 + 23 = 25623. cmd: QUIT
18
администрирование
Если же ни одно из приведенных выше условий не вы- командной строки. Если вы запускаете ftpd из inetd, добавьте
полнено, то в случае указания правильного пароля поль- нужные параметры в соответствующей строке файла inetd.
зователь получает ftp-доступ ко всей файловой систе- conf (по умолчанию там записан только ключ -l). Если же
ме согласно имеющимся у него правам. предпочтете воспользоваться приведенным выше сцена-
рием для запуска ftpd в режиме демона, то дополнительные
Анонимный доступ ключи можно указать в файле rc.conf, в строке ftpd_flags.
Чтобы разрешить анонимный доступ по FTP, вам потребу- Некоторые ключи, которые могут быть полезны:
ется вручную создать системного пользователя с именем -D: запускать ftpd в режиме демона.
ftp. У этого пользователя должна быть «легальная» оболоч- -a <адрес>: в режиме демона принимать соединения
ка (одна из указанных в /etc/shells), и он должен иметь до- только на указанный IP-адрес.
машний каталог, в котором и будут размещаться файлы, до- -d: включить режим отладки (подробная информация о ра-
ступные анонимному пользователю. Также у него не может боте будет выдаваться серверу syslog как LOG_FTP).
быть пустого пароля. По умолчанию, анонимный пользова- -h: не выводить информацию о системе в сообщениях
тель не может модифицировать или удалять существующие сервера.
файлы. Разрешено только создавать новые при условии, -l: протоколировать все сессии (обычно используется
что пользователь ftp будет иметь достаточно прав на запись. /var/log/xferlog).
Дополнительно регулировать доступ к каталогам и фай- -A: разрешить только анонимный доступ.
лам (например, полностью запретить запись в определен- -M: запретить анонимным пользователям создавать пап-
ную папку) можно силами операционной системы, выстав- ки.
ляя соответствующие права пользователю ftp. В частнос- -m: разрешить анонимным пользователям модифици-
ти, рекомендуется запрещать для пользователя ftp запись ровать существующие файлы (если для этого достаточ-
в его домашний каталог, чтобы исключить возможность пе- но системных прав).
реполнения раздела, на котором он размещен. -o, -O: разрешить только запись на сервер всем пользо-
вателям (-o) или только анонимному пользователю (-O).
Ограниченный доступ В частности, таким образом можно организовать сбор
В том случае, если имя пользователя присутствует в фай- с удаленных серверов файлов резервных копий, чтение
ле /etc/ftpchroot, то соответствующий процесс запускает- которых пользователями не предусмотрено.
ся в chroot-окружении, ограничивая пользователю доступ -r: перевести сервер в режим «только для чтения». Лю-
только его домашним каталогом (или тем, который указан бая модификация размещенных данных будет запре-
во втором поле файла ftpchroot). При необходимости орга- щена.
низовать такую работу для большого числа пользовате-
лей (например, дать всем абонентам доступ для обновле- Дополнительную информацию всегда можно найти
ния своих домашних веб-страничек), в ftpchroot можно ука- на странице руководства man ftpd(8).
зать общую для них группу, предварив ее имя символом @.
Во втором поле дополнительно может быть указан ката- Заключение
лог, который следует использовать в качестве корневого Как видите, ftpd вполне пригоден для решения большинства
для соответствующего пользователя или группы. Вот при- типовых задач по обмену файлами. Если ваши потребности
мер такого файла: не выходят за пределы его возможностей, то вряд ли имеет
смысл обременять систему установкой дополнительных па-
vasya кетов. Однако если вам требуется создать «промышленный»
petya /var/db/petya
@dialup FTP-сервер, позволяющий более гибко управлять правами
доступа, пользователями, параметрами передачи файлов,
Теперь Вася и все пользователи группы dialup смогут то воспользуйтесь более серьезным решением.
работать только в пределах своих домашних каталогов, а
для Пети в качестве рабочей будет определена указанная
папка /var/db/petya. С помощью разделителя /./ можно ука-
зать каталог, отличающийся от корневого, который ста-
нет текущим:
Алексей Барабанов
Автоматизация установки MS Windows до предела сокращает вмешательство оператора.
Можно сказать, что практически исключает. Но при встрече с нестандартным оборудованием
преимущество оборачивается непреодолимой, на первый взгляд, преградой.
В
серии статей на тему автоматизации работ в сре- системе устройства и нажать нужную клавишу. Тогда сис-
де MS Windows, опубликованных в нашем журнале тема остановит процесс установки и «попросит» устано-
[1, 2, 3, 4], не затронуты вопросы автоматической вить дискету с драйверами (рис. 2).
установки драйверов. В большинстве случаев это не ме- Увы, такой дискеты нет в дистрибутиве эмулятора, и ис-
шает работе, так как используемая операционная систе- пользование SCSI-диска не рекомендовано для виртуаль-
ма славится тем, что имеет в своем дистрибутиве очень ных машин MS Windows XP. Хотя, сам драйвер присутствует
широкий набор драйверов. И традиционно каждый изго- в составе VMWare Tools. Тогда подготовим дискету вручную.
товитель нового устройства стремится, чтобы его драйвер Сначала вставим чистый диск и сформатируем его:
был представлен в дистрибутиве MS Windows. А если по-
падается «несчастливое» устройство, которое там отсутс- # fdformat /dev/fd0
твует, то драйвер можно поставить и после, хотя это и пе- Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
реведет установку из статуса автоматической в рукотвор- Formatting ... done
Verifying ... done
ную. Но, увы, дело оборачивается полным крахом, если
в качестве «незнакомого» для этой чудной ОС выступает # mkdosfs /dev/fd0
устройство, на которое далее предполагается установка, mkdosfs 2.10 (22 Sep 2003)
Device mounted using subfs, please do not access it while creating filesystem
то есть дисковый накопитель или его контроллер.
Далее всё будем рассматривать на примере созданно- # umount /dev/fd0
# mkdosfs /dev/fd0
го ранее, как указано в перечисленных выше статьях, дис-
трибутивного диска MS Windows XP Professional для авто- mkdosfs 2.10 (22 Sep 2003)
20
администрирование
ние и нажмем «S», как требуется. Система прочтет содер-
жимое диска и предложит подтвердить выбор (рис. 3) на-
жатием «Enter».
Далее система предложит добавить еще какие-нибудь
устройства (рис. 4), на что в нашем случае ответим отка-
зом опять же путем нажатия «Enter».
К сожалению, все перечисленные действия не приве-
дут к успеху. Поскольку в использованном диске автома-
тической установки нет возможности указать иное уст-
ройство загрузки дистрибутивных файлов, чем CD-ROM
и в ответ на запрос, где искать использованный драйвер
vmscsi.sys (рис. 5), приходится или прекращать установку Рисунок 1. Не найдено ни одного дискового устройства
вообще, или, понадеявшись на «авось», пропускать копи-
рование этого файла.
И так как теперь для работы второй фазы установки сис-
темы нужны еще и использованные драйвера SCSI, то не-
удачный финал предопределен (рис. 6).
Ничего не остается, как обратиться к источникам [5, 6, 7].
Здесь можно и закончить нашу историю, мол, читайте и воп-
лощайте. Но, к сожалению, информация с [5] весьма скуд-
на, с [6] противоречива и местами ошибочна, а с [7] откро-
венно наивна, как всякий дословный перевод техническо-
го источника. Хотя, безусловно, если нужно узнать и по-
нять все, то и прочесть кроме этой статьи придется также
все перечисленное.
Добавляем драйверы
устройств загрузки
Итак, проблема заключена в том, что установщик ОС дол- Рисунок 2. Запрос дискеты с драйверами
жен использовать драйвера применяемых дисковых ус-
тройств в процессе установки и далее. В данном случае
все нужные файлы содержатся в /mnt/program\ files/VMware/
VMware\ Tools/Drivers/scsi/win2k. Обычно драйвера постав-
ляются в виде исполняемого бинарного файла с суффик-
сом sys, далее обязательно есть файл с описанием и суф-
фиксом inf, и возможно еще некоторые файлы. Но все они
должны быть упомянуты в строках inf-файла обычно в сек-
ции [SourceDiskFiles]. Иногда все это еще и сопровождается
файлом с цифровой подписью – файл с суффиксом cat.
Точно следуя первой части рецепта с [8], внесем необхо-
димые изменения в файл TXTSETUP.SIF. Нахождение это-
го файла и все сопутствующие проблемы сборки готового
диска с ним уже обсуждались в [1,2,3,4] и здесь мы не бу-
дем еще раз это рассматривать. Вот модификация в фор-
мате, пригодном для автоматического патчирования:
Рисунок 3. Выбор драйвера с дискеты
# diff -Naur TXTSETUP.SIF.orig TXTSETUP.SIF +
*PNP0300 = "i8042prt",{4D36E96B-E325-11CE-BFC1-08002BE10318}
--- TXTSETUP.SIF.orig 2005-10-27 10:15:56.000000000 +0400 *PNP0301 = "i8042prt",{4D36E96B-E325-11CE-BFC1-08002BE10318}
+++ TXTSETUP.SIF 2005-10-29 21:32:40.000000000 +0400 *PNP0302 = "i8042prt",{4D36E96B-E325-11CE-BFC1-08002BE10318}
@@ -206,6 +206,9 @@ @@ -19281,6 +19286,7 @@
isapnp.sys = 1,,,,,,3 _ ,4,1,,,1,4 dac2w2k = dac2w2k.sys,4
22
администрирование
здателя загрузочного диска. Система сама выберет из это-
го списка те, что соответствуют реально присутствующим
в компьютере устройствам.
# ls -l /uawsp2/\$OEM\$
total 180
drwxr-xr-x 4 root root 4096 Mar 22 2005 $$
drwxr-xr-x 6 root root 4096 Oct 31 00:11 $1
drwxr-xr-x 5 root root 4096 Oct 30 22:21 .
drwxr-xr-x 5 root root 4096 Apr 21 2005 ..
-rw-r--r-- 1 root root 118272 Dec 31 2002 AutoIt3.exe
-rw-r--r-- 1 root root 27 Mar 28 2005 Cmdlines.txt
Рисунок 9. Установка драйвера vmmouse drwxr-xr-x 3 root root 4096 Oct 30 22:21 Drivers
-rw-r--r-- 1 root root 264 Oct 5 22:51 Drivers.au3
В формате WINNT.SIF используется 8-битная кодиров- -rw-r--r-- 1 root root 20992 Dec 31 2002 SetupCopyOEMInf.exe
-rw-r--r-- 1 root root 3584 Dec 31 2002 WatchDriverSigningPolicy.exe
ка. Для России это cp866. Хотя достаточно добавить циф- -rw-r--r-- 1 root root 113 Mar 28 2005 mkusers.cmd
ровой префикс к имени директории с драйверами, посколь-
ку порядок цифр в всех кодировках совпадает. По мнению Как уже было сказано, в Drivers кладутся нужные драй-
авторов [10], логика работы системы такова: так как драй- веры. AutoIt3.exe – это интерпретатор скрипта Drivers.au3:
вера чипсета необходимы для работы многих других ус-
тройств, то установка в первую очередь зависимых уст- # cat /heap2/unattended-win/uawsp2/\$OEM\$/Drivers.au3
ройств не произойдет должным образом, если еще не ус- ProcessSetPriority("setup.exe",0)
тановлены драйвера основных. Run(@ScriptDir & "\WatchDriverSigningPolicy.exe")
ProcessWait("WatchDriverSigningPolicy.exe")
Но проблема с неустановленными драйверами vmmemctl. RunWait(@ScriptDir & "\SetupCopyOEMInf.exe Drivers")
sys и vmmouse.sys таким путем не решается. Так как эти ProcessClose("WatchDriverSigningPolicy.exe")
ProcessSetPriority("setup.exe",2)
драйвера проиграли конкуренцию в PnP тем, которых пред-
почел PnP-резолвер, использовавший информацию из INF- А SetupCopyOEMInf.exe и WatchDriverSigningPolicy.exe –
файлов. И эти драйвера приходится добавлять вручную че- это простенькие программки, первая из которых выполня-
рез «Мастер обновления оборудования». Выбираем «Уста- ет соответствующий системный вызов [14], а вторая избав-
новку из указанного места» и режим «Не выполнять поиск. ляет от диалога с вопросом о доверии поставщику в слу-
Я сам выберу нужный драйвер» (см. рис. 9). чае нахождения неподписанных драйверов.
Получается, что драйвер манипулятора мышь изVMWare Для запуска указанных программ используется следую-
не был установлен, но прошел этап регистрации. Иначе го- щая последовательность строк, записываемых в WINNT.SIF
воря, логика работы системы иная, чем это предполагают в секции [GuiUnattended]:
авторы [10]. Система регистрирует все драйвера. И как
только после установки некоторых из них появится воз- DetachedProgram="%windir%\system32\cmd.exe"
Arguments="/Q /C FOR /F %I IN (%SystemRoot%\SYSTEM32\ ↵
можность установки зависимых, то это произойдет да- $WINNT$.INF) DO (FOR %J IN (%I$OEM$) DO (IF EXIST %J ↵
же, если в последовательности сортировки имя директо- start /min /D%J Autoit3.exe Drivers.au3)))"
рии с главными драйверами получило очередность пос-
ле директории с зависимыми. Удивительно, что фантазия Этот набор символов, который можно детально ра-
с цифровыми префиксами повторяется из рецепта в ре- зобрать с помощью [15], приводит к запуску скрипта
цепт на [6] и [7]. Drivers.au3 в фазе T-39 [3] процесса установки. После че-
Тем не менее метод регистрации всех драйверов зара- го все драйверы с установочного диска регистрируются в
нее без учета их так называемой очередности был успеш- базе драйверов и далее участвуют в установке. Именно
но реализован. «участвуют»! То есть и этот метод не приводит к гаранти-
руемой установке конкурентных драйверов. Иначе говоря,
Добавляем драйверы устройств установка идет все также на основании информации из INF-
через DetachedProgram файлов. Единственное преимущество в том, что драйверы
Существует еще один способ подгрузить в автоматическом размещаются на CD в произвольной структуре директорий
режиме драйверы в устанавливаемую систему. В секции и в процессе установки не копируются на диск вовсе.
[GuiUnattended] можно указать опцию DetachedProgram [11], Не стоит забывать, что хотя все драйверы регистрируют-
в которой описать программу, запускаемую параллельно ся в системной базе, но те, что не подключаются в процес-
с выполнением основной программы setup.exe. Этот метод се установки, остаются на дистрибутивном диске. И именно
установки драйверов подробно описан в [12]. Там же приве- там система далее ожидает их найти. То есть для VMWare та-
дена ссылка на архив необходимых программ [13]. Его на- ким местом будет «D:\$OEM$\Drivers\...». Значит, если далее
до загрузить и распаковать в директорию $OEM$ устано- предполагается проблемный драйвер установить вручную,
24
администрирование
то потребуется или оставить дистрибутивный диск в лотке составу используемого оборудования. Ну а поскольку все
дисковода, или позаботиться об обязательном подключе- работы по созданию такого диска выполнялись в среде GNU
нии компьютера к сети. Поэтому предлагается композит- Linux, то после приобретения нового и неизвестного ком-
ный вариант, описанный далее. пьютера нужно лишь попросить установить диск с драйве-
рами от него в локальный привод компьютера с GNU Linux,
Практические выводы затем в сеансе удаленного подключения через SSH доба-
Как уже было сказано выше, с проблемой специальных вить новые драйвера в рабочую директорию для создания
драйверов приходится сталкиваться лишь только оборудо- загрузочного CD и записать новую версию диска автома-
вание выйдет за стандартную Intel-архитектуру простень- тической установки для этой локальной сети с учетом но-
ких компьютеров общего применения. Можно подготовить- вого компьютера. Вот и все! Далее все операции автомати-
ся заранее, а можно принять меры сразу же после получе- зированы, как описано в [3, 4]. И ваше удаленное админис-
ния нового оборудования. трирование станет безграничным настолько, что его мож-
Первым делом надо взять диск с драйверами, постав- но будет осуществлять даже с пляжа Мондраго на остро-
ляемый с оборудованием, и найти там драйверы дисковых ве Майорка через GPRS-роуминг с мобильного телефона
устройств и контроллеров. Их следует устанавливать ме- с Nokia 6670. Правда, придется купить к телефону беспро-
тодом, описанным в разделе «Добавляем драйверы уст- водную клавиатуру, но... это уже детали!
ройств загрузки». Все файлы *.sys копируются в $OEM$,
и, пользуясь информацией из соответствующих *.inf, вно- Литература и ссылки:
сятся модификации в TXTSETUP.SIF. Здесь еще одна под- 1. Барабанов А. Автоматизация MS Windows, или Autoit как меч-
сказка. Все, кто внимательно читал, должны были уже дога- та эникейщика. Часть 1. – Журнал «Системный администра-
даться, что установщик ОС считывает файл TXTSETUP.SIF тор», №4, апрель 2005 г. – 11-15 с.
целиком и анализирует его. Другими словами, нет необхо- 2. Барабанов А. «Автоматизация MS Windows, или Autoit как меч-
димости выискивать в этом полумегабайтном файле тре- та эникейщика. Часть 2. – Журнал «Системный администра-
буемые секции и добавлять в них строчки, как предлагает- тор», №5, май 2005 г. – 54-58 с.
ся в [6, 7]. Достаточно просто дописать к файлу новые сек- 3. Барабанов А. «Автоматизация MS Windows, или Autoit как меч-
ции с нужными ключами. Система сама во всем разберет- та эникейщика. Часть 3. – Журнал «Системный администра-
ся и соединит все одноименные секции в одну. Драйверы тор», №6, июнь 2005 г. – 25-31 с.
остальных периферийных устройств, видеоадаптеры, се- 4. Барабанов А. «Автоматизация MS Windows, или Autoit как меч-
тевые карты, модемы и прочее копируются вместе со все- та эникейщика. Часть 4. – Журнал «Системный администра-
ми сопутствующими файлами внутрь директории с любым тор», №7, июль 2005 г. – 46-47 с.
мнемоническим именем, располагаемой в $OEM$\Drivers 5. Оригинальная информация по созданию дисков автомати-
так, как описано в разделе «Добавление драйверов уст- ческой установки MS Windows – http://www.microsoft.com/
ройств через DetachedProgram». И соответственно моди- resources/documentation/WindowsServ/2003/all/techref/en-us/
фицируется WINNT.SIF для запуска установочного скрип- Default.asp?url=/Resources/Documentation/windowsserv/2003/
та Drivers.au3, который также вместе со всеми прилагае- all/techref/en-us/W2K3TR_unatt_how.asp?frame=true&hidetoc=
мыми программами помещается в $OEM$. true.
Узнать заранее, какие драйверы будут проигнориро- 6. Сайт с источником знаний и откровений по автоматизации ус-
ваны в процессе автоматической установки, невозмож- тановки MS Windows – http://unattended.msfn.org.
но, и поэтому на начальном этапе подготовку установоч- 7. Русский перевод и адаптация информации с unattended.msfn.
ного диска можно было бы считать завершенной. Если org – http://oszone.net/display.php?id=2747.
после инсталляции ОС на жесткий диск компьютера выяс- 8. Перевод статьи об интеграции дисковых драйверов – http://
нится, что некоторые особенно нужные драйверы не бы- oszone.net/display.php?id=2782.
ли установлены, то их следует далее устанавливать так, 9. Перевод статьи о параметрах [SourceDisksFiles] – http://oszone.
как описано в разделе «Добавление драйверов устройств net/display.php?id=3123.
через OemPnPDriversPatch», но при этом запретить уда- 10. Перевод статьи об установке через WINNT.SIF – http://oszone.
ление директории с драйверами из WINNT.SIF в секции net/display.php?id=2781.
[GuiRunOnce]. Тогда нужные драйверы зарегистрируются 11. Описание опций WINNT.SIF в секции GuiUnattended – http://
и далее можно будет их доставить прямо с жесткого дис- www.microsoft.com/technet/prodtechnol/windowsserver2003/
ка компьютера в сеансе удаленного подключения к рабо- library/TechRef/755f8019-165a-4a50-802d-d1b116e91e7a.mspx.
чему столу. И здесь снова подсказка. Поскольку есть ка- 12. Drivers from CD (AutoIt method) – http://www.msfn.org/board/index.
тегория устройств, которые подключаются динамически, – php?showtopic=51406.
модемы, сканеры, принтеры, и драйвера таких устройств 13. Архив DriversAutoit.zip – http://www.msfn.org/board/index.php?
могут быть затребованы работающей системой в процес- act=Attach&type=post&id=9070.
се эксплуатации, то их тоже следует разместить в неуда- 14. Описание SetupCopyOEMInf – http://msdn.microsoft.com/library/
ляемой директории $OEM$\$1\Drivers. Будучи зарегистри- default.asp?url=/library/en-us/setupapi/setup/setupcopyoeminf.
рованными, эти драйверы установятся при первом исполь- asp.
зовании подключаемого устройства. 15. Справочник по опциям командной строки MS Windows XP –
Таким образом, в каждой локальной сети должен нахо- http://www.microsoft.com/resources/documentation/windows/xp/
диться установочный диск, модифицированный согласно all/proddocs/en-us/if.mspx.
Алексей Мичурин
Потеря MBR – наверное, самая досадная потеря. Порча считанных байт полностью
парализует абсолютно исправную систему. Если вы активно экспериментируете с
операционными системами, то знакомы с такой ситуацией не понаслышке. Существует
простое и универсальное решение на основе GRUB, способное спасти ситуацию минимальными
средствами и силами.
М
ы обсудим пути решения про- Первое, что загружает BIOS с жёс- и исключения (например, Boot Easy –
блем, возникающих при за- ткого диска, – это MBR, самый пер- стандартный загрузчик для FreeBSD).
грузке системы. Поэтому спер- вый сектор диска. В MBR содержатся Загрузочная запись партиции
ва вкратце рассмотрим этот процесс. таблица разделов диска и небольшая обычно составляет один сектор –
программа, которой и передаёт управ- 512 байт (однако и тут есть исключе-
Процесс загрузки ление BIOS. ния, например, QNX). Нередко этот за-
Начнем с основных этапов загрузки Этот загрузчик анализирует табли- грузчик уже «умеет» работать с файло-
операционных систем на платформе цу разделов и считывает загрузочный вой системой, он в состоянии подгру-
PC, разберёмся, какие возможны от- раздел одной из партиций. Обычно вы- зить собственные модули и способен
казы и как их избежать. бирается активная партиция, хотя есть загрузить ядро или другую программу,
26
администрирование
осуществляющую настрой- няли настройки, удалили или
ку и запуск ядра (например, переместили какие-то файлы,
loader во FreeBSD). установили новую версию ПО
На рис. 1 показаны схе- и не обновили загрузочные
мы загрузки трёх ОС. Изоб- записи, произвели тонкую на-
ражённая структура диска стройку файловой системы,
предельно проста: нет расши- изменив её параметры.
ренной партиции, нет разде- Причины можно перечис-
лов подкачки и прочих дета- лять бесконечно. Для разных
лей. Имеется только три пар- ОС они специфичны и зависят
тиции, на каждой из которых не только от возможностей
установлена своя ОС. загрузчика, но и от особен-
Windows/DOS загружает- ностей файловой системы.
ся согласно описанной схеме.
MBR-код считывает загруз- Другие отказы
чик с партиции, а тот считы- Некоторые системы (напри-
вает и запускает программу- мер, FreeBSD) используют
загрузчик ядра. дополнительные фазы за-
Linux загружается по такой грузки. На этих фазах тоже
же схеме. Заметьте, в MBR могут возникнуть проблемы.
и в загрузочной области пар- Но из своего опыта могу ска-
тиции могут быть разные за- зать, что чаще всего страда-
грузчики. Так в MBR может Рисунок 1. Схема загрузки. На диске три раздела, в которых ют ранние фазы, которые де-
установлены Windows, Linux и FreeBSD
находиться Boot Easy, а для лят между собой разные ОС.
загрузки ядра при этом будет исполь- свой собственный загрузчик, который Экзотические промежуточные за-
зоваться LILO, хотя в пакет LILO, ко- в состоянии загрузить только её. грузчики как раз мало кому известны,
нечно, входит собственный MBR-за- Ск ла д ыв аетс я з нако ма я мно - и их практически никто «не трогает».
грузчик. гим ситуация: чтобы загрузить Linux Когда отработали все загрузочные
Загрузка FreeBSD идёт по чуть бо- (или другую, отличную от Windows ОС), секторы, могут возникнуть проблемы
лее сложной схеме. Согласно стандар- вам надо восстановить LILO (или дру- с ядром. В этой статье мы не будем де-
тной процедуре, MBR-код (в терминах гой, отличный от Windows-загрузчи- тально рассматривать эти вопросы, со-
FreeBSD «boot0») загружает boot1-код ка), а чтобы восстановить LILO – за- средоточившись только на процессе
из партиции. Но во FreeBSD предус- грузить Linux. загрузки. А проблемы ядра отнесём
мотрено разбиение партиции на под- Вторая часто встречающаяся си- к разряду проблем ОС.
разделы (в терминах FreeBSD парти- туация: вы решили усовершенство-
ция называется «слайс», а подпарти- вать загрузчик, но забыли включить Live CD: он ли нам нужен?
ция – «партиция»). Поэтому процесс в нём жизненно важную функцию. Итак, ваша ОС цела, но загрузчик ис-
повторяется в уменьшенном масшта- Например, вы могли нас траи- порчен, и загрузиться вы не можете.
бе: загрузчик boot1 считывает и запус- вать стандартный загрузчик FreeBSD Вам требуется восстановить загруз-
кает код boot2 из подпартиции. Boot2 (с помощью команды boot0cfg) и за- чик. Решение «всё переустановить»
загружает программу loader, которая быть включить поддержку больших не подходит, ведь при этом вы поте-
конфигурирует и запускает ядро. винчестеров (ключ -o packet), которая ряете данные.
Как видите, за исключением неко- по умолчанию отключена. После пере- Первое, что приходит на ум, – вос-
торых деталей, процедуры загрузки са- загрузки вы обнаружите, что или ниче- пользоваться загрузочным диском. Ес-
мых разных ОС весьма схожи. И сбои го не загружается, или доступна только ли у вас имеется «спасательный» CD
в процессе загрузки часто имеют оди- ОС из первой партиции. А это, скорее от вашей ОС, то скорее всего он вам
наковую природу. всего, Windows, которая никак не помо- поможет. После загрузки можно смон-
жет вам исправить ситуацию. тировать партицию с «потерянной» ОС
Возможные сбои и выполнить команду chroot. После это-
при загрузке Второй шаг загрузки го вы окажетесь в привычной среде.
Систематизировать сбои проще все- Следующий этап более «интеллекту- К сожалению, этот приём может
го по фазам загрузки, на которых они ален», и здесь могут случиться самые не сработать. Чаще всего, магическо-
случаются. разные поломки. го диска просто не оказывается под ру-
Этот загрузчик уже считывает дан- кой в нужный момент. Для комфорт-
Первый шаг загрузки ные, расположенные в файловой сис- ной работы вам скорее всего придёт-
С утратой главного загрузчика (MBR) теме (он может «знать» физическое ся скорректировать переменные ок-
сталкиваются все, кто устанавливает расположение данных или с файла- ружения PATH, PAGER, EDITOR, LANG
Windows. Эта ОС не предоставляет ни- ми), поэтому он может потерять рабо- и другие. Могут понадобиться и другие
какого выбора и всегда устанавливает тоспособность из-за того, что вы поме- (порой неожиданные и не очевидные)
28
администрирование
гие. Все эти обстоятельства следует зование команды initrd. Ядра NetBSD Опция -R подключает расширение
учесть при создании конфигурацион- и OpenBSD не распознаются, если они Rock Ridge.
ного файла. В тексте title лучше оста- скомпилированы не как a.out, а как ELF. Опция -jcharset эквивалентна паре
вить напоминание, где GRUB будет ис- Чтобы загрузить ELF-ядро, его тип сле- опций -J и -input-charset. Первая –
кать ядро. Так вы избежите многих не- дует указывать явно: включает использование Joliet-
доразумений и неожиданностей. записей, хранящих имена фай-
Секция «Windows» устроена иначе. kernel --type=netbsd /boot/netbsd-elf лов и директорий в Unicode, а вто-
Это связано с тем, что в данном слу- рая – задаёт исходную кодировку
чае GRUB может взять на себя только QNX отличается двухкилобайтным для корректного преобразования
функции первого загрузчика (MBR). загрузчиком, поэтому аргумент коман- в Unicode. Эти опции всем хорошо
Командой rootnoverify мы устанавли- ды chainloader должен быть скоррек- знакомы.
ваем корневое устройство, но не мон- тирован: Опция -b указывает имя файла-об-
тируем его. Далее загружаем первый раза загрузчика (все пути указыва-
сектор (команда chainloader), в кото- chainloader +4 ются относительно корня файловой
ром и содержится загрузчик. И в за- системы компакт-диска).
ключение делаем партицию актив- Одним словом, заглянуть в доку- Опция -c задаёт имя служебного
ной (makeactive), DOS/Windows к это- ментацию никогда не помешает. файла, который будет создан са-
му не равнодушен. мой mkisofs. Он в какой-то степени
Вообще-то по такой же схеме мож- Создаём ISO-образ выполняет роль первого загрузчи-
но загружать и другие ОС. Например, Давайте создадим временную дирек- ка. Эту опцию можно и не исполь-
загрузить FreeBSD, заменив только торию и назовём её для определён- зовать, тогда файл будет создан
первый загрузчик, можно так: ности iso. В ней мы подготовим дере- в корне файловой системы.
во каталогов, подлежащее переносу Опция -no-emul-boot говорит о том,
title FreeBSD на CD. Нам понадобится два файла: что при загрузке не надо эмулиро-
rootnoverify (hd0,0)
chainloader +1 iso/boot/grub/menu.lst – конфигураци- вать дисковод. Существуют про-
онный файл, который мы только что со- цедуры загрузки, при которых
После выполнения этих команд здали, и iso/boot/grub/stage2_eltorito – CD-ROM рассматривается как дис-
GRUB передаст управление boot1-про- файл из дистрибутива GRUB. В при- ковод «A:», что позволяет старым
цедуре, и загрузка пойдёт по естест- нципе, файл stage2_eltorito можно бы- загрузчикам чувствовать себя
венному для FreeBSD сценарию. ло бы поместить и в любое другое мес- как дома. У нас другой случай.
Чаще всего такие приёмы не оправ- то файловой системы, но вот файл Опция -boot-load-size указывает
даны, и лучше использовать все име- menu.lst должен находиться именно длину загрузчика, вернее, части
ющиеся возможности GRUB, но быва- в директории /boot/grub/. загрузчика, которую следует счи-
ют и исключения. Например, вы може- Кроме того, на этом диске можно тать в память.
те обновить Windows на машине с дву- сохранить резервную копию критичных Опция -boot-info-table говорит
мя ОС: Windows и Linux. При этом об- данных. Вернее, целесообразнее пос- о том, что в образе загрузчика
новлении теряется только MBR-запись, тупать наоборот: делать Backup-дис- (у нас это файл stage2_eltorito) сле-
но основной код LILO, находящийся за ки «загрузочными». Это потребует рас- дует разместить служебную таб-
пределами MBR, цел. Зачастую LILO хода лишних 100 килобайт (что не су- лицу. Поэтому файл и изменяется
выполняет довольно сложные функции, щественно даже для CD, не говоря уж при создании образа. Надо ска-
например, подгружает initrd (с этим мо- о DVD), но значительно повысит цен- зать, что при таком наборе опций
жет справиться и GRUB). Возможно, ность такой резервной копии. эта опция совершенно не обяза-
LILO запускает ядро с опциями, кото- Теперь создаём ISO-образ: тельна – таблица всё равно была
рые вы просто забыли, или вам просто бы создана.
лень их снова набирать. Одним словом, mkisofs -R \ Последняя опция -o указывает имя
-jcharset koi8-r \
вы потеряли MBR, но хотите запустить -b boot/grub/stage2 _ eltorito \ iso-файла.
LILO, а не просто «сырое» ядро. Здесь- -c boot/boot.catalog \
-no-emul-boot \
то вам и пригодится указанная возмож- -boot-load-size 4 \ Итак, образ boot.iso готов.
ность, надо только правильно указать -boot-info-table \
-o boot.iso \
партицию: iso Записываем CD и загружаемся
с него
title LILO on hda2 Обратите внимание, файл stage2_ Записать полученный образ на CD
rootnoverify (hd0,1)
chainloader +1 eltorito должен быть доступен для за- можно любым, привычным для вас,
писи, а утилита mkisofs этой доступнос- способом.
Если вы планируете загружать тью непременно воспользуется и слег- Под Linux:
другие ОС, то рекомендую обратить- ка его изменит(!). Позаботьтесь о ре-
ся к документации на GRUB. Практи- зервной копии этого файла. cdrecord -dev=0,1,0 -data boot.iso
чески любая ОС имеет собственную Давайте рассмотрим опции по по-
специфику. Linux допускает исполь- рядку. Или под FreeBSD:
30
администрирование
Теперь полученный файл stage2_eltorito (он лежит в ди- но – от CD или локального диска до NFS или удалённого
ректории $HOME/GRUB/lib/grub/i386-unknown) является TFTP-сервера.
полностью самодостаточным. Его можно положить в лю- Но следует помнить, что, увеличив функциональность
бое место файловой системы компакт диска; файл menu.lst нашего CD, мы снизили его универсальность. Восполь-
больше не требуется. зоваться новой функцией можно только при совпадении
Такое решение, безусловно, привлекает компактностью версий ядра. Иначе ядро-варяг, загруженное с CD, может
и изяществом. Тем более что, из встроенного меню всегда не воспринять модули, хранящиеся на диске и рассчитан-
можно выйти, выполнить любые команды или даже загру- ные на другое ядро. Даже при полном совпадении версий
зить другое меню. Но я бы советовал держать на диске до- (но не сборок) недоразумение могут вызвать некоторые
кументацию к GRUB. Можно сохранить на диске ещё и ко- действия rc-скриптов (скажем, попытки поднять сетевые
пию вкомпиллированного меню, хотя, как вы видели, пун- интерфейсы, поддержка которых не предусмотрена CD-яд-
кты меню всегда можно просмотреть и отредактировать ром). Но в целом это довольно жизнеспособная схема.
по клавише «e». Понятно, что следующим шагом после переноса яд-
ра на CD будет перенос на CD init, rc-скриптов, а следова-
Сохраняем образы загрузчиков на CD тельно, и корневой файловой системы. Но тогда мы полу-
Вы видели, что при загрузке DOS мы просто считывали чим Live-CD со всеми его преимуществами и недостатка-
первый сектор DOS-партиции. GRUB, по понятным причи- ми, а мы договорились не рассматривать вопросы созда-
нам, не умеет загружать ядро DOS и Windows и делегирует ния загрузочных CD.
эти функции «родному» загрузчику. Так же обстоят дела и
с некоторыми другими ОС, например, с QNX. Перспективы GRUB
Если испортится загрузчик, расположенный в партиции, Напомню, что GRUB снабжён доброй сотней мегабайт до-
то загрузка ОС станет невозможна. Так ли это? Не совсем. кументации. За рамками нашего рассмотрения остались
Вы можете создать образ загрузочных секторов. GRUB спо- возможности GRUB, связанные с загрузкой по сети (GRUB
собен загрузить образ из файла. поддерживает сетевые интерфейсы и такие протоколы,
Создать образ проще всего командой dd. Пример как TFTP и DHCP), удалённым управлением, монтирова-
под Linux: нием образов (только из grub shell). GRUB может выпол-
нять и функции утилиты fdisk (хотя, мне кажется, что луч-
dd if=/dev/hda1 of=DOS-BOOT-IMAGE bs=512 count=1 ше не использовать его в этом качестве без крайней необ-
ходимости). С полученного нами диска можно произвести
А загрузить образ можно уже знакомой нам командой даже полноценную инсталляцию GRUB как менеджера за-
chainloader, указав не сектор, а путь к файлу: грузки. Оставим обсуждение этих вопросов разработчи-
кам документации.
chainloader (cd)/boot/DOS-BOOT-IMAGE Но в этой статье невозможно обойти вниманием вопрос
развития GRUB. Дело в том, что именно сейчас GRUB стоит
Следует только иметь в виду, что никто не гарантиру- на распутье. Разработчики GNU GRUB заморозили проект.
ет, что в разных версиях ОС загрузчики будут одинаковы Теперь в GNU GRUB будут вноситься только косметические
или хотя бы совместимы. улучшения и исправления ошибок. Вместо GNU GRUB по-
явился новый проект GRUB2. Пока, правда, версии 2 нет.
Первый шаг к Live-CD На момент написания статьи самой свежей является вер-
Пока рассматриваемые нами решения бессильны в ситуа- сия 1.91. Изменений огромное множество. Перечислить их
ции, когда испорченным оказалось ядро системы. Но и эту все очень трудно. Это и поддержка новых устройств, и под-
проблему можно разрешить минимальными усилиями. До- держка локализации и национальных алфавитов, и новые
статочно разместить работоспособное ядро на том же CD, файловые системы, и ОС-специфичные загрузчики (та-
а в меню добавить следующие инструкции: кие, как loader во FreeBSD), и более дружественный интер-
фейс инсталлятора, и графические меню... Но в целом, как
title Linux (kernel root=/dev/hda1) мне кажется, GRUB2 продолжил линию GNU GRUB. Он всё
kernel (cd)/boot/vmlinuz root=/dev/hda1
больше становится похож на операционную систему, у ко-
Вы видите, что теперь мы загружаем ядро с CD, но тре- торой интерфейс меню и командной строки встроен в яд-
буем, чтобы в качестве root-устройства была смонтирована ро. Во всём остальном это ОС: GRUB умеет работать с ос-
первая партиция жёсткого диска. Если на первой партиции новными устройствами (не только консоль и диски, но даже
у вас действительно установлен Linux, то ядро (загруженное сетевые карты), работает с файловыми системами, позво-
с CD) как ни в чём ни бывало смонтирует эту партицию как ляет загружать и выполнять код. Не это ли основные при-
коревую файловую систему, и запустит процесс init. знаки операционной системы? Все эти качества GNU GRUB
С такого диска можно загрузить Linux, даже если были развиваются и усиливаются в GRUB2.
испорчены все загрузочные сектора и ядро. Единственным минусом GRUB2 является острый дефицит
Аналогично можно сохранить на CD ядро FreeBSD и про- документации. Именно поэтому объём дистрибутива втрое
грамму его загрузки – loader. Здесь есть множество вари- меньше. Ситуация с документацией и определила мой выбор
антов, потому что loader сам является весьма мощной про- в пользу старого доброго GNU GRUB при написании этой ста-
граммой и может загрузить ядро практически откуда угод- тьи. Но это «пока». Будущее, конечно, за GRUB2.
Антон Борисов
К
ак показывает практика, чем отображают выполнение програмно- много и аппаратного обеспечения ЭВМ.
сложнее становится система, го обеспечения на серверной сторо- В TCO-анализе учитывается не толь-
тем больше усилий требуется, не, при этом, будучи клиентской час- ко стоимость обеспечения, но и, напри-
чтобы поддержать ее в рабочем состо- тью, могут быть совершенно облегчен- мер, поддержка в дальнейшем пользо-
янии. В то же время становится очевид- ными. Под облегченностью понимает- вателей и их обучение [4].
ной специализация тех или иных биз- ся как использование старой техни- Итак, у вас есть старый парк тех-
нес-процессов. Можно уже четко опре- ки (класса первых Pentium), так и сов- ники, который вы не считаете раци-
делить, какие конкретно ресурсы тре- ременных ПЭВМ с интегрированны- ональным выводить из применения,
буются определенным пользователям ми сетевыми-, видеоконтроллерами, но в то же время отдаете себе отчет,
для решения их бизнес-задач. Исходя но со скромной производительнос- что достичь приемлемых результа-
из указанных предпосылок, данным тью, так и специализированных тер- тов на такой технике уже нельзя, или
пользователям следует выделить не- миналов [1]. С одной стороны, мы уве- вы организуете рабочие места с чис-
обходимый конкретно им инструмен- личиваем срок службы старой техни- того листа и решаете для себя воп-
тарий, но не более того. Кроме этого, ки, перенося вычислительные функ- рос, как грамотно провести внедрение
установку (а в дальнейшем и обнов- ции на производительный выделен- бизнес-процессов на рабочих местах.
ление) пакетов прикладных программ, ный сервер приложений (я все-таки на- Вполне возможно, что после сегод-
хранение электронной документации деюсь, что у вас он уже функциониру- няшнего материала некоторые вопро-
также рациональнее вести в одном ет), с другой стороны, путем унифика- сы для вас исчезнут.
месте – на производительном терми- ции терминалов можем снизить время Насколько вы помните, в преды-
нальном сервере. Таким образом, про- простоя отдельно взятого терминала дущей публикации [5] мы использова-
ведя анализ потоков данных и выяснив и снизить стоимость обслуживания вы- ли так называемую barebone-систему
структуру документооборота, предпри- числительной техники – модный в пос- на аппаратной платформе VIA EPIA-M.
ятие может попробовать преобразо- леднее время термин TCO (Total Cost of Помимо вполне удовлетворительной
вать структуру рабочих мест. Ownership) [2]. В свое время TCO-ана- производительности на плате интегри-
Из названия следует, что ориен- лиз был предложен компанией Gartner рованы сетевая и звуковая платы. Дан-
тир сделан на создание тонких кли- Group для оценки прямых [3] и косвен- ный факт позволяет построить на ба-
ентов, т.е. создание ПЭВМ, которые ных затрат от приобретения програм- зе EPIA-M бездисковые терминальные
32
администрирование
станции, где загрузка операционной системы происходит дисков, однако с дискеты возможно запустить более-менее
по сетевому интерфейсу. работоспособную версию ОС, чтобы отследить трафик, пе-
Одним из довольно любопытных проектов явля- редаваемый по сети. Возможные последствия? Например,
ется ThinStation [6]. Его корни уходят в такие проекты, два одинаковых IP-адреса в ЛВС. Во-вторых, подготов-
как NetStation, PXES. Заимствовав идею сетевой загруз- ка загрузочных дискет, с определенным набором драйве-
ки, проект постепенно вырос до сегодняшнего состояния ров – не самое лучшее времяпровождение, если есть ва-
и в определенной степени представляет из себя вполне за- риант лучше, а именно, интеграция PXE-кода в системный
конченный продукт. BIOS. И в-третьих, подумайте о людях – если вы сэконо-
Давайте посмотрим, что же из себя представляет дан- мили на нормальной сетевой карте, на более-менее сов-
ное творение. Вы уже могли быть с ним знакомы по публи- ременном терминале, на дисплее, то задумайтесь, а име-
кации в журнале за прошлый год [7]. Пакет системных про- ете ли вы вообще право требовать с них повышения про-
грамм busybox (объединяющий в одном флаконе упрощен- изводительности?
ный вариант bash, awk, cat, chmod, grep и ряда других), се- Небольшое отступление – не следует забывать, что об-
рия драйверов для различных сетевых карт, пакет приклад- новление BIOS возможно в том случае, если в материнской
ных программ, таких как клиенты rdesktop, telnet, а также се- плате используется Flash-микросхема. Они начали широко
рия X-серверов составляют основу «тонкой станции». Даль- применяться в Pentium-системах. В более ранних, напри-
нейшая сборка позволяет получить образ в виде файлов мер на базе 80486 ПЭВМ, использовались как flash-микро-
.nbi (etherboot-загрузка), initrd, .iso, pxelinux, syslinux. В част- схемы, так и микросхема однократной записи. В еще более
ности, связка из initrd и pxelinux позволяет создать сетевые древних (80386) использовались однократные.
бездисковые терминалы. Помимо указанных пакетов есть Подумайте, а будут ли вообще работать такие ПЭВМ
возможность доукомплектовать загрузочный образ таки- с ThinStation – ведь существуют вполне определенные ми-
ми пакетами, как vncviewer, tarantella, xnest, dillo, nx, Firefox, нимальные требования для запуска тонкого клиента:
MPlayer и рядом других. Частота ЦП – x86 100 МГц.
Дистрибутив ThinStation разделяется на часть для ко- Размер ОЗУ – 16 Мб.
нечного пользователя (40 Мб) и на часть, ориентирован- Размер видеопамяти – не менее 1 Мб.
ную прежде всего на разработчика (400 Мб). В первой час-
ти все программные пакеты уже скомпилированы и зада- Более подробно, как модифицировать BIOS см. [9].
ча пользователя заключается в том, чтобы выбрать те па- А сейчас предварительно узнайте, как точно называет-
кеты, которые ему потребуются для работы. Вторая часть – ся ваша сетевая плата, затем на сайте [10] забирайте
это те же самые пакеты, только в исходных текстах. До- PXE ROM-код и с помощью утилит amiflash [11], cbrom про-
бавление своей собственной, предварительно скомпи- изводите следующие манипуляции:
лированной программы в дистрибутив ThinStation для ко-
нечного пользователя скорее всего закончится неудачно. FLASH879 /SBIOS.BIN
С чем это связано? Прежде всего различие в версиях биб-
лиотеки GLIBC, используемой в дистрибутиве (там вер- Сохранили в файл BIOS.BIN содержимое flash-памяти.
сия GLIBC 2.1.3) и вашей. Если программа скомпилирова- В определенных случаях, места в BIOS может не хва-
на полностью статически, то проблем в принципе не долж- тить для добавления нового кода. Поэтому давайте узна-
но возникнуть. Вариант для разработчика предназначен ем, из каких составных частей состоит ваш BIOS, прежде
для тех случаев, когда добавление в лоб собственного па- чем добавить PXE-код.
кета не срабатывает.
Коммерческие продукты сами не входят в состав дис- CBROM.EXE BIOS.BIN /D
трибутива, а представлены в виде ссылок. Поэтому, ког- CBROM V2.15 (C)Award Software 2001 All Rights Reserved.
да вы выбираете клиентов, например, NoMachine, Citrix ******** BIOS.BIN BIOS component ********
или Tarantella, то по мере сборки загрузочного образа No. Item-Name Original-Size Compressed-Size Original-File-Name
они будут скачаны wget с сайтов производителей. ===============================================================================
0. System BIOS 20000h(128.00K)13E32h(79.55K)test.BIN
Нам сегодня потребуется дистрибутив ThinStation для ко- 1. XGROUP CODE 0EE90h(59.64K)0A362h(40.85K)awardext.rom
нечного пользователя[8]. Но перед тем как начнем сборку 2. ACPI table
3. EPA LOGO
04F6Fh(19.86K)01A60h(6.59K)ACPITBL.BIN
0168Ch(5.64K)0030Dh(0.76K)AwardBmp.bmp
загрузочного образа, давайте добьемся, чтобы ПЭВМ мог- 4. YGROUP ROM 06B50h(26.83K)04693h(17.64K)awardeyt.rom
5. GROUP ROM[ 0] 06190h(24.39K)02765h(9.85K)_EN_CODE.BIN
ла загружаться по сети. 6. PCI ROM[A] 0C000h(48.00K)06431h(25.05K)NVRAID.ROM
7. OEM1 CODE 02410h(9.02K)00DF3h(3.49K)BSMICODE.ROM
8. OEM0 CODE 01F26h(7.79K)01787h(5.88K)SBF.BIN
Добавляем LAN ROM в системный BIOS Total compress code space = 34000h(208.00K)
В случае, если вы счастливый обладатель старых ПЭВМ Total compressed code size = 2F6A4h(189.66K)
и/или сетевых карт без дополнительного слота с микросхе- Remain compress code space = 0495Ch(18.34K)
мой, содержащей PXE-код, то единственный способ для до- ** Micro Code Information **
Update ID CPUID | Update ID CPUID | Update ID CPUID | Update ID CPUID
бавления функции сетевой загрузки – это дополнить сис- ------------------+--------------------+--------------------+-------------------
темный BIOS материнской платы кодом для сетевой пла-
ты. Зачем именно изменять системный BIOS, а не исполь- Очевидно, что для работы тонкого клиента код, отве-
зовать загрузку, например, с НГМД? Во-первых, для безо- чающий за работу RAID-подсистемы, в принципе не ну-
пасности. Хотя бездисковые терминалы и не имеют жестких жен (выделен красным шрифтом). Предлагаю его удалить,
CBROM.EXE BIOS.BIN /PCI netboot.rom Использование BIOS Savior [5] и источника бесперебой-
CBROMV2.15 (C)Award Software 2001 All Rights Reserved. ного питания позволит избежать многих подводных кам-
Adding netboot.rom .... 68.5%
ней и практически полностью избежать негативных пос-
Добавили PXE-код от сетевой карты. ледствий от пропадания питания на вашем рабочем месте
И еще раз посмотрим на структуру BIOS. по время перезаписи микросхемы flash-памяти.
CBROM.EXE BIOS.BIN /D После добавления сетевого кода в системный BIOS сле-
дует записать последний в микросхему Flash-памяти. Сле-
CBROM V2.15 (C)Award Software 2001 All Rights Reserved.
дует делать это осторожно, т.к. испортив и/или записав не-
******** BIOS.BIN BIOS component ********
корректно код, вы на выходе получите неработающую ма-
No. Item-Name Original-Size Compressed-Size Original-File-Name теринскую плату. Лично для меня самым удобным вариан-
================================================================================
0. System BIOS 20000h(128.00K)13E32h(79.55K)test.BIN том является использование утилиты amiflash.
С ее помощью можно автоматически определить ис-
1. XGROUP CODE 0EE90h(59.64K)0A362h(40.85K)awardext.rom
2. ACPI table 04F6Fh(19.86K)01A60h(6.59K)ACPITBL.BIN
3. EPA LOGO
4. YGROUP ROM
0168Ch(5.64K)0030Dh(0.76K)AwardBmp.bmp
06B50h(26.83K)04693h(17.64K)awardeyt.rom
пользуемый чипсет материнской платы, а соответственно
5. GROUP ROM[ 0] 06190h(24.39K)02765h(9.85K)_EN_CODE.BIN не ломать голову, как называется микросхема flash-памя-
ти, и проверить, насколько правильно была произведена
6. OEM1 CODE 02410h(9.02K)00DF3h(3.49K)BSMICODE.ROM
7. OEM0 CODE 01F26h(7.79K)01787h(5.88K)SBF.BIN
8. PCI ROM[A] 08000h(32.00K)057E2h(21.97K)netboot.rom
запись в данную микросхему. В целом, интерфейс доста-
Total compress code space = 34000h(208.00K) точно симпатичный, а самое главное – утилита небольшая
Total compressed code size = 2EA55h(186.58K)
Remain compress code space = 055ABh(21.42K) (умещается на системную дискету), для своей работы тре-
** Micro Code Information **
бует DOS и стабильно работает. Если по каким-либо причи-
Update ID CPUID | Update ID CPUID | Update ID CPUID | Update ID CPUID нам она не удовлетворяет вашим требованиям, то попро-
------------------+--------------------+--------------------+-------------------
буйте использовать uniflash. Она также работает под DOS,
Теперь остается записать BIOS во flash-память. размером несколько меньше amiflash, но по личным ощу-
щениям является несколько перегруженной.
FLASH879 BIOS.ROM /A /B /E /R Записали обновленный BIOS в материнскую плату, пере-
загрузили ПЭВМ – работает. Если не работает – записываем
Опции, которые используются в примере, обозначают: во flash-память предварительно сохраненный, неизменен-
/R – произвести перезагрузку, после операции записи ный файл BIOS на программаторе. Хотя при наличии BIOS
во flash-память. Savior такие проблемы не должны вас особо расстраивать –
/E – очистить CMOS-память во избежание возможных просто переключите на резервную микросхему и попробуйте
недоразумений после перезаписи. еще раз. В BIOS Setup выбираете приоритетность загрузки –
/B – также произвести перезапись секции BootBlock ставите LAN ROM. Если нет пункта с упоминанием сетевой
во flash-памяти (опционально). загрузки, то скорее всего конфигурация сетевого кода про-
/A – не запускать GUI-режим, а работать в командной изойдет непосредственно после POST-процедур.
строке. Однако, если вы формируете терминальные клиен-
ты на основе VIA EPIA-M, то PXE-код уже интегрирован
Сохранять/изменять системный BIOS можно также ути- в составе системного BIOS. Нужно всего лишь выставить
литами: awdflash [12], uniflash [13], phlash [14] или другими. в BIOS Setup приоритетность загрузки ОС – начинать с за-
Добавлять код от сетевой платы в системный BIOS нужно грузки по LAN.
следующими утилитами: Терминальные клиенты на VIA EPIA-M используются, на-
cbrom – если используется AwardBIOS. пример, в техническом университете Дании. Mike Eriksen ис-
amimm – если используется AMIBIOS. пользовал именно эти аппаратные решения, когда описал
prepare – если используется PhoenixBIOS. свой опыт [15]. Правда, он реализовывал загрузку клиен-
тов с твердотельных накопителей compact-flash.
Экзотику, такую как SystemSoftBIOS, DELLXBIOS,
ACERBIOS, HPBIOS, я не рассматриваю, так как по сути та- Загружаем PXE-код
кие ПЭВМ встречаются достаточно редко, и утилит для из- Будем считать, что сетевая плата на клиенте коррект-
менения этих BIOS практически не существует для конеч- но работает, и PXE-код посылает DHCP-запросы в ок-
ных пользователей. ружающий эфир. Следует оправдать ожидания сетевой
Изменение flash-памяти достаточно непростая проце- платы и обработать DHCP-пакеты с помощью службы
дура, поэтому: dhcpd (более подробно, см. /usr/doc/Linux-HOWTOs/DHCP,
34
администрирование
/usr/doc/dnsmasq-2.8/FAQ). Для этого в загрузочный скрипт IP-адрес 10.0.0.50. Для сетевой загрузки этого узла служит
/etc/rc.d/rc.local добавляем строчку «/usr/sbin/dhcpd eth0», файл pxelinux.0, размещенный на tftp-сервере.
либо запускаем данный сервис в виде отдельной службы, После таких приготовлений необходимо подготовить
например, через /etc/rc.d/rc.dhcpd. Или в случае, когда для файлы, которые будут загружаться по сети. Итак, пере-
старта службы dhcp используется скрипт /etc/init.d/rc.dhcpd, ходим непосредственно к приготовлению тонкого клиен-
настроим запуск как «invoke.rc dhcpd start». та – ThinStation.
Не забудем также раскомментировать (если она, конеч-
но же, закомментирована) в /etc/inetd.conf строчку, упоми- Генерируем загрузочный образ
нающую сервис tftp. В конечном виде строка выглядит сле- Я предлагаю остановить свой выбор на версии 2.1.3.
дующим образом: Во-первых, эта версия является самой последней из ста-
бильных. Во-вторых, используется хорошо зарекомендо-
tftp dgram udp wait root ↵ вавшее себя Linux-ядро линейки 2.4. В-третьих, и это, по-
/usr/sbin/in.tftpd in.tftpd -s /tftpboot -vv
жалуй, самая объективная причина – для ThinStation 2.1.3
Для обладателей RedHat-систем, где используется скомпилировано самое большое количество приложений,
xinetd.conf, добавление выглядит примерно так: среди которых Mozilla Firefox, Sylpheed, MPlayer.
package ica
param icaurl http://download2.citrix.com/files/en ↵
/products/client/ica/current/linuxx86.tar.gz
KEYBOARD_MAP=ru
10 package keymaps-en_us
И переписываем приготовленные файлы в каталог tftp-
11 package rdesktop
12 package vncviewer сервера:
13 package rxvt
14 package xterm # su -
15 package ssh # cp -R ./boot-images/pxe /tftpboot
16 package blackbox
17 package xtdesk В принципе, на этом этапе можно запускать терминаль-
ный клиент и смотреть, как происходит процесс загрузки.
18 param rootpasswd root
19 param xorgvncpasswd vnc В качестве визуального примера я привожу, как процесс
загрузки происходит в виртуальной машине.
20 param bootlogo true
21 param bootresolution 1024x768 С момента включения VIA EPIA-M до момента определе-
22 param bootverbosity 7 ния IP-адреса по dhcp-протоколу прошло 25 секунд.
Еще 25 секунд требуется на распаковку образа в памяти
Строчки 1-5 отвечают (нумерация строк приведена терминального узла, настройку служб и рабочего стола.
для удобства обсуждения, в build.conf ее естественно быть Щелкаем на пиктограмму RDP-клиента и вводим адрес
не должно) за включение в состав формируемого пакета Windows Terminal Server (см. рис. 2). А также имя пользова-
сетевых драйверов для указанных карт. Строка 6 означает, теля и пароль (см. рис. 3).
что USB-клавиатура и USB-мышь, будучи подключены к тер- И присоединяемся к Windows-серверу (см. рис. 4).
миналу, смогут функционировать. В строке 7 в формирую- Небольшая особенность работы RDP-клиента в вер-
щийся пакет подключается модуль для работы с USB-брел- сии ThinStation 2.1.3 – если вы подключите поддержку зву-
ками. Строка 8 подключает модуль, отвечающий за работу ка на терминалах, где используется звуковой драйвер i810,
файловой системы SMB. то воспроизведение звука будет ускоренным. Проблема, на-
Для подключения к Citrix-серверам используется загруз- сколько я помню, заключалась в драйвере i810 и решена
ка бинарного клиента с сайта Citrix. в новой серии ThinStation 2.2.
36
администрирование
Рисунок 3. Для ввода используется русский язык Рисунок 4. Экран удаленного сервера
Что касается хранимых профилей миться с готовыми решениями, кото- Было отрадно также увидеть дейс-
пользователей, в случае, если наду- рые доступны на рынке на сегодня- твительно сверхкомпактные термина-
маете включать в загружаемый образ ший день. лы с аппаратной начинкой, аналогич-
браузер Mozilla Firefox, то хочу обратить Итак, начнем, пожалуй, с тонких кли- ной, что и у «старших» братьев [1].
ваше внимание на секцию STORAGE ентов серии e100 от компании Neoware На рынке тонких клиентов рабо-
в конфигурационном файле thinstation. [17]. Данная серия представляет собой тают такие производители, как Wyse
conf.network (он должен быть распо- младшую линейку тонких клиентов. За- Technology, Boca Research, Netier
ложен на tftp-сервере, как и загружа- грузка происходит со встроенной кар- Technologies, Network Computer Devices,
емый образ). ты compact-flash. Размеры варьируются TeleVideo, IBM, Compaq, Dell, Fujitsu-
В частности, опции STORAGE_ от 32 до 512 Мб. Количество ОЗУ может Siemens, Unisys и другие.
PATH, STORAGE_SERVER и STORAGE_ быть от 128 до 512 Мб. Операционная Однако не стоит думать, что тонкие
PREFIX отвечают за формирование система на клиентах может быть Linux, клиенты выпускаются только западны-
полного пути к сохраняемому профи- Windows CE, Windows XPe. Подде- ми компаниями. Это не так. У нас тоже
лю. Профиль может быть сохранен ли- ржка протоколов RDP/ICA обязательна умеют собирать тонкие клиенты. Сре-
бо по NFS, либо по SMB-протоколу. для любой модели – в случае, если ис- ди таких компаний фигурируют следу-
Также файл thinstation.conf.network пользуется Linux-терминал, применяет- ющие имена – K-Systems, Nienshanz,
предназначен для более тонкой на- ся rdesktop и ICAClient под Linux, в слу- AK-Systems, Kraftway. Цены на тонкие
стройки каждого конкретного кли- чае Windows-терминала – встроенные клиенты чуть-чуть ниже, нежели у за-
ента. Например, видеоразрешение клиенты Remote Terminal Connection рубежных коллег.
для X-сервера задается именно там. и Citrix Client под Win32. Максимальное
видеоразрешение одинаково для всех Выводы
Аппаратные альтернативы моделей данного ряда и составляет Я не агитирую вас пересматривать си-
В случае, если у вас за спиной нет 1600x1200. туацию, которая, как иногда утвержда-
обоза старой техники и вы начинаете Если вы внимательно смотрите ют старожилы, «исторически сложи-
комплектовать предприятие, что го- на названия приведенных моделей, лась» на ваших рабочих местах в ту
ворится с нуля, то предлагаю ознако- то видите, что последний клиент ос- или иную сторону – оставить всё как
Таблица 1. Цены на тонкие клиенты нован на Windows XPe. Новая опера- есть или обратить внимание на новые
от Neoware [18] ционная система от Microsoft? Вовсе возможности. В любом случае реше-
Название модели Цена нет – это урезанная версия Windows ние всегда остается за вами. Следу-
Neoware e100 (Linux) от 369 у.е. XP для встраиваемых систем. Кстати ет учесть, что ThinStation – это конс-
Neoware e100 (Windows CE) от 399 у.е. говоря, у этой корпорации также есть труктор, у которого есть, естествен-
Neoware e100 (Windows XPe) от 599 у.е. планы на использование старой техни- но, и плюсы и минусы. Плюс – мож-
ки в качестве тонких клиентов [19]. но сконструировать практически лю-
Таблица 2. Цены на тонкие клиенты
от HP [20] Симпатично выглядят с эстетичес- бую конфигурацию для рабочей стан-
Название модели Цена кой точки зрения и тонкие клиенты ции (в рамках терминального вариан-
HP Thin Client t5710 от 509 у.е. от компании Hewlett-Packard. Функци- та). Минус, и достаточно жирный, за-
ональность у продукции от HP анало- ключается в том, что добавление собс-
HP Thin Client t5525 от 379 у.е.
гична продукции от Neoware – похоже, твенного приложения в ThinStation тре-
HP Thin Client t5520 от 359 у.е.
что наличие поддержки протоколов бует, чтобы у разработчика было не ме-
HP Thin Client t5515 от 330 у.е.
RDP/ICA стало стандартом де-факто. нее 3 Гб для распакованного архива
HP Thin Client t5510 от 359 у.е. Чем же привлекательны тонкие кли- и еще не менее 3 Гб для собираемых
HP Thin Client t5125 от 289 у.е. енты от HP, неужели ценой? пакетов. В общем – это отдельная ис-
38
администрирование
Разрабатываем документацию
с помощью NPJ: эффективно и удобно!
Алексей Коршунов
Ведение документации на свою рабочую сеть давно стало правилом хорошего тона
для любого уважающего и считающего себя профессионалом системного администратора.
Дело здесь вовсе не в служебных обязанностях, а скорее в прямой необходимости.
О
собенно если сеть состоит способов настроить один и тот же сер- нием и написанием документации.
из более чем одного сервера вис может быть не два и даже не три. Все мы знаем, что память человека
и пяти рабочих станций. В слу- Очень часто работа с Open Source- обладает избирательностью и имеет
чае с Linux-серверами это правило проектом (не важно, его разработка свойство убирать «на дальнюю полку»
действительно вдвойне, потому как или установка) тесно связана с чте- неиспользуемые в данный момент зна-
40
администрирование
разработка и сбор документации, мо-
гу привести npj.akeeper.ru. Учитывая
весьма продвинутые средства поис-
ка по узлу NPJ – это крайне удобный
инструмент.
Суть удобств:
Установка и настройка, как прави-
ло, занимает 5-10 минут.
Гибкость архитектуры позволяет
создавать на вашем узле практи-
чески всё что угодно – от баналь-
ного блога (есть ресурс, где NPJ
используется для ведения личных
дневников livejournal) до серьёзного
ресурса по разработке, представ-
лению и ведению проекта.
Сквозная авторизация на узлах
других систем (о ней чуть ниже)
позволяет вам принимать участие
в работе на любых узлах, подклю-
Рисунок 1. Пример внешнего вида личного пространства чённых к общей сети NPJ-узлов.
ния. Количество же таких знаний на- но выделить «НетПроектЖурнал» На одном узле может быть создано
прямую зависит от вашего опыта ра- или просто NPJ. Он построен на при- сколь угодно много рабочих групп,
боты и размера серверного парка ва- нципах работы любого Open Source- каждой из которых допустимо за-
шей компании. проекта. Люди объединяются в со- ниматься своим независимым про-
По своему опыту могу сказать, общества (рабочие группы) и рабо- ектом.
что пара десятков грамотно написан- тают над какой-либо документаци- Рабочие группы могут быть публич-
ных (собственноручно) документов ей. Для примера ведения проекта мо- ные, премодерируемые, скрытые.
по настройке «типовых» решений – гу привести весьма простой, но от то- Любая страница внутри узла мо-
сильно облегчают жизнь и навсегда го не менее удобный биллинг «cake» жет выступать в любом качест-
избавляют от мучительных воспоми- (http://npj.ru/cake). В данном случае ве – от обычного документа, до
наний. Больше нет раздумий о том, сайт проекта является и его главной формы форума (об этом тоже чуть
что же я на этот раз забыл куда про- страницей, и местом разработки до- позже).
писать и какой нюанс, встретивший- кументации, и местом поддержки Помимо участия в рабочих группах
ся когда-то, никак не может всплыть проекта, так как NPJ – гибкий инс- пользователь узла всегда имеет
из глубин моей памяти. Не стану от- трумент и фактически может высту- собственный личный журнал и воз-
рицать, наверное, существуют су- пать в любом качестве. Для приме- можность создания своих докумен-
пер-профессионалы, которые помнят ра ресурса, основная цель которого тов.
всё и всегда, но мне такие не известны.
Гуру, с которыми мне приходилось об-
щаться, нет-нет да и говорили в ответ
на вопрос «Что-то такое было... Я точ-
но не помню».
К чему я всё это? А к тому, что при-
вычку писать (хотя бы даже для себя)
документацию о настройке сервисов,
в которых столкнулись с проблемами,
о встретившихся тонкостях и особен-
ностях – можно смело назвать весьма
полезной привычкой и крайне необхо-
димой практикой. Это логическое про-
должение привычки многих людей –
записывать в КПК, документы и дру-
гие менее удобные для поиска инфор-
мации источники.
42
администрирование
php. И если вы хотите прини- в своём личном пространстве.
мать участие в работе на дру- Для сведения, рабочая группа
гих узлах с теми приятными может существовать в скры-
мелочами, что были описаны том виде для единственно-
выше, включите интеграцию го пользователя. Это весьма
вашего узла в общую сеть. полезно, когда ваш узел пуб-
Это делается двумя кликами личный и на нём присутству-
на странице администриро- ет много людей, а вы по каким-
вания – http://npj.example.ru/ то причинам не хотите разгла-
manage/nns. шать информацию, с которой
После установки в ва- работаете. (Я это использо-
шем распоряжении будет од- вал для ведения докумен-
на группа, по умолчанию на- тации на всю сеть компании
зывающаяся node@имяузла, на своём узле, который досту-
а также личная область, до- пен всему Интернету.)
ступная всем пользователям Рабочие группы на узлах
(см. рис. 1). NPJ – это фактически разгра-
Вы можете выбрать не- ничение прав между пользо-
Рисунок 4. Рассматриваем группы более внимательно
сколько вариантов оформ- вателями узла. Они существу-
ления узла для вас, а также умолча- и использовали исключительно в лич- ют для определения политики выдачи
ния для тех пользователей, которые ных целях. (отображения) информации, с которой
не сделали собственных предустано- Как только вы увидите всё это бо- работают члены группы, а также для
вок. Первое делается в настройках гатство, возникнет вопрос – как же определения прав доступа каждого
вашего профиля, а второе, соответс- всем этим пользоваться. К сожалению члена. Группы могут быть публичными,
твенно, в настройках узла. По умол- или к счастью, NPJ имеет достаточно премодерируемыми, а также, как уже
чанию выставлен стиль «simplifica», но высокий «уровень вхождения», поэто- упоминалось, скрытыми.
многие предпочитают более аскетич- му на первых порах у пользователей Члены групп могут обладать раз-
ный стиль «academic». Мне, правда, не возникает множество вопросов о спо- ными правами, от читательских до ме-
нравится ни тот, ни другой, так как их собах взаимодействия с узлом. Здесь неджерских (администраторских). Ра-
функциональность для меня не под- на помощь приходит выражение, ко- зумеется, в пределах своих групп. Ес-
ходит. Я использую «minikui», который торое уже прозвучало выше, – каждая ли пользователь является менеджером
вы можете видеть на рис. 1. Его основ- страница узла – это «пластилин», из ко- пусть даже основной рабочей группы
ное преимущество – удобство в быс- торого вы можете «лепить» что угод- node@имяузла – это не означает, что
тром доступе к множеству функций но. Для того, чтобы понять, о чем я го- он становится администратором узла.
и свойств страницы. Например, к свое- ворю, просто кликните дважды на лю- Если вы создали рабочую груп-
му стыду, я так и не понял, как в стиле бой странице узла. Например, на цен- пу (или же решили использовать
«academic» добиться быстрого и удоб- тральной. И если вы обладаете адми- уже существующую), то можете сра-
ного (а главное постоянного, вне зави- нистраторскими правами – получите зу приступить к оформлению и на-
симости от просматриваемой страни- окно для редактирования страницы полнению её материалами. Для это-
цы) доступа к поиску. (см. рис. 2). го достаточно зайти на страницу груп-
Есть и другие причины заглянуть Начиная с этого момента вы може- пы, которая, как правило, выглядит
в пользовательские настройки. Напри- те как угодно до неузнаваемости из- http://имяузла/имярабгруппы и точно
мер, там есть выбор между использо- менить главную страницу вашего уз- так же, как на центральной странице,
ванием вики/вака разметки и более на- ла. Воспользуйтесь ссылкой на опи- кликнуть на ней дважды. Откроется
глядного редактора в стиле MS Word. сание различных тегов и разметки – уже знакомое окно редактирования.
В личной области вы можете вес- http://www.npj.ru/node/chastyevoprosy/ Оформление первой страницы ра-
ти свой дневник (как тот же livejournal) zapisizhurnala/wikisintaksis. Есть непи- бочей группы может состоять из рубри-
и, например, таким образом протоко- саные стандарты оформления главной катора материалов, алфавитного спис-
лировать для себя разработки на узле. страницы. Однако следовать им вов- ка и т. п. Причем для использования,
Там же у вас есть возможность созда- се не обязательно. Вы можете пос- например, рубрикатора, вам потребу-
вать собственные документы, не при- мотреть, как могут выглядеть заглав-
вязанные ни к какой рабочей груп- ные страницы просто попутешество-
пе. Строго говоря, рабочие группы во- вав по разным узлам.
обще не обязательный атрибут, если Когда с центральной страницей бу-
узел создавался не с целью обеспе- дет покончено, в зависимости от то-
чения какого-либо проекта, которым го, собираетесь ли вы заводить ра-
занимаются много людей. Мне извес- бочую группу или нет, – можете прой-
тно немало случаев, когда NPJ стави- ти в редактирование рабочих групп
ли на собственной локальной машине или же просто приступить к работе Рисунок 5. Начинаем мять «пластилин»
Выводы
Способов применения в работе узла
Рисунок 7. Структура рабочей группы «Город-Инфо» NPJ ровно столько, сколько вы смо-
ется только добавить код на страницу, димым. От обычных html-текстов их от- жете придумать. Может быть, вы пред-
рубрики будут отображаться автома- личает только удобство использова- почтёте записывать в собственный
тически. (Разумеется, если при вводе ния, удобство редактирования и про- журнал интересные находки «на бу-
документов, вы будете учитывать не- чие «полезности», что уже были озву- дущее», а в документах сохранять,
обходимость указания рубрики для до- чены выше. к примеру, особо удачные конфигура-
кумента.) ционные файлы или же их описание.
Для пробы описанных выше воз- Использование NPJ Может быть, вы создадите отдельную
можностей давайте создадим на стра- в работе рабочую группу, где будете вести всю
нице новой рабочей группы ссылку Какую конкретно документацию вес- документацию по своей сети. А может,
на два объекта. Допустим, что первая ти в NPJ, решать вам. От себя я мо- вы посвятите свой узел поддержке ка-
ссылка будет документом, а вторая – гу поделиться той схемой, благодаря кого-либо проекта, разработкой кото-
оглавлением (см. рис. 5). которой у меня навсегда исчезла про- рого в данный момент занимаетесь
После сохранения мы увидим под- блема ответа на вопрос (начальству или только планируете заняться.
чёркнутые пунктиром наши ссыл- или самому себе), что где находится Многие тонкости работы NPJ оста-
ки и знак вопроса в конце. При клике и как оно работает. Эта схема исполь- лись за рамками статьи. Причин для
на этот знак вопроса нам будет пред- зовалась в компании «Город-Инфо» этого несколько. Во-первых, несмот-
ложено создать не существующий по- (см. рис. 7). ря на то, что я давно пользуюсь этой
ка объект. Как видно из рисунка, фактически системой, для меня ещё не все тон-
Теперь заполним первую страницу все области работы службы системных кости раскрыты. Во-вторых, многое
текстом, а на второй сделаем оглавле- администраторов компании здесь ос- из оставленного за рамками статьи от-
ние (см. рис. 6). вещены. Разумеется, часть информа- носится к редко используемому, и да-
Как вы видите, от того, что страни- ции не отображена на схеме и вклю- леко не всем будет интересно. Напри-
цы нами предназначались для разных чена в пункты «прочее», но и того, мер, работа с «Сообществами», внут-
целей, – суть их не изменилась. Мы мо- что отображено, более чем достаточ- ри которых создавать документы не-
жем в первый документ добавить ог- но для понимания. Стрелками отобра- льзя. Эта такая дискуссионная форма,
лавление какого-нибудь нового раз- жены ссылки между разделами. Мно- но применения ей я не нашёл, поэто-
дела. А можем, наоборот, на второй жество перекрёстных ссылок нахо- му в своём рассказе пропустил. А са-
созданной странице написать текст дится и внутри документов, но отоб- мую сложную проблему в использо-
и разместить (к примеру) картинку. разить это на схеме не представляет- вании NPJ, понимание, как это рабо-
В любой момент вы можете про- ся возможным. тает, хочется надеяться, я помог вам
смотреть код практически любой стра- Там же системными администра- разрешить.
ницы (причем необязательно только торами компании велась разработка Одно могу сказать вам точно, пос-
вашего узла). Для этого достаточно на- документации, которая впоследствии ле того, как привыкаешь пользоваться
брать http://npj.example.ru/page/source, предоставлялась клиентам и заказчи- в работе таким удобным инструментом,
и вы получите указанную страницу кам. NPJ позволяла не только вместе он становится незаменимым помощни-
в wiki-разметке. выполнять такие работы, но и отслежи- ком. И это неудивительно. Вы не тра-
Надеюсь, теперь вы поняли, что вать изменения в документе. А также тите время на поиск места для сохра-
каждая страница NPJ-узла – это шаб- предоставляла площадь для дебатов нения мыслей или целого докумен-
лон, в котором может находиться всё, по поводу внесения тех или иных из- та, не мучаетесь с построением кра-
что вам заблагорассудится. Фактичес- менений. Впоследствии там же долж- сивой структуры, не страдаете от не-
ки это можно представить как кучу html- на была начаться разработка целого корректно работающего поиска, кото-
файлов, которые между собой увяза- пакета документации, так как именно рый никак не хочет выдать требуемое –
ны так, как вы сами посчитали необхо- это средство было признано наиболее вы просто делаете свою работу.
44
администрирование
Что такое Subversion? без потери версионирования кущий момент доступно около де-
Если коротко, Subversion – это сво- и истории изменений. В отличие сятка программ для работы с репо-
бодно распространяемая система от CVS, которая требует вмеша- зиторием SVN: ViewCVS, SVN::Web,
контроля версий, призванная заме- тельства администратора серве- WebSVN, ViewSVN, mod_svn_view,
нить собой устаревшую систему CVS. ра и ручного копирования файлов, Chora, Trac, SVN::RaWeb::Ligh, SVN
Subversion используется такими про- Subversion изначально обладает та- Browser, Insurrection и т. д. В данной
граммистскими коллективами, как ко- кой возможностью, а при установке статье мы рассмотрим настрой-
манда разработчиков компиляторов модуля SVN::Mirror, разработанно- ку WebSVN как наиболее простого
GNU, KDE Development Team, разработ- го Chia-Ling Kao, Subversion также и в то же время функционального
чиками СУБД Ingres, Apache Software «обучается» клонировать данные инструмента.
Foundation, Samba и многими, многими из текущего в произвольный уда- Кроме утилит командной строки,
другими. Далеко не полный список про- ленный репозиторий. доступны также графические ин-
ектов, исходные коды которых хранятся Права доступа к репозиторию. терфейсы: кроссплатформенный
в Subversion, доступен по ссылке: http:// Вы можете назначать пользова- RapidSVN, TortoiseSVN – плагин
subversion.tigris.org/testimonials.htm. телям права доступа к различным для MS Windows Explorer, а также –
частям репозитория, простым ре- Jsvn, написанный на Java и доступ-
CVS vs Subversion дактированием текстового конфи- ный везде, где есть Java-машина.
Поскольку Subversion разрабатыва- гурационного файла. Ну и, наконец, лицензия. Subversion –
лась как продвинутая замена CVS, из- Комментарии к каждому изме- программное обеспечение с откры-
начально ставилась задача: сохранить ненному объекту. Теперь вы може- тым кодом и распространяется
всю привычную функциональность те оставлять комментарий в журна- по лицензии Apache/BSD-style.
при добавлении новых возможнос- ле коммита к любому измененному
тей. Поэтому большинство широкоис- вами файлу. Что входит в состав
пользуемых команд Subversion имеют Простота развертывания сис- пакета Subversion
такой же синтаксис, как и CVS. Пере- темы. Для построения полноцен- svn – клиент Subversion. Представ-
ход на Subversion несложен и не тре- ной работоспособной системы ляет собой утилиту командной
бует долгого привыкания. Subversion в большинстве случа- строки, осуществляющую доступ
Атомарное принятие изменений. ев необходим только веб-сервер к репозиторию Subversion.
Поддержка атомарных коммитов Apache2 и интерпретатор PHP, а ми- svnversion – программа, показы-
позволяет либо принимать весь из- нимальный набор утилит Subversion, вающая состояние компонент те-
мененный код, либо не принимать позволяющий работать по протоко- кущего репозитория.
изменения вовсе, если транзакция лам SVN и SVN + SSH, вообще не svnlook – утилита для контроля ре-
по каким-либо причинам (напри- требует установки стороннего ПО. позитария Subversion.
мер, из-за падения канала) не бы- Простота интеграции в сущест- svnadmin – утилита для создания,
ла завершена. Subversion подде- вующую инфраструктуру сети. управления и восстановления ре-
рживает такой режим работы и га- Доступ к репозиторию Subversion позитария Subversion.
рантирует, что репозиторий не бу- может осуществляться по протоко- svndumpfilter – программа филь-
дет содержать в себе несовмести- лам HTTP, HTTPS, SVN, SVN+SSH, трации дампов репозитория
мых данных – либо репозиторий из набора которых вы сможете лег- Subversion.
останется неизмененным, либо об- ко выбрать наиболее подходящий mod_dav_svn – модуль для веб-сер-
новление будет полным. для заданной конфигурации сети. вера Apache2, предоставляющий
Переименование, перенос и ко- Разнообразные веб-интерфейсы доступ в репозиторий Subversion
пирование файлов и каталогов для доступа к репозиторию. На те- по протоколам HTTP и HTTPS.
46
администрирование
svnserve – программа-сервер, запускающаяся как оди- либо:
ночный демон или из inetd и предоставляющая доступ
к репозиторию Subversion по протоколу SVN или SSH. # pw -V /usr/home/jails/svn/etc useradd admin -g 0 ↵
-d /usr/home/jails/svn/usr/home/admin -s /bin/csh ↵
-h 0 -m
План установки Subversion
Установка необходимого ПО. В этом разделе будут Для удобства работы присваиваем пользователю группу
описаны установка и запуск FreeBSD Jail, установка веб- 0 (wheel) и разрешаем в jail запуск sshd. В файл /usr/home/
сервера Apache 2.X, Subversion, PHP4 и WebSVN. jails/svn/etc/rc.conf добавляем строчку sshd_enable=”YES”
Создание сертификатов и конфигурация серверно- и запускаем jail командой /etc/rc.d/jail start. Если все сделано
го ПО. Здесь мы рассмотрим создание собственного са- правильно, команда jls(8) выведет примерно следующее:
моподписанного сертификата (Certificate Authority, CA),
создание сертификата сервера и создание клиентских # jls
сертификатов. JID IP Address Hostname Path
Настройка клиентов SVN на *nix и Windows. Этот раз- 1 XX.YY.XX.TT svn.reki.ru /usr/home/jails/svn
дел посвящен работе с Subversion на платформе *nix Заходим в jail по ssh, получаем права суперпользовате-
(Linux/FreeBSD/Solaris ), а также установке на Windows- ля, выкачиваем и разворачиваем архив дерева портов:
машину клиента TortoiseSVN.
# ssh XX.YY.XX.TT -l admin
# su - root
Создаем и устанавливаем Jail # cd /usr
Jail необходим для того, чтобы система контроля версий жи- # fetch ftp://ftp.freebsd.org/pub/FreeBSD/ports/ports ↵
/ports.tar.gz
ла в собственном мире и никак не пересекалась с остальны- # tar -xzf ports.tar.gz
ми приложениями. Кроме того, используя jail, вы повышаете
общий уровень защищенности системы: если обнаружится Начиная с этого момента jail представляет собой пол-
уязвимость в пакетах Subversion, Apache или PHP, основная ноценную виртуальную машину, доступную для админис-
система не пострадает. Jail будет также полезен в том слу- трирования по ssh.
чае, если на основной системе установлен Apache 1.3.X.
Если для Subversion используется выделенный сервер, Устанавливаем веб-сервер Apache2
этот пункт можно смело пропустить. Для повышения общего уровня безопасности, будем ав-
Собираем jail. Обратите внимание, что на FreeBSD 5.3 торизовывать клиента через подписанный нами серти-
команда «make world DESTDIR=$D» из jail(8) не работает. фикат; поэтому нам следует воспользоваться опцией
Вместо нее следует воспользоваться командами: FakeBasicAuth. При входе клиента с выданным нами сер-
тификатом на сервер Apache произведет псевдоавториза-
make buildworld цию, основываясь на данных сертификата.
make installworld DESTDIR=$D
Надо отметить, что при подобной авторизации имя поль-
Итак, в нашем случае сборка jail будет выглядеть так: зователя выглядит как строка свойств сертификата. Соот-
ветственно при коммите через HTTPS имя пользователя бу-
# cd /usr/src дет не stellar, а /C=RU/ST=-/L=Moscow/O=Reki.ru/OU=SVN/
# mkdir -p /usr/home/jails/svn
# make buildworld CN=stellar/emailAddress=stellar@reki.ru. Понятно, что нали-
# make installworld DESTDIR=/usr/home/jails/svn чие в двух ипостасях одного и того же пользователя никого
# cd etc
# make distribution DESTDIR=/usr/home/jails/svn устроить не может и хорошим решением было бы взять в ка-
честве логина часть строки данных сертификата. Для этого
В файл /etc/rc.conf добавляем следующие строчки: в Apache предусмотрена директива SSLUserName и... увы
и ах, мир несовершенен: без исправлений кода mod_ssl оп-
jail _ enable="YES" # Включаем загрузку jail ции FakeBasicAuth и SSLUserName вместе не работают.
# Список всех jail, которые есть в системе
jail _ list="svn" К счастью, по URL http://reki.ru/products/subversion/patch-
# Запрещаем изменение hostname из jail server-ssl_engine_kernel.c, теперь доступен патч, исправля-
jail _ set _ hostname _ allow="NO"
# Разрешаем для jail обмен только по TCP/IP ющий это недоразумение.
jail _ socket _ unixiproute _ only="YES" Для сборки Apache с поддержкой FakeBasicAuth +
# Запрещаем SystemV IPC внутри jail
jail _ sysvipc _ allow="NO" SSLUserName надо скачать патч и положить его в каталог
/usr/ports/www/apache2/files. Если предполагается, что репо-
# Для jail с именем "svn"
jail _ svn _ rootdir="/usr/home/jails/svn" # Каталог jail зиторий Subversion будет храниться в BerkeleyDB, нам так-
jail _ svn _ hostname="svn.reki.ru" # Имя хоста jail же будет необходимо включить поддержку BerkeleyDB
jail _ svn _ ip="XX.YY.XX.TT" # IP адрес
jail _ svn _ exec="/bin/sh /etc/rc" # Скрипт инициализации для Apache.
jail _ svn _ devfs _ enable="YES" # Монтировать devfs в jail Итак, устанавливаем необходимые переменные окру-
жения и запускаем установку Apache.
Добавляем пользователя, под которым мы будем захо-
дить в jail. Для этого можно воспользоваться командой: # cd /usr/ports/www/apache2
# setenv WITH _ BERKELEYDB db42
# cd files
# vipw -d /usr/home/jails/svn/etc # fetch http://reki.ru/products/subversion ↵
48
администрирование
certificate = ./ca.crt ErrorLog /var/log/apache/www/svn.reki.ru/error _ log
# Закрытый ключ сертификата CA CustomLog /var/log/apache/www/svn.reki.ru/access _ log ↵
private _ key = ./ca.key "%t %h %{SSL _ PROTOCOL}x ↵
%{SSL _ CIPHER}x \"%r\" %b"
# Время, на которое выписывается клиентский сертификат
default _ days = 365 SSLEngine on
require valid-user
Создаем сертификат сервера: </Location>
Если все сделано правильно, команда ps(1) покажет не- Настройка клиентов SVN
что похожее на это: Создаем и подписываем клиентский сертификат. Рассмот-
рим создание клиентского сертификата на примере поль-
# ps axw | grep httpdvv зователя stellar.
50
администрирование
# openssl req -new -newkey rsa:1024 -nodes ↵ Если импорт произведен успешно, при заходе на https://
-keyout stellar.key -out stellar.csr ↵
-subj /C=RU/ST=-/L=Moscow/O=Reki.ru ↵ svn.reki.ru появляется диалог выбора сертификата p12.
/OU=SVN/CN=stellar/emailAddress=stellar@reki.ru
52
bugtraq
Отказ в обслуживании в Sun Java JRE Успешная эксплуатация уязвимости позволит злоумыш-
Программа: Sun Java JRE 1.4.2_08, 1.4.2_09, и 1.5.0_05. леннику выполнить произвольный код на целевой систе-
Опасность: Низкая. ме с привилегиями пользователя, запустившего уязвимое
Описание: Уязвимость существует в Sun Java Runtime приложение.
Environment при обработке сериализированных Java-объ- Решение: В настоящее время способов устранения уязви-
ектов. Удаленный пользователь может аварийно завер- мости не существует.
шить работу Java Virtual Machine с помощью специально-
го приложения, десериализирующего объекты их недове- Множественные уязвимости в phpBB
ренных источников. Программа: phpBB 2.0.17 и более ранние версии.
URL производителя: www.sun.com. Опасность: Высокая.
Решение: В настоящее время способов устранения уязви- Описание: 1. Межсайтовый скриптинг возможен из-за недо-
мости не существует. статочной обработки входных данных в параметре error_msg
сценария usercp_register.php, параметре forward_page сце-
Небезопасный вызов функции нария login.php и параметре list_cat сценария search.php.
CreateProcess() у различных Удаленный пользователь может с помощью специально
производителей сформированного URL выполнить произвольный HTML-
Программа: RealPlayer 10.5. Kaspersky Anti-Virus for Windows сценарий в браузере жертвы в контексте безопасности
File Servers 5.0, iTunes 4.7.1.30, Microsoft Antispyware 1.0.509 уязвимого сайта.
(Beta 1), VMWare Workstation 5.0.0 build-13124. 2. SQL-инъекция возможна из-за недостаточной обра-
Опасность: Средняя. ботки входных данных в параметре signature_bbcode_uid
Описание: Microsoft Windows API использует функцию сценария usercp_register.php и может быть эксплуатиро-
CreateProcess() для создания нового процесса и его пер- вана посредством вставки произвольных выражений типа
вичной нити. Функция CreateProcessAsUser() выполняет та- «field=xxx» в запрос. Уязвимость существует при выключен-
кую же функцию, но позволяет процессу быть запущенным ной опции magic_quotes_gpc.
в контексте безопасности пользователя. 3. Уязвимость обнаружена при обработке входных
Функция CreateProcess() выглядит таким образом: данных в параметре signature_bbcode_uid сценария
BOOL CreateProcess(
usercp_register.php. Удаленный пользователь может изме-
LPCTSTR lpПриложениеName, нить значения, которые передаются в функцию preg_replace()
LPTSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
и выполнить произвольный PHP-код на целевой системе.
LPSECURITY_ATTRIBUTES lpThreadAttributes, URL производителя: www.phpbb.com.
BOOL bInheritHandles,
DWORD dwCreationFlags,
Решение: Установите последнюю версию (2.0.18) с сайта
LPVOID lpEnvironment, производителя.
LPCTSTR lpCurrentDirectory,
LPSTARTUPINFO lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation Обход ограничений безопасности
); в SELinux unix_chkpwd
Переменная lpПриложениеName содержит имя испол- Программа: SELinux unix_chkpwd.
няемого модуля. Если эта переменная содержит значение Опасность: Низкая.
NULL, то имя исполняемого модуля будет состоять из пер- Описание: Уязвимость обнаружена в SELinux. Локальный
вого пробела и строки lpCommandLine. Например: пользователь может с помощью утилиты unix_chkpwd про-
CreateProcess( извести перебор паролей к системным учетным записям.
NULL, Неудачные попытки входа в систему не логируются.
c:\program files\sub dir\program.exe,
... Решение: В настоящее время способов устранения уязви-
); мости не существует.
В приведенном примере строка будет интерпретирова-
на функцией следующим образом: Переполнение буфера в VERITAS
c:\program.exe files\sub dir\program name NetBackup
c:\program files\sub.exe dir\program name Программа: VERITAS NetBackup Enterprise Server Server/
c:\program files\sub dir\program.exe
Client version 5.0 и 5.1.
Итак, если приложение program.exe существует в кор- Опасность: Средняя.
невом каталоге диска C:\, то оно будет выполнено вместо Описание: Уязвимость обнаружена в библиотеке, исполь-
целевого приложения. зуемой vmd (Volume Manager Daemon). Удаленный пользо-
Этот случай поведения функции описан непосредствен- ватель может вызвать отказ в обслуживании, прервав про-
но в документации API: http://msdn.microsoft.com/library/en- цесс резервного копирования или выполнить произвольный
us/dllproc/base/createprocessasuser.asp. код на целевой системе посредством vmd-демона.
Для успешной эксплуатации уязвимости злоумышлен- URL производителя: www.symantec.com.
нику необходимо внедрить злонамеренный код в файл Решение: Установите исправление с сайта производите-
C:\program.exe. Это может быть сделано с помощью соци- ля.
альной инженерии или посредством других уязвимостей. Составил Александр Антипов
Сергей Яремчук
Одноуровневой модели прав доступа пользователей, которая применяется в Linux
и во всех UNIX-подобных операционных системах, на сегодняшний день явно недостаточно.
Вам придётся очень постараться, чтобы правильно распределить права доступа к объекту.
Списки контроля доступа позволяют более гибко решить эту задачу.
евять бит плюс три специаль- но для любого другого пользователя стоящее время известны две разра-
ных бита позволяют опреде- или группы, без каких-либо ограниче- ботки, реализующие списки контроля
лить права доступа к файлу ний по количеству устанавливаемых доступа для Linux, о которых сегодня
(чтение, запись, исполнение) пользователей/групп. и поговорим.
только для трех класов пользовате- Кроме того, технология ACL может
лей – владелец, группа и остальные. использоваться, например, для досту- Проект Linux Extended
Такой механизм в большинстве случа- па к SUID-файлам, определяя пользо- Attributes and ACLs
ев не пригоден для решения даже от- вателей, которым действительно не- Этот проект [1] предоставляет пат-
носительно простых задач. Чтобы оп- обходим запуск таких файлов. Опера- чи к ядрам версий 2.4 (ext2, ext3, nfs)
ределить доступ к какому-нибудь доку- ционные системы Windows на ядре NT и 2.6 (nfs), реализующие расширен-
менту или ресурсу, пользователя обыч- и Novell Netware изначально поддержи- ные атрибуты (EA – Extended Attributes)
но включают в определенную груп- вают более гибкий механизм доступа и POSIX ACL, а также библиотеки
пу. Все, кто входит в эту группу, име- к файлу. В мир Linux эта технология и инструменты для работы с ними.
ют одинаковые права, т.е. использует- пришла относительно недавно (в ядре Напомню, что ядра версии 2.6 уже
ся принцип «всё или ничего». Списки поддержка ACL появилась с версии 2.5, поддерживают ACL для ext2, ext3, jfs
контроля доступа ACL (Access Control хотя патчи были доступны еще с вер- и xfs, поэтому необходимости в ис-
Lists) позволяют установить права до- сий 2.2.12), и сейчас она реализована пользовании патча для этих файловых
ступа к файлам не только для вла- для основных файловых систем ext2, систем нет, хотя на сайте можно полу-
дельца и группы, но и индивидуаль- ext3, XFS, ReiserFS, JFS и NFS. В на- чить ссылки на все текущие исправле-
54
администрирование
ния. Для ядра 2.4 доступен комбинированный патч, включа-
ющий все необходимые компоненты (ea+acl+nfsacl+sec), ли-
бо можно устанавливать каждый патч отдельно. Для вклю-
чения ACL при конфигурировании ядра необходимо
в «File System» активировать пункт «Extended Attributes»
и затем «POSIX Access Control Lists» выбранной файловой
системы (см. рис. 1).
Для тех, кто редактирует конфигурационный файл вруч-
ную, список параметров выглядит так:
После того как ядро перекомпилировано, можно при- # mkdir test _ acl
# setfacl -dm user:sergej:rw,group:sales:rwx test _ acl
ступать к работе.
Работа Linux ACLs базируется на использовании EA Смотрим, что получилось.
для хранения данных о правах пользователей и групп
на файлы. Расширенные атрибуты представляют собой # getfacl test _ acl
произвольные пары имя/значение, которые навсегда при- # file: test_acl
вязаны к определенному inode (файлу, каталогу, устройс- # owner: root
# group: root
тву и пр.), подобно тому как строка запуска связана с про- user::rwx
цессом. EA могут быть использованы для загрузки систем- group::r-x
ных объектов, обеспечивающих, например, дополнитель- other::r-x
default:user::rwx
ные характеристики безопасности, ACL или объектов поль- default:user:sergej:rw-
зователя, а также типа MIME, кодировки и прочего. Подроб- default:group::r-x
default:group: sales: rwx
ности смотрите в man attr(5). default:mask::rwx
Пользователи ALTLinux могут получить необходимые default:other::r-x
утилиты, использовав apt-get.
В результате получим информацию о пользователе-вла-
# apt-get install acl attr дельце и группе-владельце. Строки user, group и other явля-
ются базовыми данными и соответствуют стандартным пра-
Мне неизвестно другое применение EA, кроме ACL вам доступа. Аналогичные строки, начинающиеся с default,
(ну разве метки каталогу присваивать), поэтому перейдем соответствуют значению по умолчанию ACL для каталога
непосредственно к теме статьи. (указываются с помощью опции -d), при создании ново-
Для создания EA используется утилита setfattr, получить го подкаталога или файла внутри этого каталога этот па-
информацию об EA можно, использовав getfattr из комплек- раметр наследуется. Естественно, файлы не могут иметь
та сoreutils (ранее fileutils). Но перед тем как начать рабо- по умолчанию ACL, только каталоги, поэтому такая коман-
тать, необходимо перемонтировать дисковый раздел, доба- да будет завершена с ошибкой.
вив опцию acl и/или user_xattr (по умолчанию раздел мон-
тируется с опциями noacl и nouser_xattr.). # setfacl -dm u:sergej:rw test _ file
setfacl: test_file: Only directories can have default ACLs
# mount /home -o remount,acl
Строка default:mask показывает маску эффективных
Соответственно, для того чтобы использовать ACL прав, которую не могут превысить пользователь или груп-
при загрузке, запись в /etc/fstab будет выглядеть прибли- па. Используя маску, можно задать общие права для всех
зительно так: пользователей и групп, например:
Переходим в смонтированный раздел, создаем ката- Как видите, для пользователя sergej и группы sales уста-
лог и устанавливаем право на чтение/запись пользователю новлены отличные от всех остальных права. При этом, ес-
sergej и группе sales на чтение/запись/выполнение (напом- ли вы попытаетесь установить параметры для несущест-
Пользователь sergej и группа sales унаследовали права. Убе- # getfacl test _ acl _ file
димся, что стандартные права доступа все еще существуют. # file: test_acl_file
# owner: root
# ls -al test _ acl # group: root
user::rw-
итого 1 user: vasja:rw-
drwxr-xr-x 2 root root 80 Окт 22 16:10 . group::r--
drwxr-xr-x 21 root root 592 Окт 22 16:00 .. group:webmaster:rwx
-rw-rw-r-- 1 root root 0 Окт 22 16:10 test_file mask::rwx
other::r--
В некоторых дистрибутивах команда ls для файлов и ка-
талогов, в которых используется ACL, дополнительно выво- Теперь сделаем копию файла в текущем каталоге:
дит знак +, например drwxr-xr-x+. От чего зависит присутс-
твие плюса в выводе, мне, к сожалению, неизвестно. Ко- # apt-get install acl attr
манда chmod также работает с такими файлами и катало-
гами, только теперь изменяются не права доступа пользо- Проверяем разрешения:
вателей, а значение маски доступа.
# getfacl test _ acl _ 2
Сохранение расширеных прав # file: test_acl_2
при копировании и перемещении # owner: root
# group: root
В документации сказано, что при копировании и переме- user::rw-
щении расширенные права доступа должны сохраняться, group::r-x
что сейчас и проверим: other::r--
56
администрирование
Как видите, разрешения изменились и соответствуют стан- правильная» утилита может сделать бесполезной всю бе-
дартным установкам, определенным переменной umask. Те- зопасность с ACL.
перь копируем файл в каталог test_acl, в котором при со-
здании разрешений использовался параметр -d. Некоторые опции утилит
setfacl и getfacl
# cp test _ acl _ file test _ acl При помощи связки getfacl/setfacl можно сохранить и вос-
# getfacl test _ acl/test _ acl _ file
становить списки контроля доступа, это может понадо-
# file: test_acl/test_acl_file биться при архивировании данных или переносе в дру-
# owner: root
# group: root
гую систему.
user::rw-
user:sergej:rw- #effective:rwx # getfacl -R --skip-base . > backup.acl
group::r-x # setfacl --restore=backup.acl
group:sales:rwx #effective:r-x
mask::rw- Если для некоторого файла или каталога требуется ус-
other::r--
тановить разрешения, которые сходны с уже имеющими-
ся, то можно поступить так (опции, написанные с заглавной
Разрешения изменились и соответствуют файлу test_file, буквы, применяются при использовании в качестве ввода
который был создан в этом каталоге. результата работы другой утилиты).
Проект Trustees #
# Security options
Разработчикам проекта Trustees [2] схема, применяемая #
в POSIX ACL, показалась неудобной. Для поддержания в ра- CONFIG _ SECURITY=y
CONFIG _ SECURITY _ TRUSTEES=y
бочем состоянии системы POSIX ACL требуются инструмен-
ты, позволяющие рекурсивно обходить каталоги, необхо- После чего ядро компилируется и устанавливается
димые для установки или изменения разрешений. Кроме обычным образом.
того, при большом количестве объектов такая схема тре- При установке в качестве модуля необходимо наличие
бует особого внимания и контроля. Схема, используемая исходных текстов рабочего ядра (оно должно быть обяза-
в Novell Netware, несколько проще, т.к. для установки раз- тельно собрано с опцией CONFIG_SECURITY). Далее пе-
решений используется один конфигурационный файл, ко- реходим в каталог module распакованного архива trustees
торый будет полностью контролироваться системным ад- и вводим make install. Если при компиляции не будут най-
министратором и не потребует разработки дополнитель- дены исходные тексты, то следует указать их местонахож-
ного инструментария либо сложных скриптов. Именно та- дение вручную.
58
администрирование
# make KDIR=/usr/src/linux-2.6.11 install щий права доступа 777, и ограничимся одним уровнем ре-
курсии.
После успешной компиляции модуля переходим в под-
каталог src и вводим make, получившийся исполняемый [/dev/hda6]/win/test:sergej:REBO
файл settrustees копируем в /usr/sbin, чтобы он был досту-
пен только пользователю root. Теперь все готово к работе. Теперь создаем тестовый каталог и указываем моду-
Загружаем модуль modprobe trustees.ko, либо перегружа- лю на необходимость монтирования виртуальной файло-
ем систему с новым ядром. вой системы.
Для задания разрешения по умолчанию использует-
ся конфигурационный файл /etc/trustees.conf, но его мож- # mkdir /mnt/win/test
# mount -t trusteesfs none /mnt/win/test
но переопределить опцией -f. Все записи по одной в стро-
ку состоят из устройства с каталогом/файлом и парамет- Так монтируются каталоги индивидуально, если требу-
ров доступа к нему. ется смонтировать все каталоги из файла /etc/trustees.conf,
то вызывается утилита settrustees.
[/block/device]/any/path:usr1:flags:+grp1:flags... Можно проверить:
[/network/share]I/any/path:+grp2:flags:*:flags...
[/dev/hda5]/home/sergej # settrustees -D
В качестве указания параметров доступа используют- Более жизненный пример. Позволим веб-серверу счи-
ся следующие флаги: тывать данные из каталога с документами, а веб-мастерам,
R – разрешение на чтение любых файлов; кроме того и изменение файлов:
W – разрешение на запись файлов и каталогов;
B – просмотр (Browse) списка файлов в каталоге (по- [/dev/hda3]/httpd/htdocs:apache:REBX
[/dev/hda3]/httpd/htdocs:+web _ editors:RWEBX
добно установке права на исполнение для каталогов);
E – чтение (rEad) каталогов;
X – выполнение (eXecute) файлов; Выводы
U – установка стандартных прав доступа UNIX (по умол- Итак, применение ACL позволяет использовать более слож-
чанию). ные модели доступа, чем традиционная реализация, приме-
няемая в UNIX-системах. Используя ACL, даже при неболь-
Пустой параметр означает запрет всех полномочий. шом количестве пользователей администратор может су-
Вместе с флагами могут использоваться следующие моди- щественно упростить процесс распределения полномочий
фикаторы, которые могут устанавливаться, например для пользователей. Но на сегодняшний день без боязни можно
временного переопределения прав: использовать лишь консольные утилиты, остальные нуж-
C – очистка (Clear) разрешений; даются в предварительном тестировании перед использо-
D – запрет (Deny) доступа; ванием в промышленной среде.
! – запись для всех, кроме указанных пользователей или
групп; Ссылки:
O – один уровень, т.е. все файлы и каталоги внутри, 1. Сайт проекта Linux Extended Attributes and ACLs – http://acl.
но без подкаталогов; bestbits.at.
* – означает всех пользователей. 2. Сайт проекта Trustees – http://www.aeruder.net/trustees.
3. SUSE Linux Administration Guide – http://www.suse.de/~agruen/
Пустые линии игнорируются, знак решетки (#) означа- acl/chapter/fs_acl-en.pdf.
ет комментарий. 4. POSIX Access Control Lists on Linux – http://www.suse.de/~agruen/
Для примера занесем в файл информацию, запреща- acl/linux-acls.
ющую пользователю sergej запись в каталог, находящийся 5. Сайт проекта Linux NFSv4 – http://www.citi.umich.edu/projects/
на разделе с файловой системой FAT, традиционно имею- nfsv4.
Вступительное слово ников на рабочих местах с помощью ние учетной записи пользователя;
Думаю, любому из вас будет интерес- аудита событий Logon/Logoff. Но пре- задание или изменение пароля.
но узнать, кто, когда и с каких машин жде всего необходимо создать поли- Directory service access (доступ
пытался зайти в сеть вашей компании, тики аудита для нашей сети. к службе каталогов) – контроль со-
особенно это интересно в случаях, ког- бытий доступа пользователя к объ-
да для доступа в сеть использовалась Готовим сеть к аудиту екту каталога Active Directory, для ко-
учетная запись с администраторски- В Windows 2000/2003 по умолчанию ау- торого задана собственная систем-
ми правами. UNIX-системы для реше- дит всех категорий безопасности от- ная таблица управления доступом.
ния подобных задач обладают массой ключен. Администратор создает поли- Logon events (события входа) –
свободно распространяемых программ. тику аудита, определяя, для каких ти- подлежит ли аудиту каждая попыт-
Они позволяют администраторам, под- пов событий безопасности нужно вы- ка пользователя войти в систему
корректировав соответствующим об- полнять аудит. Исходя из требований или выйти из нее на данном ком-
разом исходный код сценария, произ- корпоративной политики безопаснос- пьютере, или подключиться к нему
водить аудит событий доступа к сети ти своей организации, администратор через сеть.
и получать отчет, содержащий все не- может также задать аудит доступа к от- Object access (доступ к объек-
обходимые сведения об удачных и/или дельным объектам. там) – контроль событий доступа
неудачных попутках проникновения Первым шагом в создании полити- пользователя к объекту – напри-
в систему и получения доступа к раз- ки является определение событий, для мер, к файлу, папке, разделу реес-
личным ресурсам сети. С Windows все которых должен выполняться аудит. тра, принтеру и т. п.
несколько сложнее, существующие ре- При этом доступны следующие ка- Policy change (изменение поли-
шения, как правило, являются коммер- тегории событий: тик) – осуществляется ли аудит из-
ческими и требуют от системных ад- Account logon events (аутенти- менений политик назначения прав
министраторов серьезной подготовки. фикация пользователей на кон- пользователей, политик аудита или
Также в силу недоступности исходного троллерах домена) – если аудит политик доверительных отноше-
кода их достаточно трудно, а зачастую успешных попыток входа в систе- ний.
и просто невозможно, изменять и дора- му включен на контроллере доме- Privilege use (использование при-
батывать для аудита своей сети. на, в журнал будет заноситься за- вилегий) – подлежит ли аудиту
В данной статье мы рассмотрим ре- пись о каждом пользователе, про- каждая попытка пользователя вос-
шение задачи аудита – события входа шедшем проверку на этом конт- пользоваться предоставленными
по учетной записи с помощью Windows роллере домена, несмотря на то ему правами.
Script Host. Вначале напишем сцена- что пользователь на самом деле Process tracking (отслеживание
рий на VBScript, который осуществля- входит в систему на рабочей стан- процесса) – аудит таких событий,
ет сбор нужных сообщений из жур- ции домена. как активизация программы, за-
нала событий и сохранение этих со- Account management (управление вершение процесса, повторение
бытий в базе данных MS SQL Server учетными записями) – аудит всех дескрипторов и косвенный доступ
2000, потом создадим сценарий, кото- событий, связанных с управлением к объекту.
рый генерирует отчеты за день для ад- учетными записями на компьютере. System events (системные собы-
министратора, содержащие информа- К таким событиям относятся, в част- тия) – производится ли аудит собы-
цию об удачных и неудачных попытках ности, следующие: создание, изме- тий перезагрузки или отключения
входа в сеть, и напоследок решим одну нение или удаление учетной записи компьютера, а также события, вли-
прикладную бизнес-задачу: реализу- пользователя или группы; переиме- яющие на системную безопасность
ем систему учета присутствия сотруд- нование, отключение или включе- или на журнал безопасности.
60
безопасность
Рисунок 1. Список политик аудита. Обведена «Account Logon Рисунок 2. Журнал событий. Выделены два сообщения: нижнее –
Events» неудачная попытка войти в систему и верхняя – удачный вход
Чтобы выбрать категории событий всего это ограниченность размера жур- резервного копирования и корпора-
для аудита, необходимо сначала оп- нала событий, из-за которой часть со- тивных антивирусов. Так что вполне
ределить, является ли данный сервер общений рано или поздно будут удале- логичным будет использование дан-
контроллером домена. ны. С настройками по умолчанию жур- ной СУБД в качестве хранилища на-
Если это рядовой сервер, то нужно нал событий при достижении заданного ших сообщений аудита. Сразу огово-
выбрать «Administrative tools → Local ограничения на размер затирает старые рюсь, что основы построения баз дан-
security policy → Audit policy». Если аудит сообщения новыми по принципу очере- ных и SQL-запросов не являются те-
производится на контроллере домена, ди (FIFO, First In First Out). При этом раз- мой статьи, эти аспекты будут снабже-
то нужно выбрать «Active Directory Users мер файла журнала Security по умол- ны лишь краткими комментариями. За
And Computers», затем открыть запись чанию равен 131072 Кб. Если за сут- более подробной информацией може-
для данного домена, выбрать меню ки в журнал заносится несколько ты- те обратиться к источникам справоч-
«Action → Properties → Group policy → сяч сообщений, то 128 Мб это не слиш- ной информации [2, 3].
Edit», далее надо открыть «Computer ком много. Можно также настроить, что- Наша база-хранилище сообщений
Configuration → Windows Settings → бы журнал затирал сообщения по про- будет иметь следующие поля:
Security Settings → Local Policies», пос- шествии определенного количествf Событие (Event ID).
ле чего выбрать «Audit Policy». дней или не затирал сообщения вооб- Дата и время.
При любом методе в результате вы- ще [1]. Правда, в последнем случае, ког- Имя пользователя (домен\пользо-
бора Audit policy в правой панели поя- да файл журнала достигнет ограниче- ватель, под которым осуществля-
вятся доступные для аудита категории ния по размеру, наш сервер может во- лась попытка входа).
событий. Для того чтобы модифици- обще прекратить функционировать, по- Workstation (имя машины, с кото-
ровать политику для какой-либо кате- ка не будет произведена ручная очис- рой осуществлялась попытка вхо-
гории аудита, щелкните правой кноп- тка. Согласитесь, особенно неприятно, да, может быть пустым).
кой на этом событии и выберите пункт если это произойдет, скажем, в суббо- IP-адрес (машина в локальной се-
«Security». Далее необходимо устано- ту ночью. Вторым недостатком исполь- ти, с которой осуществлялась по-
вить флажок для аудита успешных по- зования журнала событий для задач пытка входа).
пыток входа в сеть и/или аудита безу- аудита сети является то, что построе-
спешных. В нашем случае необходимо ние отчетов затруднено. Можно, конеч-
выбрать «Audit Account Logon Events» но, делать выборку каждый день вруч-
и отметить «Success» и «Failure». В ре- ную с помощью стандартного фильтра
зультате получаем окно, аналогичное Event Viewer, однако автоматизировать
изображенному на рис. 1. этот процесс с помощью VBScript будет
Таким образом, теперь в журна- крайне сложно и неудобно.
ле событий «Event Log», в разделе Таким образом, возникает необхо-
«Security» при каждой попытке входа димость в использовании базы данных
пользователя в систему будет появ- для хранения сообщений о событиях.
ляться соответствующее сообщение
(см. рис. 2). Настраиваем хранилище
Однако для решения нашей задачи сообщений аудита
использование журнала событий в ка- Microsoft SQL Server 2000, или его
честве хранилища информации о по- бесплатная урезанная реализация
пытках входа в сеть – не самый лучший MSDE, активно используются различ-
Рисунок 3. Сообщение об удачном входе
выход. Причин тому несколько, прежде ными приложениями от 1С до систем в систему
62
безопасность
Cnxn.Open strCnxn Этот сценарий нужно запускать с частотой как минимум
LastRec=""
Line=" SELECT Max(Date_dat) AS Last FROM Logons" один раз в сутки, чтобы журнал событий не переполнился
Set rs=Cnxn.execute(Line) и соответственно записи не начали затирать друг друга.
'wscript.echo rs("Last")
If not(rs.eof) Then LastRec=Left(rs("Last"),19)
// находим дату последней записи Отчетность прежде всего
rs.close
last=0 Сценарий написан, информация о попытках доступа в сеть
intRec=0 исправно заносится в нашу базу, теперь самое время на-
For Each objItem in colLoggedEvents
EventTmp=Mid(objItem.TimeWritten, 7,2)+"."+ ↵ чать получать подробные отчеты о том, кто, когда и откуда
Mid(objItem.TimeWritten, 5, 2)+"."+ ↵ пытался получить доступ в нашу сеть.
Mid(objItem.TimeWritten, 1,4)+" "+ ↵
Mid(objItem.TimeWritten, 9,2)+":"+ ↵ Наш отчет будет сохраняться в формате HTML и от-
Mid(objItem.TimeWritten, 11, 2)+":"+ ↵ крываться с помощью браузера. Сценарий очень похож
Mid(objItem.TimeWritten, 13,2)
// время каждого события на предыдущий, и расписывать его подробно, думаю, не-
If (EventTmp=LastRec) Then Last=1 обязательно.
// сравниваем
If Last=0 Then
// пока даты не равны, ищем соответствующие события Листинг 4. Сценарий для построения отчетов
If objItem.eventCode=675 Then
str=objItem.message strComputer="127.0.0.1"
IpAddr=substring("Client Address:") Set objWMI = GetObject("winmgmts:" _
UserName=substring("User Name:") & "{impersonationLevel=impersonate}!\\" _
UserID=substring("User ID:") & strComputer & "\root\cimv2")
EventDate=Mid(objItem.TimeWritten,5,2)+ ↵ Set colLoggedEvents = objWMI.ExecQuery _
"."+Mid(objItem.TimeWritten, 7, 2)+ ↵ ("Select * from Win32_NTLogEvent Where Logfile = 'Security'")
"."+Mid(objItem.TimeWritten, 1,4) Set objFso = CreateObject("Scripting.FileSystemObject")
EventTime=Mid(objItem.TimeWritten,9,2)+ ↵ ' open connection
":"+Mid(objItem.TimeWritten,11,2)+ ↵ Set Cnxn = wscript.CreateObject("ADODB.Connection")
":"+Mid(objItem.TimeWritten, 13,2) strCnxn = "Provider='sqloledb';Data Source=" & _
Str=objItem.message "127.0.0.1;" & _
Line=” INSERT INTO dbo.Logons ↵ "Server=MyServer;Database=Audit;Trusted_Connection=yes"
( Event_vch, Date_dat, User_vch, ↵ Cnxn.Open strCnxn
WID_vch, Address_vch)VALUES ↵ Set strFile = objFso.CreateTextFile("c:\report.htm", True)
( '675', CONVERT(DATETIME, ↵ strFile.WriteLine("<html><title>Аудит системы ↵
'"+EventDate+"', 110)+ CONVERT(DATETIME, ↵ </title><body>")
'"+EventTime+"', 114), '"+UserName+"','" ↵ strFile.WriteLine("<center><b>Отчет от "& Date &" ↵
+UserID+"','"+IpAddr+"')" </b><table><tbody><tr><td>Имя пользователя ↵
Set rs=Cnxn.execute(Line) </td><td>Время события</td><td>Событие ↵
End if </td><td>UserID</td><td>IP адрес</td></tr>")
If objItem.eventCode=673 Then DateNow=
str=objItem.message Line=" SELECT DISTINCT(User_vch) FROM Logons"
IpAddr=substring("Client Address:") Set rs1=Cnxn.execute(Line)
UserName=substring("User Name:") Do While not(rs1.eof)
UserID=substring("Service Name:") Line=" SELECT * FROM Logons WHERE ↵
EventDate=Mid(objItem.TimeWritten, 5,2)+ ↵ (Date_dat > CONVERT(DATETIME, '" & Date &" ↵
"."+Mid(objItem.TimeWritten, 7, 2)+ ↵ 00:00:00', 102)) AND (Date_dat < CONVERT(DATETIME, ↵
"."+Mid(objItem.TimeWritten, 1,4) '" & Date & " 23:59:59', 102)) AND ↵
EventTime=Mid(objItem.TimeWritten, 9,2)+ ↵ (User_vch = '"+rs1("User_vch")+"')"
":"+Mid(objItem.TimeWritten, 11, 2)+ ↵ Set rs2=Cnxn.execute(Line)
":"+Mid(objItem.TimeWritten, 13,2) strFile.WriteLine("<TR>")
Str=objItem.message strFile.WriteLine("<td> ")
Line=" INSERT INTO dbo.Logons ( Event_vch, ↵ strFile.WriteLine(rs2("User_vch"))
Date_dat, User_vch, WID_vch, Address_vch) ↵ strFile.WriteLine("</td> ")
VALUES ( '673', CONVERT(DATETIME, ↵ strFile.WriteLine("<td> ")
'"+EventDate+"', 110)+CONVERT(DATETIME, ↵ strFile.WriteLine(rs2("Date_dat"))
'"+EventTime+"', 114), '"+UserName+"', ↵ strFile.WriteLine("</td> ")
'"+UserID+"','"+IpAddr+"')" strFile.WriteLine("<td> ")
Set rs=Cnxn.execute(Line) If (rs2(“Event_vch”)="673") Then ↵
strFile.WriteLine("<FONT COLOR=red>Неудачная ↵
End if попытка входа</FONT>")
If objItem.eventCode=538 Then If (rs2("Event_vch”)="675") Then ↵
str=objItem.message strFile.WriteLine("<FONT COLOR=green>Удачный ↵
IpAddr=substring("User Name:") вход</FONT>")
EventDate=Mid(objItem.TimeWritten, 5,2)+ ↵ If (rs2("Event_vch")="538") Then ↵
"."+Mid(objItem.TimeWritten, 7, 2)+ ↵ strFile.WriteLine("<FONT COLOR=navy>Выход ↵
"."+Mid(objItem.TimeWritten, 1,4) из системы</FONT>")
EventTime=Mid(objItem.TimeWritten, 9,2)+ ↵ strFile.WriteLine("</td> ")
":"+Mid(objItem.TimeWritten, 11, 2)+ ↵ strFile.WriteLine("<td> ")
":"+Mid(objItem.TimeWritten, 13,2) strFile.WriteLine(rs2("WID_vch"))
Str=objItem.message strFile.WriteLine("</td> ")
Line=" INSERT INTO dbo.Logons ( Event_vch, ↵ strFile.WriteLine("<td> ")
Date_dat, User_vch, WID_vch, Address_vch) ↵ strFile.WriteLine(rs2("Address_vch"))
VALUES ( '538', CONVERT(DATETIME, ↵ strFile.WriteLine("</td> ")
'"+EventDate+"', 110)+CONVERT(DATETIME, ↵ strFile.WriteLine("</TR>")
'"+EventTime+"', 114), '"+UserName+"' ↵ rs2.close
,'','')" rs1.MoveNext
Set rs=Cnxn.execute(Line) loop
End if strFile.WriteLine("</tbody></table></center></html>")
rs1.close
End If Cnxn.close
intrec=intRec+1
Set WshShell = CreateObject("WScript.Shell")
Next
cnxn.close Return = WshShell.Run("iexplore.exe c:\report.htm", 1)
64
безопасность
Сергей Яремчук
Сегодня каждый компьютер, подключенный к Интернету, подвергается большому количеству
самых разнообразных опасностей. Несмотря на то что инструменты, предназначенные
для защиты систем и сетей, постоянно совершенствуются, противостоять всем угрозам –
непростая задача.
О
сновные усилия администра- являются постоянно, то исследования грамма производит проверку ассоци-
торов направлены на меропри- быстро потеряют свою актуальность. ированных уязвимостей. Для опреде-
ятия, которые можно охаракте- Поэтому такой вариант больше подхо- ления сервисов используется техноло-
ризовать как пассивные методы защи- дит для проведения всестороннего ау- гия intelligent protocol identification, ко-
ты, т.е. использование межсетевых эк- дита всей системы безопасности ком- торая распознает возможный сервис
ранов, виртуальных частных сетей, ан- пании. А для проверки защищенности не только по номеру открытого пор-
тивирусов, систем обнаружения атак, сетей и сервисов лучше использовать та, но и дополнительно анализируют-
обновление систем, установка пат- сканеры безопасности, что позволит ся входные данные, чтобы подтвердить
чей и прочее. Возможно, при постоян- проводить такие проверки постоян- свои выводы. Для работы DSS потре-
ном внимании этого бывает достаточ- но. Одним из таких сканеров являет- буется компьютер класса Pentium 266
но. Но опыт показывает, что отследить ся DragonSoft Secure Scanner тайвань- с 64 Мб ОЗУ (лучше 128 Мб) и 500 Мб
все моменты практически невозмож- ской DragonSoft Security Associates, ос- свободного места на жестком диске,
но. Особенно это актуально для боль- нованной в 2002 году. с установленной Windows NT 4.0 SP3,
ших сетей, в которых используется Разработчик позиционирует DSS Windows 2000/XP.
разнообразное программное обеспе- как комплексное решение для обна- На сайте проекта [1] можно полу-
чение. Программы быстро устарева- ружения уязвимых мест в сети уров- чить 30-дневную ознакомительную
ют, а заплатки можно установить цен- ня предприятия. Утилита позволя- версию DSS. Для ее получения необ-
трализованно не для всех. Со време- ет проверить компьютеры, в качест- ходимо первоначально зарегистриро-
нем в используемых сервисах навер- ве операционной системы использу- ваться, после чего на указанный поч-
няка будут обнаружены уязвимости ющие Windows 9x/NT/2000/XP/2003, товый адрес придет ссылка для закач-
или сервисы попросту могут быть не- Sun Solaris, BSD, Linux и некоторые он- ки. Примечательно, что кроме срока
правильно настроены, что приведет лайновые сервисы (HTTP, FTP, POP3, действия больше никаких ограниче-
к образованию слабых участков. По- SMTP). На момент написания статьи ба- ний нет, что позволяет наиболее пол-
этому наряду с пассивными метода- за DSS содержала информацию о 2145 но оценить продукт. К тому же этого
ми защиты необходимо периодичес- уязвимостях. Если сравнить с анало- времени достаточно, чтобы, например,
ки использовать и активные, а поп- гичными продуктами вроде XSpider перейдя на новую работу, провести ау-
росту говоря, работать с теми же инс- (http://www.ptsecurity.ru) или Shadow дит сети и устранить проблемы. При
трументами, что и взломщик, и, полу- Security Scanner (http://www.safety-lab.com), каждом запуске появляется меню (см.
чив результат, оценить уровень защи- то в заявленных цифрах DSS явно про- рис. 1), позволяющее выбрать вари-
щенности. Такой аудит можно провес- игрывает. С другой стороны, охватить ант предполагаемой работы. Как ви-
ти двумя способами. Первый, нанять все системы и уязвимости доволь- дите, имеется три варианта тестирова-
специалистов одной из компаний, за- но тяжело, и в настоящий момент на- ния (Vulnerability Scan, Password Check,
нимающихся информационной безо- блюдается «специализация» скане- DoS Test). Четвертый пункт позволя-
пасностью. Полученный в этом слу- ров безопасности, что позволяет на- ет открыть файл с расширением *.dss,
чае отчет будет наиболее полным, хо- иболее полно охватить определен- в котором сохранены настройки и ре-
тя бы потому, что на результат не бу- ный сегмент. Для уменьшения време- зультаты ранее проведенного тести-
дет влиять заинтересованность работ- ни сканирования и количества лож- рования, что дает возможность на-
ников компании, к тому же взгляд пос- ных срабатываний используется тех- пример продолжить незаконченную
тороннего всегда более свеж. Но с дру- нология FPP (False Positives Prevention). работу. По умолчанию DSS включа-
гой стороны, стоит это отнюдь не де- При этом сначала производится поиск ет 9 политик сканирования (Complete,
шево, а учитывая, что уязвимости по- имеющихся сервисов, а затем про- Database, NetBIOS, PortScan, SANS 20,
66
безопасность
Normal, BackDoor, UNIX и Windows). Та- бое удобное время.
кое разделение позволяет более гиб- Так как DSS являет-
ко выбрать действительно необходи- ся утилитой аудита,
мый в конкретном случае вариант тес- одним из требова-
та, ведь в больших сетях при исполь- ний к которой ско-
зовании всех политик получение ре- рость сканирова-
зультата может затянуться. При необ- ния, а не скрытость,
ходимости пользователь может отре- то паузу между по-
дактировать текущую политику скани- пытками перебора
рования либо создать на основе имею- пароля устанавли-
щихся свою. Так, при помощи редакто- вать нельзя. Прак-
ра политик можно изменить: диапазон тически также лег-
сканируемых портов, реакцию на от- ко ис пользовать
сутствие пинга, параметры NetBIOS, и DoS Test, кото-
вид аудита, сканирование по протоко- рый имитирует од-
лу UDP, файлы с логинами и паролями, ноименную атаку. Рисунок 2. Отчеты DSS позволяют оценить общую обстановку
которые будут использованы при до- Кроме указанных тестов дополни- та html, к сожалению, импорт в pdf, бо-
ступе к ftp, http, NetBIOS, и некоторые тельно в руки администратора попа- лее удобный для печати, не поддержи-
другие настройки. Интересно, что для дают полезные утилиты с графичес- вается. В этом случае DSS предлагает
NetBIOS возможно автоматическое за- ким интерфейсом вроде DNS Lookup, три типа отчетов: Complete, Executive
несение данных, исправляющих непра- IP Reverse, Traceroute. Для удобства и Technician. При этом каждый может
вильную настройку, в реестры клиент- можно использовать встроенный пла- иметь три стиля: Default, Modern и Lite.
ских машин. Для этого необходимо ак- нировщик и проводить проверку ав- Отчет Complete содержит всю инфор-
тивировать опцию «Automatic registry томатически, например ночью, когда мацию. Отчет Executive предназначен
bug fix», результат ее работы будет сеть не загружена. В этом случае ре- для неспециалистов и содержит ин-
отображен в отчете. зультат сканирования дополнительно формацию о просканированных уз-
В утилите удобно реализован им- можно отправить и по почте, для че- лах, «TOP 6» самых уязвимых узлов,
порт IP-адресов. Эту операцию мож- го в подпункте Config Alert заполняют- обобщенные результаты о защищен-
но проделать тремя способами: не- ся параметры SMTP сервера и заго- ности сети. Графики, представленные
посредственным введением, задани- ловок письма. этим отчетом, будут хорошим аргумен-
ем диапазона или использованием Кроме того, DSS позволяет запус- том при разговоре с начальством. От-
текстового файла, в котором поме- кать тест с командной строки. Для это- чет Technician предназначен для спе-
щен список. Естественно, в програм- го первоначально создается шаблон циалистов безопасности и системных
ме такого рода необходимо периоди- проверки, а затем набирается коман- администраторов и содержит опи-
чески обновлять базы, содержащие да dss_winnt.exe *.dss scan. сание уязвимостей и рекомендации
описание новых уязвимостей. Зайдя Сильной стороной DSS всегда были к их устранению. При желании, зай-
в «Tools → Options → Update», можно отчеты. После сканирования админист- дя в «Report → Configure», можно из-
установить автоматическое обновле- ратор получит полную информацию обо менить параметры отчетов, добавить
ние баз. Здесь же в пункте Protection всех найденных узлах и работающих свой логотип и заголовок. Кроме отче-
можно защитить настройки програм- на них серверах, программах и их вер- тов, всю информацию можно занести
мы паролем. сиях (если возможно), включая МАС-ад- в базу данных. По умолчанию в качес-
Следующий тест Password Check рес, NetBIOS-имя, имена пользователей тве источника установлен DSS2_DB
позволяет проверить устойчивость па- и прочее. Если будут найдены уязви- использующий Microsoft Access Driver
ролей в таких сервисах: ftp, http, pop3, мости, то будут указаны степень опас- и сохраняющий информацию в файл
imap, telnet, MSSQL и MySQL. Для это- ности (Info, Low, Medium, High) и крат- scandb.mdb. Как вариант для хранения
го указывается IP-адрес, опциональ- кое описание со ссылками на ресурсы информации можно использовать фай-
но порт и файлы с логинами и паро- BugTraq, DragonSoft, ISS X-Force и CVE- лы Microsoft Excel или dBASE (*.dbf).
лями и количес- ID (Common Vulnerability and Exposure), Сканер безопасности DragonSoft
тво потоков ска- где можно найти более подробное объ- Secure Scanner является удобным инс-
нирования. Гото- яснение. При оценке риска программа трументом, позволяющим оценить за-
вые файлы с па- следует стандарту BS7799. щищенность сети и избежать проблем.
ролями и логи- На отдельных страницах будет до- Выдаваемые отчеты помогут не толь-
нами можно най- ступна сборная информация, выво- ко убедить начальство в реальности
ти в подкатало- дящая общее количество уязвимос- проблем, но и оказать помощь в их ус-
ге Dic. Сос тоя- тей по адресам (см. рис. 2), по уров- транении.
ние текущей про- ню опасности, категориям, а также спи-
верки можно со- сок обнаруженных операционных сис- Ссылка:
Рисунок 1. Вначале
необходимо выбрать х ран и т ь и п р о - тем и открытых портов. Всю информа- 1. Сайт DragonSoft Security Associates –
тип будущей работы д о л ж и т ь в л ю - цию можно сохранить в файл форма- http://www.dragonsoft.com.
Расширения РHP:
пять шагов к написанию
Это намного проще,
чем кажется с первого раза
Александр Календарев
Расширение в PHP – это набор дополнительных функций, не входящих в ядро PHP-engine.
Расширения, как и само ядро PHP-engine, написаны на С, что значительно повышает
быстродействие системы, а также позволяет осуществлять доступ к внешним библиотекам
и создавать более эффективные веб-приложения. Так как же быстро и надежно разработать
расширение?
В
полне закономерный вопрос – зачем нужны допол- рения является модуль php_mysql, который реализует ин-
нительные расширения? Казалось бы, все что нужно терфейс с БД MySql. Интерфейсом взаимодействия меж-
скриптовому языку, в PHP уже охвачено. В последний ду внешними функциями и ядром PHP (PHP-engine) явля-
дистрибутив четвертой версии входит 74 РНР-расширения. ется PHP API, а начиная с версии 4.1.0 в качестве API ис-
На официальном сайте www.php.net есть раздел, специаль- пользуется Zend API.
но посвященный этой теме: www.pecl.php.net. На данноме
ресурсе находится библиотека исходных текстов еще 132-х Шаг первый
дополнительных расширений. Не стоит забывать, что PHP Создаем шаблон расширения (скелетон)
относится к языкам интерпритируемого типа, т.е. каждая ко- Для написания и компиляции расширений вам понадобится
манда языка интерпритируется во время исполнения, что дистрибутив PHP. Первоначально входим в директорию ext,
заметно проигрывает в скорости языкам компилируемого в которой находятся папки с исходными кодами всех расши-
типа. Практика показывает, что для ускорения части фун- рений. Внутри папки ext находится папка skeleton, которая
кционала (написание функций с использованием битовых представляет собой заготовку или шаблон для написания
операций, т.к. они медленно отрабатываются на PHP и очень расширений. В принципе, данная папка нам может и не по-
замедляют работу скрипта) приходится писать расшире- надобиться. Процесс написания шаблонов уже автомати-
ния, а также если необходимо обратиться к уже сущест- зирован, нам остается только запустить скрипт генерации
вующим C-библиотекам (например, криптографические шаблона расширения или, как его называют разработчи-
или ГИС-библиотеки). Наверное, у каждого из вас найдет- ки, «скелетона». Запуск скрипта без параметров приведет
ся своя причина, чтобы написать новое расширение. к выдаче на консоль перечня всех параметров:
Данная статья поможет вам понять основы построе-
ния расширений и освоить технику написания расширений # ./ext _ skel
под *nix-системы. Написание расширений под Windows от- ./ext_skel --extname=module [--proto=file] [--stubs=file] [--xml[=file]]
68
web-программирование
Для создания модуля первоночально необходимо за- раскомментировать строки 10 и 12 с описанием макроса
пустить скрипт с параметром: PHP_ARG_WITH.
Для динамического модуля необходимо раскомменти-
# ./ext _ skel --extname=module ровать строчки с описанием макроса PHP_ARG_ENABLE
(это будут строки 16 и 18). Данный макрос устанавлива-
После отработки скрипта будет создана директория test ет соответствия переменным для макроса PHP_NEW_
с файлами шаблона («скелетон») модуля. EXTENSION как компиляция динамического модуля (shared
objects).
# ./ext _ skel --extname=test Первый аргумент макроса PHP_NEW_EXTENSION зада-
Creating directory test ет имя расширения. Второй аргумент – файл источника (ис-
Creating basic files: config.m4 .cvsignore test.c php_test.h CREDITS EXPERIMENTAL
tests/001.phpt test.php [done]. ходный файл описания с-функций), и третий – это имя внут-
To use your new extension, you will have to execute the following steps:
ренней переменной, которая используется в макросах.
Ниже будет приведен пример config.m4 для конфигу-
1. $ cd ..
2. $ vi ext/test/config.m4 рирования расширения под компиляцию динамическо-
3.
4.
$
$
./buildconf
./configure --[with|enable]-test
го модуля. Раскомментированные строки отмечены крас-
5. $ make ным шрифтом.
6. $ ./php -f ext/test/test.php
7. $ vi ext/test/test.c
8. $ make 1 dnl $Id$
2 dnl config.m4 for extension test
Repeat steps 3-6 until you are satisfied with ext/test/config.m4 and step 6 3
confirms that your module is compiled into PHP. Then, start writing code 4 dnl Comments in this file start with the string 'dnl'.
and repeat the last two steps as often as necessary.
5 dnl Remove where necessary. This file will not work
6 dnl without editing.
Мы с вами только что создали шаблон нашего первого 7
8 dnl If your extension references something external, ↵
расширения. В поддиректории test находятся следующие use with:
сгенерированные файлы: 9
10 dnl PHP _ ARG _ WITH(test, for test support,
-rw-r--r-- 1 4 Nov 2 00:01 CREDITS – текстовый, инфор- 11 dnl Make sure that the comment is aligned:
мационный. 12 dnl [ --with-test Include test support])
13
-rw-r--r-- 1 0 Nov 2 00:01 EXPERIMENTAL – текстовый, ин- 14 dnl Otherwise use enable:
формационный. 15
16 PHP _ ARG _ ENABLE(test, whether to enable test support,
-rw-r--r-- 1 1964 Nov 2 00:01 config.m4 – шаблон конфи- 17 dnl Make sure that the comment is aligned:
гурационного файла. 18 [ --enable-test Enable test support] )
19
-rw-r--r-- 1 2707 Nov 2 00:01 php_test.h – шаблон файла 20 if test "$PHP _ TEST" != "no"; then
заголовков (Н-файл). 21 dnl Write more examples of tests here...
22
-rw-r--r-- 1 5379 Nov 2 00:01 test.c – шаблон исходного 23 dnl # --with-test -> check with-path
файла на С. 24 dnl SEARCH _ PATH="/usr/local /usr" # you might ↵
want to change this
-rw-r--r-- 1 469 Nov 2 00:01 test.php – шаблон тестового 25 dnl SEARCH _ FOR="/include/test.h" # you most likely ↵
файла. want to change this
26 dnl if test -r $PHP _ TEST/; then # path given ↵
drwxr-xr-x 2 0 Nov 2 00:01 tests – директория для регрес- as parameter
сионных тестов. 27 dnl TEST _ DIR=$PHP _ TEST
28 dnl else # search default path list
29 dnl AC _ MSG _ CHECKING([for test files in default ↵
Шаг второй 30
path])
dnl for i in $SEARCH _ PATH ; do
Настраиваем конфигурацию config.m4 31 dnl if test -r $i/$SEARCH _ FOR; then
Следующий шаг в настройке нашего шаблона – это задание 32 dnl TEST _ DIR=$i
33 dnl AC _ MSG _ RESULT(found in $i)
конфигурационного файла. Модуль будущего расширения 34 dnl fi
может быть скомпилирован либо как внешний so-модуль 35 dnl done
36 dnl fi
(shared object), либо статически, как часть php. Для отлад- 37 dnl
ки расширения удобнее его собирать как внешний модуль. 38 dnl if test -z "$TEST _ DIR"; then
39 dnl AC _ MSG _ RESULT([not found])
Достоинство такого подхода в том, что при этом не нужно 40 dnl AC _ MSG _ ERROR([Please reinstall the test ↵
пересобирать PHP полностью, а достаточно лишь отдельно distribution])
41 dnl fi
перекомпилировать только одно исходное расширение. 42
Если модуль собирается статически, то при кон- 43 dnl # --with-test -> add include path
44 dnl PHP _ ADD _ INCLUDE($TEST _ DIR/include)
фигурировании ядра php необходимо задать ключи: 45
./configure --with-test или ./configure --enable-test. 46 dnl # --with-test -> check for lib and symbol ↵
presence
Как вы видите (пример config.m расположен ниже), 47 dnl LIBNAME=test # you may want to change this
большинство директив в файле config.m закомментиро- 48 dnl LIBSYMBOL=test # you most likely want to change ↵
this
вано символами dnl. Вам необходимо раскомментировать 49
те строки, которые указывают, в каком качестве (динами- 50 dnl PHP _ CHECK _ LIBRARY($LIBNAME,$LIBSYMBOL,
51 dnl [
ческого или статического модуля) в дальнейшем будет ис- 52 dnl PHP _ ADD _ LIBRARY _ WITH _ PATH($LIBNAME, ↵
пользовано расширение. В случае если вы будете конфи- $TEST _ DIR/lib, TEST _ SHARED _ LIBADD)
53 dnl AC _ DEFINE(HAVE _ TESTLIB,1,[ ])
гурировать наш модуль как статический, то необходимо 54 dnl ],[
70
web-программирование
30 PHP _ MINIT(test), 107 php _ info _ print _ table _ header(2, ↵
31 PHP _ MSHUTDOWN(test), "test support#, "enabled#);
32 PHP _ RINIT(test), /* Replace with NULL ↵ 108 php _ info _ print _ table _ end();
if there’s nothing to do at request start */ 109
33 PHP _ RSHUTDOWN(test), /* Replace with NULL ↵ 110 /* Remove comments if you have entries in php.ini
if there’s nothing to do at request end */ 111 DISPLAY _ INI _ ENTRIES(); */
34 PHP _ MINFO(test), 112 }
35 #if ZEND _ MODULE _ API _ NO >= 20010901 113 /* }}} */
36 "0.1", /* Replace with version number for your ↵ 114
extension */ 115
37 #endif 116 /* Remove the following function when you have succesfully
38 STANDARD _ MODULE _ PROPERTIES 117 modified config.m4 so that your module can be compiled
39 }; 118 into PHP, it exists only for testing purposes. */
40 /* }}} */ 119
41 120 /* Every user-visible function in PHP should ↵
42 #ifdef COMPILE _ DL _ TEST document itself in the source */
43 ZEND _ GET _ MODULE(test) 121 /* {{{ proto string confirm _ test _ compiled(string arg)
44 #endif 122 Return a string to confirm that the module is ↵
45 /* {{{ PHP _ INI compiled in */
46 */ 123 PHP _ FUNCTION(confirm _ test _ compiled)
47 /* Remove comments and fill if you need to have ↵ 124 {
entries in php.ini 125 char *arg = NULL;
48 PHP _ INI _ BEGIN() 126 int arg _ len, len;
49 STD _ PHP _ INI _ ENTRY("test.global _ value", "42", ↵ 127 char string[256];
PHP _ INI _ ALL, OnUpdateInt, global _ value, ↵ 128
zend _ test _ globals, test _ globals) 129 if (zend _ parse _ parameters(ZEND _ NUM _ ARGS() ↵
50 STD _ PHP _ INI _ ENTRY("test.global _ string", ↵ TSRMLS _ CC, "s", &arg, &arg _ len) == FAILURE) {
"foobar", PHP _ INI _ ALL, OnUpdateString, ↵ 130 return;
global _ string, zend _ test _ globals, test _ globals) 131 }
51 PHP _ INI _ END() 132
52 */ 133 len = sprintf(string, "Congratulations! You have ↵
53 /* }}} */ successfully modified ext/%.78s/config.m4. Module ↵
54 %.78s is now compiled into PHP.", "test", arg);
55 /* {{{ php _ test _ init _ globals */ 134 RETURN _ STRINGL(string, len, 1);
56 /* Uncomment this function if you have INI entries 135 }
57 static void php _ test _ init _ globals ↵ 136 /* }}} */
(zend _ test _ globals *test _ globals)
58 {
59 test _ globals->global _ value = 0; Рассмотрим более подробно содержание файла test.с.
60 test _ globals->global _ string = NULL; Все PHP-модули имеют общую структуру:
61 }
62 */ блок включения заголовков (макросы, определения API,
63 /* }}} */ внешние библиотеки);
64
65 /* {{{ PHP _ MINIT _ FUNCTION */ С-объявление функции экспорта;
66 PHP _ MINIT _ FUNCTION(test) блок объявлений функций (PHP) Zend;
67 {
68 /* If you have INI entries, uncomment these lines блок объявлений модуля (PHP) Zend;
69 ZEND _ INIT _ MODULE _ GLOBALS ↵ реализация get_module();
(test, php _ test _ init _ globals, NULL);
70 REGISTER _ INI _ ENTRIES(); реализация всех экспортных функций.
71 */
72 return SUCCESS;
73 } Объявление функции экспорта (строки) находится в за-
74 /* }}} */ головочном h-файле (php_test.h):
75
76 /* {{{ PHP _ MSHUTDOWN _ FUNCTION
77 */ /* For testing, remove later. */
78 PHP _ MSHUTDOWN _ FUNCTION(test) PHP _ FUNCTION(confirm _ test _ compiled);
79 {
80 /* uncomment this line if you have INI entries В нашем случае это только одна функция, которая бы-
81 UNREGISTER _ INI _ ENTRIES();
82 */ ла сгенерирована скриптом «скелетона»: confirm_test_
83 return SUCCESS; compiled().
84 }
85 /* }}} */ Если вам необходимо добавить новую функцию, то для
86 этого добавляйте макрос ее описания в заголовочный файл
87 /* Remove if there’s nothing to do at request start */
88 /* {{{ PHP _ RINIT _ FUNCTION */ php_test.h. Например, если вы хотите добавить новую функ-
89 PHP _ RINIT _ FUNCTION(test) цию add_string(), то должны дополнить заголовочный файл
90 {
91 return SUCCESS; (php_test.h) макросом описания экспортируемой функции
92 } (красным цветом помечен добавленный текст) :
93 /* }}} */
94
95 /* Remove if there’s nothing to do at request end */ PHP _ FUNCTION(confirm _ test _ compiled);
96 /* {{{ PHP _ RSHUTDOWN _ FUNCTION */ /* добавляем объявление экспортируемой функции */
97 PHP _ RSHUTDOWN _ FUNCTION(test) PHP _ FUNCTION(add _ string);
98 {
99 return SUCCESS;
100 } Блок объявлений функций Zend в коде (файл test.с)
101 /* }}} */ строки 16-19. Для каждой видимой для PHP-функции не-
102
103 /* {{{ PHP _ MINFO _ FUNCTION */ обходимо описывать ее в function_entry. Для того чтобы
104 PHP _ MINFO _ FUNCTION(test) добавить новую функцию, необходимо расширить опи-
105 {
106 php _ info _ print _ table _ start(); сание структуры (красным цветом помечен добавленный
текст):
72
web-программирование
Рассмотрим наш пример (файл test.с), строка 129. char *arg = NULL;
int arg _ len, len;
В данном макросе для определения первого аргумен- int i = 0 ;
та – количество переданных параметров – используется char string[256];
ZEND_NUM_ARGS(). if (zend _ parse _ parameters(ZEND _ NUM _ ARGS() ↵
Вторым параметром стоит спецификация «s», кото- TSRMLS _ CC, "s|l", &arg, &arg _ len, ) == FAILURE)
{ return; }
рая указывает на тип передаваемого аргумента – стро-
ка. Третьим и четвертым параметрами являются значе- len = sprintf(string, "Congratulations! You pass ↵
parameters string: %s <br>\n integer: %l ", arg, i );
ния переменных, в которые передается содержание стро- RETURN _ STRINGL(string, len, 1);
ки и ее длины. }
Спецификация определяется символами типа и спец- /* }}} */
символами. Символы типа определяют тип переменной,
притом первый символ типа определяет тип первого аргу- Запуск тестового скрипта выдаст следующие резуль-
мента, второй – второго и так далее… таты:
В PHP API определены следующие символы типа:
l – long; # php test.php
d – double; Congratulations! You pass parameters string: test <br>
s – string (с заключающим нетерминальным ‘\0’) и его Integer: 12
длина;
b – boolean; В случае если на этапе обработки параметров вычис-
r – ресурс; ляются какие-либо ошибки или несоответствия, то можно
a – массив; использовать макрос:
o – объект;
O – объект, определенный как точка входа zval*; php _ error(
E _ WARNING, /* тип сообщения, в данном случае WARNING,
z – Zend – объект(zval*). для ошибки тип E _ ERROR */
message , /* сообщение */
/* имя вызываемой функци */
Ресурс, массив и объект должны иметь тип zval*. [ get _ active _ function _ name( TSRMLS _ C )]
Специальные символы дополняют спецификацию ти- );
пов:
| – определяет границу между обязательными и необя- И последнее, без чего не было бы логического завер-
зательными (опциональными) параметрами. Необяза- шения, так это возвращаемые значения функций. Каждая
тельные параметры в этом случае инициализируются определенная в РНР функция может что-либо возвращать:
значениями по умолчанию. в нашем примере файл test.с возвращает в строке 134 стро-
/ – при анализе параметра вызывает функцию ковое значение (строку string_value длиной lenght_string)
SEPARATE_ZVAL_IF_NOT_REF(), которая предостав- используя Макрос RETURN_STRINGL(string_value, lenght_
ляет копию параметра, если он не является ссылкой. string, duplicate_flag).
! – следующий параметр может специфицировать тип У всех макросов тип возвращаемого значения понятен
или значение NULL (применимо только к типам a, o, O, из их названия. Например, макрос RETURN_LONG(long_
r и z). Если будет значение NULL, то будет установлен value) возвращает значение, определенное типом long.
указатель на переменную параметра в NULL. Существуют следующие макросы:
RETURN_BOOL (bool)
Примеры спецификаций: RETURN_NULL
«ssl|a» – передается три обязательных парамет- RETURN_FALSE
ра («string», «string», «long») и один опциональный, RETURN_TRUE
тип «array». RETURN_DOUBLE(double)
«a/» – передается раздельный массив. RETURN_STRING(string_value, duplicate_flag)
RETURN_EMPTY_STRING()
В качестве примера изменим строку в файле test.php: RETURN_RESOURCE (resource)
Иван Коробко
Существует множество редакторов, позволяющих создавать скрипты. Как правило,
они поддерживают один-два языка программирования. Редактор PrimalScript 4.0, имеет
встроенную поддержку более чем 30 языков программирования, начиная от HTML, XML
и VBScript, и заканчивая узкоспециализированными, такими как KIXTart.
О
том, как пользоваться этим редактором, вы мо- как осуществляется подключение и чтение данных из AD,
жете узнать из встроенной справки в редактор см. статью «Программное управление ADSI: LDAP», №3,
или из официальной документации, опубликованной 2004 г.):
на сайте разработчика (http://www.sapien.com). Мы погово-
рим о недокументированных возможностях, вы сможете са- domain = "LDAP://" + ↵
GetObject("LDAP://RootDSE").Get("defaultNamingContext")
мостоятельно интегрировать в редактор свои собственные Set objConnection = CreateObject("ADODB.Connection")
шаблоны, создавать описание новых языков программиро- Set objCommand = CreateObject("ADODB.Command")
objConnection.CommandTimeout = 120
вания, при необходимости вносить изменения в объектную objConnection.Provider = "ADsDSOObject"
модель, отображаемую в виде подсказки. objConnection.Properties("ADSI Flag")=1+2
objConnection.Properties("User ID")="msk\adminstrator"
objConnection.Properties("Password")="password"
Интегрируем собственные шаблоны objConnection.Properties("Encrypt Password")=TRUE
objConnection.Open "Active Directory Provider"
Каждый программист имеет собственные наработки, кото- Set objCommand.ActiveConnection = objConnection
рые позволяют ему быстро и качественно создавать раз- objCommand.properties("Page size")=10000
objCommand.properties("Timeout")=300
личные скрипты. Получив возможность интегрировать их objCommand.properties("Cache Results")=false
в редактор, он сможет еще быстрее их создавать, не тра- Set st=objconnection.execute("SELECT Samaccountname, ↵
description FROM ' " & Domain & " ' ↵
тя время на поиск нужного файла, содержащего шаблон. WHERE objectClass='person')
Словом, это позволит сделать работу в редакторе еще при-
st.Movefirst
ятнее и эффективнее. Temp=""
Создадим шаблон, в котором осуществляется соеди- Do Until st.EOF
SamAccountName=""
нение с Active Directory с помощью ADODB-соединения. SamAccountName= St.Fields("Samaccountname").Value
За основу шаблона примем сценарий, с помощью которо-
Description=""
го осуществляется чтение всех пользователей в AD (о том, A _ Description= St.Fields("Description").Value
74
программирование
For Each AA in A _ Description
Description= Description+AA
Next
Wscript.Echo Temp
Заключение
Теперь, когда вы знаете, как создать собственные шабло-
ны, добавлять описания новых функций и объектные моде-
ли различных объектов для разных языков, хочется наде-
яться, что программирование станет для вас еще большим
удовольствием, поскольку сделан огромный шаг по предуп-
реждению синтаксических ошибок и удобству использова-
Рисунок 6. Демонстрация работы тестовой объектной модели ния созданных вами же шаблонов.
76
итоги IT-турнира
Ольга Земскова,
Олег Ширнин, Егор Цюрюпа
Слово команды «H0lid@ys» вер для хранения и обмена документами между сотруд-
Наша команда принимала участие в студенческом турнире никами офиса, а также для обмена документами между
«Кубок сетевых проектов Microsoft», и по совокупности оце- офисами. Этот сервер предназначен только для хране-
нок наш проект занял первое место. В этой статье мы пред- ния деловых документов, запись на него музыкальных
ставляем вам свое решение, а также комментарии специ- и видеофайлов запрещена. Обмен документами между
алистов, обратите внимание, что проект содержит некото- офисами должен осуществляться только через локаль-
рые недочёты. На них по ходу статьи оставят свои коммен- ный или удаленный файловый сервер. Прямой обмен
тарии специалисты комиссии, принимавшей у нас этот про- документами между клиентскими станциями разных
ект. Полную документацию ищите на сайте организатора, офисов должен быть заблокирован. Доступ сотрудни-
где проходил этот турнир (http://www.it-university.ru/center/it- ков офиса к файловому серверу, расположенному в дру-
project/windescr.asp). гом офисе, должен быть «прозрачным», т.е. не должны
Состав команды: запрашиваться имя и пароль.
Руководитель проекта – Земскова Ольга (студентка 5 кур- 2. Защитить информацию при обмене между офиса-
са МИЭМ, Microsoft Certified Systems Administrator). ми. Для защиты передаваемой между офисами ин-
Исполнитель решения – Цюрюпа Егор (студент 4 курса формации должно быть организовано шифрование
МИЭТ). на этапе передачи данных через Интернет. При этом
Составитель проектной документации и демонстра- длина ключа шифрования должна составлять не ме-
тор решения – Ширнин Олег (студент 5 курса МИЭМ, нее 128 бит.
Microsoft Certified Systems Administrator). 3. Обеспечить безопасную и эффективную работу
с Интернетом. Организации требуется решение, поз-
Техническое задание: описание сетевой воляющее:
инфраструктуры компании Ограничивать доступ в Интернет для отдельных
Сетевая инфраструктура компании до начала проектиро- групп пользователей.
вания и схема сети уже были приведены в прошлом номе- Вести журнал доступа в Интернет и проводить ана-
ре журнала (№10), и, чтобы не повторяться, здесь укажем лиз использования Интернета (наиболее попу-
только самые необходимые данные. лярные сайты, объем загруженный из Интернета
До недавнего времени у компании был один офис с одно- тем или иным пользователем и т. д.).
ранговой сетью, не подключенной к Интернету. Недавно был Безопасно публиковать внутренние серверы (веб-
арендован новый офис, при этом планируется, что оба офи- серверы и сервер электронной почты) для обеспе-
са будут подключены к Интернету с помощью высокоско- чения доступа к ним из Интернета.
ростного ADSL-соединения. Компания уже закупила 5 сер- 4. Обеспечить удобство администрирования сети.
веров с OC Microsoft Windows Server 2003 Standard Edition. Предложенное решение должно максимально сокра-
Три из них установлены в основном офисе и два – в дополни- щать издержки на администрирование и поддержку
тельном офисе. Все клиентские компьютеры – Windows XP IT-инфраструктуры. Типичные задачи администриро-
Professional. Приобретено также беспроводное и ADSL-обо- вания (создание новых пользователей, разграничение
рудование компании ZyXEL (P-662HW и P-2602HW), заклю- доступа, развертывание приложений и т. д.) должны вы-
чен договор с провайдером и выполнено подключение офи- полняться максимально просто.
сов к Интернету на скорости 7,5 Мбит/с с выделением по од- 5. Внедрить систему электронной почты. Компании
ному статическому IP-адресу на каждый офис. требуется внедрение системы электронной почты, поз-
воляющей обмениваться электронной почтой как внут-
Техническое задание: требования ри организации, так и за ее пределами. Поскольку в ор-
к проекту ганизации уже давно используется Microsoft Office,
1. Организовать обмен документами между офиса- большинство клиентов будут работать с электронной
ми. В каждом из офисов должен быть файловый сер- почтой с помощью Microsoft Outlook, но должна быть
78
итоги IT-турнира
также предусмотрена возможность применения и дру-
гих клиентов электронной почты. Для упрощения пере-
писки крайне желательно, чтобы для любого пользова-
теля был доступен общий адресный список, содержа-
щий электронные адреса всех пользователей органи-
зации.
6. Реализовать беспроводное подключение в офи-
сах. В обоих офисах решено организовать беспровод-
ной доступ к сети организации для приезжающих тор-
говых представителей и партнеров. Всех беспроводных
клиентов можно разделить на два класса:
Беспроводные клиенты, которым требуется ограни-
ченный доступ к документам организации (доступ
к определенным общим папкам) и доступ к Интерне- Рисунок 1. Схема сети предприятия, предложенная командой
H0lid@ys
ту. Обычно это партнеры, приезжающие на несколь-
ко дней и работающие в офисе. гого офиса, как если бы они просто находились в разных
Беспроводные клиенты, которым не требуется до- сегментах одной локальной сети.
ступ к документам организации, но требуется до-
ступ к Интернету. Требование 3
Для обоих классов клиентов беспроводной доступ дол- Поскольку стоит задача устанавливать разный уровень
жен быть аутентифицированным. Беспроводное реше- доступа к Интернету для различных пользователей и вес-
ние также должно обеспечивать конфиденциальность ти удобный журнал использования Интернета, необходи-
передаваемого беспроводного трафика путем шифро- мо выбрать подходящее решение. Если в качестве уст-
вания. Длина ключа шифрования – не менее 128 бит. ройства-шлюза будет использован интернет-центр ZyXEL,
При шифровании беспроводного трафика требуется то в полном объеме требование выполнить не удастся. По-
периодическая смена ключа шифрования для затруд- этому следует применить специализированный Firewall/
нения криптографических атак. Proxy server. В качестве такого решения командой был вы-
7. Установить веб-сервер организации. Веб-студией бран MS ISA Server 2004. Его основное достоинство – обес-
разработан веб-сайт компании, который должен быть печение контроля доступа в Интернет не по IP-адресам ком-
размещен на одном из серверов основного офиса и к ко- пьютеров, а по пользователям Active Directory. Причем при
торому требуется обеспечить доступ из Интернета. попытке пользователя выйти в Интернет с использовани-
Запись www.eurostroy-m.ru внесена в DNS-зону ем любой программы (браузер, FTP-клиент, ICQ и т. д.) ау-
eurostroy-m.ru, которая поддерживается DNS-сервером тентификация пользователя проходит для пользователя
провайдера. Эта запись соответствует статическому абсолютно незаметно. Это достигается путем установки
IP-адресу, выделенному провайдером при подключении на каждом клиентском компьютере специального ПО, на-
основного офиса к Интернету через ADSL-соединение. зываемого «Firewall Client». Важно заметить, что установка
По предварительным оценкам, объем информации, за- Firewall Client не является обязательной, она лишь позволя-
гружаемый с сайта, не превысит 300 Мб в сутки. ет обеспечить аутентификацию для любых Winsock-прило-
жений, а не только для веб-браузеров.
Реализация проекта Также ISA Server позволяет анализировать трафик, ко-
После анализа технических требований проекта командой торый передается между офисами по VPN-туннелю и кон-
были приняты следующие решения: тролировать доступ между ними. Так можно выполнить
требование: «Прямой обмен документами между клиент-
Требования 1 и 2 скими станциями разных офисов должен быть заблоки-
Согласно ТЗ выделено только по одному «реальному» рован». ISA Server 2004 может ввести журнал как в файл,
IP-адресу на каждый из офисов, поэтому в офисах ком- так и в базу данных, а также имеет удобные средства пос-
пании будет применена частная IP-адресация (согласно троения отчетов.
RFC1918). Для подключения к Интернету будет исполь- Поскольку ISA Server 2004 используется как шлюз для
зовано устройство, выполняющее функции NAT (network доступа в Интернет, он должен быть расположен меж-
address translator). Для маршрутизации между сетями офи- ду сетью офиса и Интернетом и выполнять функции NAT.
сов, каждая из которых находится за NAT-устройством, Тем не менее подключение к Интернету уже выполнено с ис-
между этими устройствами будет установлен шифрован- пользованием интернет-центра ZyXEL, который также яв-
ный VPN-туннель. В качестве кандидатов на VPN-прото- ляется NAT-устройством. Решить проблему можно несколь-
кол могут рассматриваться PPTP, L2TP или IPSec в тун- кими способами, например, запросив у провайдера допол-
нельном режиме. Командой был выбран протокол PPTP нительные IP-адреса и организовав маршрутизацию, или
как более простой в настройке и обеспечивающий требо- перевести интернет-центр в режим моста (если это позво-
вания ТЗ. После настройки VPN-туннеля серверы и рабо- ляет провайдер). Команда решила просто настроить на ин-
чие станции одного офиса смогут непосредственно взаи- тернет-центре трансляцию всех портов (port translation) для
модействовать с серверами и рабочими станциями дру- входящих запросов. В этом случае все запросы, поступаю-
80
итоги IT-турнира
Аутентификация по именам и паролям, что позволяет
вести журнал подключений и отслеживать попытки до-
ступа к беспроводной сети.
Лучшая управляемость, поскольку для смены пароля
достаточно изменить его в Active Directory и не требу-
ется перенастройка точки доступа.
Автоматическое согласование ключей шифрования тра-
фика (WEP) между точкой доступа и клиентом при под-
ключении, что позволяет повысить безопасность бес-
проводного доступа и выполнить требование ТЗ.
К
онечно, солнце, луг и веселые Именно так его и зовут – Ара. Пото- ных змеев демонстрируют собствен-
босые пятки автора затеи. Ни- му что змей переливается неправдо- ные произведения. Здесь изготовле-
куда не деться – картина де- подобно сочными красками. В закат- ние небесных птиц сродни искусству,
тства. Впрочем, Дмитрий Репин начал ном свете солнца он пурпурно-чер- поэтому формы, цвета, узоры не удив-
делать воздушных змеев не в босоно- ный, и при взгляде на его двухметро- ляют – поражают.
гую пору, а будучи взрослым челове- вый размах крыльев охватывает поч- – Меня воздушные змеи интере-
ком, серьезным компьютерным спе- ти мистический восторг. суют не с точки зрения их летных ка-
циалистом. Он так и говорит: полгода Ира смеется – их птицы раз от ра- честв, – признается Дмитрий, – а с эс-
назад вдруг посетила уверенность, что за становятся крупнее в размерах, тетической точки зрения. Да, есть
в его руках обретут жизнь воздушные на что Дмитрий резонно отвечает: стандартные геометрические формы,
птицы. Не откладывая дело в долгий чем больше воздушный змей, тем эф- есть планы их построения, но воздуш-
ящик, наш герой нашел оконные шта- фектнее он смотрится в небе. А вооб- ный змей – это не летательный аппа-
пики, связал и заклеил бумагой. Со- ще, когда в воздух поднимается не- рат. Если хотите, это способ самовы-
оружение даже полетало немного во сколько змеев – это зрелище гран- ражения, способ отразить свой внут-
дворе. С этого, можно сказать, и на- диозное. ренний мир. В частности поэтому, из-
чалась жизнь петербургских небесных В Японии и Китае устраиваются це- готовление змеев было бы полезным
змеев. Пока их в коллекции Дмитрия лые фестивали, где создатели воздуш- занятием для детей.
около десятка. Увы, самого первого Я смотрю на фотографию послед-
сохранить не удалось, зато некоторые него воздушного змея Дмитрия и Иры,
его детали пригодились другим небес- который демонстрировался на автовы-
ным собратьям. ставке, и соглашаюсь с нашим героем.
Как человек, у которого уже есть Банальным треугольником или ромбом
полугодичный опыт создания воз- трудно выразить свои мироощущения.
душных змеев, Дмитрий утверждает, Человек создан, чтобы творить. Пос-
что взлететь может все. Даже аллюми- ледний змей Дмитрия и Иры – это на-
ниевая крышка от кастрюли. Главное, стоящее творение. Голова китайско-
правильно привязать веревки и пой- го дракона из папье-маше, длинное
мать сильный ветер. В Японии, к при- туловище, окольцованное лоскутами
меру, запускают змеев до 800 кило- огненной ткани. Ни дать, ни взять ска-
граммов весом! Я, безусловно, восхи- зочный персонаж.
щаюсь гигантоманией японцев, но бли- – Сколько времени уходит на созда-
же сердцу все же двух-трехметровые ние воздушного змея?
красавцы Дмитрия. Он и его жена Ира, – Всегда по-разному. От одного дня
которая работает системным админис- до нескольких недель. Саму конструк-
тратором, показывают фотографии цию соорудить несложно, гораздо тя-
летнего полета воздушного змея Ара. Китайский дракон желее придумать и воплотить в жизнь
82
хобби
Воздушный змей – это не летательный аппарат, а способ Запуск воздушного змея из кальки
самовыражения
декор. Занятие простое, но занимает Самое любопытное, что ни Дима, рассказать себе и миру, как прекрас-
очень много времени. Как правило, ин- ни Ира сами никогда не парили в не- но, в сущности, бытие.
женерная идея – моя, а Ира занимает- бе: не прыгали с парашютом. Хотя Ди- – Есть ли у вас единомышленни-
ся дизайном. ма мечтает об этом. А еще подумы- ки в городе?
– Следующий воздушный змей, ка- вал сделать дельтаплан, но очень уж – Ни в городе, ни в России не встре-
ким он будет? ответственность большая. Надо быть чал. Оказывается, воздушными зме-
– Сейчас я размышляю над конс- профессионалом, поскольку дельтап- ями никто в нашей стране серьезно
трукцией, которая могла бы склады- лан – это крылья для человека. Диле- не увлекается.
ваться. Причём так, чтобы с ней мог тантство в данном случае может сто- – А за рубежом?
управиться человек, который в пер- ить кому-то жизни. – Думал о том, чтобы завязать пе-
вый раз держит в руках змея. До этого Я спрашиваю Дмитрия, не меша- реписку с иностранными создателя-
все наши змеи были практически не- ет ли увлечение работе системным ми воздушных змеев, но пока не пы-
разборными. Это неудобно и нетранс- администратором. Нет, отрицатель- тался, хочется сначала научиться де-
портабельно. Если змей будет склады- но кивает головой, наоборот, хобби – лать что-то достойное, достигнуть оп-
ваться, его можно отвезти, выпустить это отдушина. ределенного мастерства, чтобы было
в поле. Был бы ровный ветер. Что ж, вполне понимаю и даже не стыдно показать, скажем, китайс-
– На какую высоту поднимается представляю, как приятно прийти ве- ким «змееводам».
воздушный змей? чером в теплый уют квартиры и уви- – Мне кажется, Дмитрию и Ире
– Насколько хватает нити на катуш- деть на стене, на диване, на полу час- это обязательно удастся – выйти
ке – пятьдесят метров. ти еще не сложенного, не склеенного, на высокий уровень мастерства. Не-
– И свободно парит? но уже рожденного персонажа тво- д аром фамилии у них харак тер -
– Да. ей жизни. Приблизиться к нему и па- ные… Репин и Сурикова. Вы соглас-
– Птицы удивляются? рой движений определить его черты ны со мной?
– Не то слово, – улыбается Ира. – и формы и уже мысленно проследить,
Изумлены! как возносится в небо твоя попытка Наталья Алексютина
Павел Болотов
Долгое время процессоры архитектуры Alpha были теми немногими, к производительности
которых стремились. Тем не менее в последнее время информация об этой архитектуре почти
исчезла со страниц новостных обзоров, а заодно и из списков предлагаемой продукции.
Может создаться впечатление, что архитектура канула не иначе, как в мир иной.
П
олулегендарная архитектура пускниками Массачусетского техноло- высокий однокамерный холодильник)
Alpha, в прошлом долгое вре- гического института, Кеннетом Ольсе- и умеренной стоимости (около 18 тыс.
мя лидировавшая в плане про- ном (Kenneth Olsen) и Харланом Андер- долл. США за базовую конфигурацию
изводительности среди многочислен- соном (Harlan Anderson). в ценах 1965 года).
ных RISC- и CISC-архитектур, своим Первое время они проектировали Ещё 4 года спустя был запущен
существованием была обязана аме- и выпускали разного рода элементар- в производство 36-битный PDP-10,
ные модули для компьютерной техни- потомок экспериментального PDP-6,
риканской Digital Equipment Corporation
(сокращённо DEC). Прежде чем при- ки того времени. позиционируемый для требователь-
ступить к рассмотрению этой инте- Но уже в 1960 году был выпущен ных к производительности научных,
их первый компьютер, 18-битный промышленных и военных расчётов.
ресной архитектуры, стоит кратко рас-
сказать об истории компании-основа- PDP-1 (Portable Data Processor – 1), спо- Несмотря на высокую цену, модифи-
собный производить около 100 тыс. кации оригинального PDP-10 успеш-
тельницы, хотя бы потому, что она то-
го вполне заслуживает. операций в секунду. но продавались вплоть до середины
В 1964 году был представлен 1980-х годов.
PDP и VAX, 12-битный PDP-8, который справедли- Другой интересной разработкой
или Древние времена во считают первым серийно выпускае- компании того времени был 16-бит-
Корпорация была основана в 1957 го- мым «мини-компьютером» из-за отно- ный PDP-11, потомок PDP-8. Благо-
ду двумя инженерами, бывшими вы- сительно небольших размеров (с не- даря сбалансированной архитекту-
84
ретроспектива
ре, имеющей в своей основе систем- ных и военных структурах, что уже го- 64-битной архитектуры (в противовес
ную шину Unibus (или её модификации ворит о многом. MIPS, SPARC, PA-RISC и POWER, быв-
под названием Q-bus), а также вследс- ших изначально 32-битными и только
твие простого набора команд и относи- PRISM и Alpha, со временем расширенных до 64-бит-
тельно невысокой себестоимости мо- или Наступление RISC ных), оперировавшей инструкциями
дельный ряд PDP-11 быстро обретал Тем не менее начало 1980-х годов оз- фиксированной длины (по 32 бита),
популярность. наменовалось наступлением RISC-ар- обладал 32 целочисленными 64-бит-
Стоит отметить, что клоны PDP-11 хитектур. Хотя первые из них, MIPS ными и 32 вещественными 64-битны-
выпускали и в странах бывшей Орга- и SPARC, всё ещё не могли сущест- ми регистрами, работал с 43-битными
низации Варшавского Договора: СМ-4, венно потеснить VAX, но в перспекти- виртуальными адресами (с расшире-
СМ-1420, СМ-1600, ИЗОТ-1016, ДВК... ве их потенциал был более значителен. нием вплоть до 64-битных в перспек-
Хотя PDP-11 был очень успешной Разумеется, это не означало неизбеж- тиве для архитектуры) и использовал,
разработкой (к слову, на нём и на PDP-7 ное поражение VAX в ближайшем бу- как VAX, little-endian порядок следова-
было осуществлено первое издание дущем, но в долгосрочной перспекти- ния байт (то есть, когда младший байт
ОС UNIX в Bell Laboratories в 1971 го- ве её шансы на удержание большой регистра занимает при записи млад-
ду), но обладал одним существенным доли рынка рабочих станций и сер- ший адрес в памяти), который тради-
недостатком: ограничением на макси- веров были сомнительны, а на толь- ционно поддерживался Intel в противо-
мальный размер адресного пространс- ко что сформировавшемся рынке пер- вес к big-endian (где младший байт ре-
тва в 64 Кб, следующим из его 16-бит- сональных компьютеров хозяйничали гистра занимает при записи старший
ности. Поэтому в 1975 году внутри ком- Intel и Motorola (с постепенным преоб- адрес в памяти), внедрённому Motorola
пании началась работа двух конкури- ладанием первой). и поддерживаемому конкурентными
рующих проектов, призванных опре- Поэтому руководство DEC с 1982 RISC-архитектурами того времени.
делить направление будущих разра- года финансировало несколько внут- Стоит отметить, что блок вещест-
боток. ренних проектов по RISC-разработ- венных вычислений поддерживал про-
Один из них назывался «Едино- кам (Titan, SAFE, HR-32, CASCADE), извольный доступ к вещественным
рог» (Unicorn) и развивал идеи, зало- а в 1985 году свело их в один под на- регистрам в отличие от процессоров
женные в PDP-10. званием PRISM (PaRallel Instruction Set архитектуры x86, которые работали
Второй проект, «Звезда» (Star), на- Machine), находившийся под руководс- с примитивным стековым доступом.
ходился под руководством Гордона твом Дэвида Катлера (David Cutler). Хо- В целом новая архитектура выгля-
Белла (Gordon Bell) и работал над усо- тя к 1988 году проект 32-битного RISC- дела серьёзным заделом на будущее,
вершенствованием PDP-11. процессора всё ещё находился в про- поэтому заявленный срок её подде-
После анализа результатов обоих цессе разработки, руководство ком- ржки и развития в 25 лет особого удив-
направлений проект «Единорог» был пании сочло дальнейшее финанси- ления не вызывал.
закрыт, как и разработка 36-битной рование нецелесообразным и закры- С точки зрения набора инструкций,
архитектуры PDP-10 в целом, а про- ло его. В знак протеста Катлер ушёл архитектура шла по пути достаточного
ект «Звезда» дал начало новой 32-бит- в Microsoft, где возглавил подразделе- минимализма, чтобы облегчить скоро-
ной архитектуре VAX (Virtual Address ние по разработке Windows NT (тогда стное декодирование и облегчить кон-
eXtension), являвшейся улучшенной ещё именовавшейся OS/2 3.0). вейеризацию вычислений. Например,
реализацией PDP-11. В середине 1989 года руководство инструкции целочисленного деления
В октябре 1977 года было пред- компании приняло решение возобно- аппаратно отсутствовали, так как бы-
ставлено первое материальное воп- вить работу над собственным RISC- ли наиболее сложными из целочислен-
лощение этой архитектуры – модель процессором, но на этот раз постанов- ных и плохо поддавались конвейери-
11/780, а в феврале следующего го- ка задачи была несколько иная. Новый зации, а потому просто эмулировались,
да была выпущена новая операцион- процессор должен был быть изначаль- так как на практике необходимость
ная система для этой аппаратной плат- но 64-битным, но в то же время иметь в их использовании возникала относи-
формы – VMS (Virtual Memory System), минимум несовместимостей с архи- тельно редко. Все инструкции условно
вскоре переименованная в VAX/VMS, а тектурой VAX, что должно было облег- подразделялись на 5 категорий:
позже и в OpenVMS. На машины архи- чить портирование под него существу- для целочисленных вычислений;
тектуры VAX также была портирована ющей программной базы. К тому же для вещественных вычислений;
классическая ОС UNIX. конкуренты в лице MIPS и Sun были для отработки условных и безу-
Если кратко подвести итоги, то мож- уже в процессе перехода на 64-бит- словных переходов, а также срав-
но уверенно сказать, что архитектура ные решения. нения;
VAX была достойным наследником Была создана рабочая группа под для загрузки и сохранения дан-
PDP-11. Её модельный ряд насчиты- руководством Ричарда Витека (Richard ных;
вал несколько десятков наименова- Witek) и Ричарда Сайтса (Richard Sites), д ля специфических за дач
ний – от компактных рабочих стан- которая разработала процессор под (PALcode).
ций до 6-процессорных тяжёлых сер- кодовым названием Alpha, представ-
веров. По сей день тысячи VAX рабо- ленный 25 февраля 1992 года в То- В целом ставка делалась на до-
тают в многочисленных промышлен- кио. Он был представителем «чистой» стижение высоких тактовых частот,
86
ретроспектива
лись по цене в 43,4 тыс. и 27,7 тыс. $ щая логика, хотя размер I-cache был
соответственно. увеличен вдвое. В конечном итоге пло-
щадь ядра уменьшилась ещё на треть,
Alpha 21164, а максимальная тактовая частота со-
или Битва за лидерство ставила 533 МГц. Со временем на про-
Информация о процессоре архитекту- изводственных мощностях Samsung
ры Alpha следующего поколения, 21164 был начат выпуск 0,28мкм вариант это-
(EV5), была впервые озвучена на кон- го процессора (PCA57), который отли-
ференции в Пало-Альто (Калифорния, чался удвоенными размерами I-cache
США) 14 августа 1994 года, хотя офи- и D-cache, планка максимальной так-
циальный выход датировался 7 сен- товой частоты была поднята до 666
тября того же года. Процессор являл- МГц, а площадь ядра опять удалось
ся экстенсивной модификацией ядра сократить на треть. Между прочим, у
EV45, что выражалось в удвоенном ко- PCA56 и PCA57 было ещё одно, на
личестве целочисленных и веществен- Процессор Alpha – 21164A (EV56)
этот раз позитивное, отличие от EV56:
ных конвейеров, причём число стадий новый набор инструкций MVI (Motion
последних было сокращено с 10 до 9. влять операции загрузки/сохранения Video Instructions), нацеленный на ус-
Тем не менее функционально конвейе- не только квантами по 32 или 64 би- корение обработки видео- и аудио-
ры всё же были несколько неоднород- та, изначально поддерживаемые ар- данных путём векторизации вычисле-
ны, что экономило транзисторы логики хитектурой, но и по 8 или 16 бит. В ос-ний, подобно набору инструкций MMX
и в то же время обеспечивало эффек- новном это было вызвано падением для процессоров архитектуры x86.
тивную балансировку нагрузки. Впол- производительности при эмуляции Для процессоров поколения EV5
не логично, что возможности I-box бы- кода архитектуры x86. EV56 отличал- было разработано несколько стандар-
ли также расширены вдвое (выборка ся от EV5 более новым техпроцессом, тных чипсетов. Первый из них, 5-чи-
и декодирование 4 инструкций за такт), 4-слойным 0,35 мкм CMOS6, который повый DEC Alcor (21171), поддержи-
иначе бы этот блок стал «узким мес- позволил довести тактовую частоту до вал 128-битную 33МГц системную ши-
том» процессора. Что касалось кэш- 600МГц. Samsung, лицензировавший ну и 256-битную шину памяти, a так-
памяти, то размеры и организация I- EV56 июне 1996 года, производил его же 64-битную 33МГц шину PCI. Встро-
cache и D-cache остались аналогичны по аналогичному техпроцессу, но чуть енный контроллер IDE отсутствовал,
таковым у EV4, зато появился интег- более успешно – максимальная такто- равно как и мост PCI-ISA(EISA), то есть
рированный кэш 2-го уровня (S-cache, вая частота составляла 666 МГц. Кро- они по-прежнему устанавливались от-
secondary cache) размером в 96 Кб, ко- ме того, переход на новый техпроцесс дельными микросхемами. Так как для
торый в значительной мере компен- означал и уменьшение площади ядра реализации BWX требовалась под-
сировал недостатки I-cache и D-cache. (приблизительно на треть), что зна- держка со стороны чипсета, то одно-
Стоит отметить, что EV5 был первым чительно сократило стоимость про- временно с выпуском EV56 появился
в истории процессором с S-cache. изводства по сравнению с EV5. В це- DEC Alcor 2 (21172), только этим и от-
Впридачу была сохранена подде- лом EV56 всё ещё оставался лиде- личавшийся от 21171. Следующей раз-
ржка B-cache, размеры которого мог- ром по производительности, но ему работкой стал DEC Pyxis (21174), кото-
ли составлять вплоть до 64 Мб (обыч- было всё сложнее конкурировать рый уже поддерживал 66 МГц систем-
но от 1 Мб до 4 Мб), принцип мульти- с 64-битными RISC-соперниками в ли- ную шину той же разрядности и вдвое
плексирования сохранялся, равно как це Hewlett-Packard PA-8000 и PA-8200, более узкую (128-битную) шину памя-
поддержка 128-битной системной ши- Sun UltraSPARC I и UltraSPARC II, MIPS ти, хотя это компенсировалось под-
ны и многопроцессорного режима ра- R10000 и IBM POWER3. Первое поколе- держкой оперативной памяти SDRAM
боты. Хотя EV5 и производился по то- ние процессоров Alpha было легче про- вместо морально устаревшей и более
му же техпроцессу, что и EV45, коли- двигать на рынке, так как его единс- медленной FPM DRAM. Также имелся
чество транзисторов в его ядре увели- твенными 64-битными соперниками чипсет не от DEC, предназначенный
чилось более чем 3 раза, в основном были процессоры MIPS, которые ока- в поддержку PCA57 – VLSI Polaris.
за счёт S-cache. Максимальная такто- зались первыми на этом поприще.
вая частота составила только 333МГц, К тому же с выходом Intel Pentium Pro Что случилось с DEC?
что было вполне предсказуемо, так пришлось начать серьёзную борьбу за 28 января 1998 года произошло собы-
как использовался всё тот же техпро- место под солнцем и с CISC-процессо- тие, ставшее одним из ключевых в ис-
цесс (CMOS5). рами архитектуры x86, которые были тории архитектуры Alpha: DEC, буду-
В октябре 1995 года вышел в свет в лучшем положении по количествен- чи в тяжёлом финансовом положении,
несколько доработанный вариант EV5 ным и ценовым показателям. находится в процессе покупки извес-
под названием 21164A (EV56), основ- Однако, стремясь ещё более уде- тным сборщиком компьютерной тех-
ным архитектурным отличием кото- шевить EV56, DEC в сотрудничестве ники – Compaq Computer Corporation.
рого была поддержка дополнительно- с Mitsubishi выпустила 17 марта 1997 Вскоре сделка была утверждена соб-
го набора инструкций BWX (Byte-Word года 21164PC (PCA56), у которого от- раниями акционеров обеих компаний,
eXtension), позволяющего осущест- сутствовал S-cache и соответствую- и уже менее чем через полгода DEC
88
ретроспектива
ло с драйверной поддержкой, так как
немногие производители сочли нуж-
ным поддерживать архитектуру Alpha.
Для полноты картины осталось заме-
тить, что Windows NT (3.51 и 4.0) была
32-битной ОС, даже несмотря на то,
что работала на 64-битной архитекту-
ре. Вполне естественно, что это отнюдь
не прибавляло производительности.
Что касается Digital UNIX и OpenVMS,
то эти 64-битные ОС так и не смогли
составить достойной альтернативы
Windows NT в силу дороговизны (свы-
ше 1000 $ за одну копию), а также ещё Процессор Alpha – 21264 (EV6) Процессор Alpha – 21264B (EV68C)
более узкой аппаратной и програм-
мной поддержки. Другие же UNIX-по- от пропускной способности кэшей ся как массовому решению, несмотря
добные ОС с открытым кодом (NetBSD, и оперативной памяти. Как необхо- на приблизительно вдвое более высо-
Linux, OpenBSD и FreeBSD) не подде- димое дополнение к этой технологии, кую производительность в расчёте на
рживались DEC вообще. Мотивы не процессор поддерживал переименова- единицу тактовой частоты, чем у EV56.
совсем ясны, но определённо эти ОС ние регистров (register renaming). Ито- Да и собственно максимальная часто-
могли составить достойную конкурен- го, EV6 мог переупорядочивать в лю- та была немалой – 600 МГц.
цию Digital UNIX и OpenVMS. бой момент времени до 80 инструк- Архитектура EV6 была настоль-
В мае 1997 года DEC подала в суд ций, а также располагал дополнитель- ко удачной, что пережила несколь-
на Intel, обвиняя последнюю в нару- ными 48 целочисленными и 40 физи- ко технологических воплощений в
шении 10 патентов на архитектуру ческими регистрами (количество ло- том же конструктиве. В конце 1999
Alpha при проектировании процессо- гических, то есть программных, оста- года появился 21264A (EV67) на ос-
ров Pentium, Pentium Pro и Pentium II. лось прежним – по 32). Количество це- нове 0,25 мкм CMOS7 процесса от
В сентябре того же года Intel ответи- лочисленных конвейеров было увели- Samsung, располагавший частотным
ла встречным иском, обвиняя в нару- чено до 4, из которых 2 могли рассчи- потенциалом в 833МГц. В 2000 году
шении 14 своих патентов. Примирение тывать виртуальные адреса. Что ка- IBM воплотила EV6 в своём 0,18 мкм
произошло 27 октября 1997 года, ког- салось логики C-box, то её ожида- CMOS8 процессе с медными про-
да обе компании отозвали свои пре- ли кардинальные изменения: разме- водниками под названием 21264B
тензии. По условиям «мирного догово- ры I-cache и D-cache были увеличены (EV68C), что позволило пересечь гига-
ра» DEC предоставила Intel производс- до 64 Кб каждый, S-cache был упраз- герцевый барьер и достичь 1250 МГц.
твенные права на всю свою продукцию днён, a внешний B-cache размером Несколько запоздавшая альтернати-
(кроме непосредственно относящейся от 1 Мб до 16 Мб подключался через ва от Samsung при тех же 0,18мкм, но
к архитектуре Alpha), также согласи- независимую 128-битную шину дан- с морально устаревшими алюминие-
лась поддерживать в будущем архи- ных с 20-битной шиной адреса и ра- выми проводниками, смогла добрать-
тектуру IA-64, в то время как Intel вы- ботал на частоте от 1/8 до 2/3 часто- ся только до 940 МГц.
купила у DEC за 625 млн. долл. США ты ядра. Для формирования B-cache Для EV6 и его прямых потомков
её фабрику в Хадсоне вместе с про- обычно использовались микросхемы было спроектировано два чипсета:
ектными центрами в Остине (Техас) синхронной статической памяти с от- DEC Tsunami (21272, он же Typhoon)
и Иерусалиме (Израиль), а также обя- ложенной записью (late-write), а позд- и AMD Irongate (AMD-751), хотя пос-
залась производить процессоры Alpha нее и с применением технологии DDR. кольку AMD Athlon использовал почти
в будущем. Для полноты картины был Был полностью заменён системный аналогичную системную шинную ар-
подписан договор о кросс-лицензиро- шинный интерфейс: шина данных ста- хитектуру, не должно было быть про-
вании патентов сроком на 10 лет. ла 64-битной, но использовала техно- блемой адаптировать чипсеты других
логию DDR, а кроме того, использова- производителей, но этого не произош-
Alpha 21264, лась звездообразная топология под- ло. DEC Tsunami был высокомасшта-
или Время реванша ключения (то есть каждый процессор бируемым чипсетом, так как состоял
В феврале 1998 года был выпущен подключался к чипсету по выделенно- из нескольких микросхем и позволял
в кремнии процессор следующего по- му каналу). Технологически EV6 про- строить как однопроцессорные, так
коления архитектуры, 21264 (EV6). изводился по тому же процессу, что двух- и четырёхпроцессорные систе-
В архитектурном плане этот процес- и EV56, но с дополнительными дву- мы (от 1 до 4 C-chips). Ширина кана-
сор сильно отличался от предыдущего мя слоями металлизации, хотя пло- ла данных шины памяти могла быть от
поколения, так как поддерживал вне- щадь его ядра была на треть больше, 128 до 512 бит (от 2 до 8 D-chips), так-
очередное выполнение (out-of-order что предполагало более высокую се- же могло подключаться несколько кон-
execution), что позволило снизить за- бестоимость и автоматически не да- троллеров шин PCI (по одному P-chip
висимость функциональных устройств вало шансов процессору состоять- на шину). AMD Irongate был одночипо-
90
bugtraq
92
книжная полка
Архитектура программного
обеспечения на практике
Лен Басс, Пол Клементс, Рик Кацман
ложены основные проблемы и зада- архитектуры. Среди рассмотренных
чи, с которыми сталкиваются разра- тем глав, посвященных анализу архи-
ботчики на этапе проектирования ПО. тектуры, рассмотрены метод анализа
Изложенная информация представля- компромиссных архитектурных реше-
ет собой описания собственного опы- ний и анализ стоимости и эффектив-
та авторов книги. ности. В качестве примера представ-
Освещены три основные ступени: лена «всемирная паутина». Послед-
планирование, создание и анализ ар- няя часть книги посвящена такой ак-
хитектуры. Основные темы части, пос- туальной теме, как использование од-
вященной планированию: архитек- ной и той же архитектуры в несколько-
турно-экономический цикл, что такое их проектах. Действительно, на раз-
«программная архитектура», в качест- работку архитектуры для конкретного
ве практического примера использова- продукта уходит достаточно большое
Несомненно, одним из важнейших ния архитектурных структур рассмот- количество времени, так почему бы
(если не самым важным) этапом в со- рена авиационная система A-7E. Раз- не адаптировать полученный резуль-
здании того или иного ПО является дел «Создание архитектуры» пред- тат для другого проекта.
разработка архитектуры программы. ставлен следующим материалом: ат-
C этой задачи должен начинаться лю- рибуты и реализация качества, управ- Издательство: «Питер»
бой серьезный проект. К сожалению, ление воздушным движением – при- Год издания: 2006
количество информации по этой те- мер разработки, ориентированный Количество страниц: 575
ме очень ограничено. Вашему вни- на высокую готовность, проектирова- ISBN: 5-469-00494-5
манию предлагается издание, в кото- ние архитектуры, процесс документи- Цена: ≈ 510 руб.
ром простым и доступным языком из- рования, реконструкция программной Книга предоставлена издательством «Питер».
Подписные
индексы:
20780*
81655**
по каталогу
агентства
«Роспечать»
87836
по каталогу
агентства
«Пресса
России»
*
годовой
**
полугодовой
94
подписка на 2006 год
Редакционная подписка
Открыта подписка через редакцию. Вы можете оформить №3(28) март 2005
№4
подп (29)
ww исно апре
w.s й л
am инде ь
сылаются почтой.
ем MS Setup равл ро ем Wr рибу
Ускоря BIOS яем Н к т S ти
цируем Автом ва астр си-с раф py! ва
Модифи ые баз атизир ш аи ер ик ми
9.2 ительн 1С но уе П ли в ве п ?
дополн вой м под с п рово чны аем ро оч
nal я Ищем ики дохода верс клю
й с DS в то
sio ни источн
ии 8. чени ом ди вы
ro fes а тле е
0 е
A
Уп
р
ощ м
а па PAM х
5 ч и ste ощ ью уд м- –
00
ь 2 655 S EP впе ч ен а и фи
банка. TS
P ое ем t
HO мн ист crip й
ам й с BS S па ени 6
огр во ю V NTF сту рж ll
Пр айло ощь ие до вто ewa
ф пом ен его от Fir
После поступления платежа редакция начнет отправ- с
Во
сс
та н овл
ац
общ иты oute
ия защ WinR
из ет и rio
ган рн Ke
Ор Инт е нове
лять вам номера. в ос
на
Стоимость
подписки через
редакцию:
900* руб.
за 6 номеров
1800* руб.
за 12 номеров
При оформлении
подписки
до 1 января
2006 года –
скидка 10%
* Включая НДС
и почтовую доставку
РЕДАКЦИЯ
ЧИТАЙТЕ
Исполнительный директор
Владимир Положевец
В СЛЕДУЮЩЕМ
Ответственный секретарь
Наталья Хвостова
sekretar@samag.ru
НОМЕРЕ:
Технический редактор
Владимир Лукин Неисполняемый стек – ных. Ведь вы лишаетесь основного инс-
Редакторы победа или поражение? трумента (вашей любимой операцион-
Андрей Бешков Технологии защиты от переполнения, ной системы), с помощью которого мож-
Валентин Синицын встроенные в XP SP2, рекламируются но было бы прояснить и исправить сло-
Алексей Барабанов как абсолютно надежное средство жившуюся ситуацию. Тем не менее без-
Кирилл Тихонов от проникновения в систему, обеща- выходных ситуаций не бывает.
Кирилл Сухов ющее покончить с червями, хакерами
и прочими вредителями раз и навсегда. Защищаем электронную
РЕКЛАМНАЯ СЛУЖБА Cами хакеры, впрочем, придерживаются почту с помощью
тел./факс: (095) 928-8253 совершенно другого мнения на этот счет MailScanner
Дарья Хохлова и добровольно уходить со сцены не со- Тяжело представить сегодняшний биз-
reсlama@samag.ru бираются. Давайте отбросим реклам- нес без электронной почты, которая поз-
ные буклеты и посмотрим, как выглядят воляет оперативно обмениваться ин-
Верстка и оформление эти защитные механизмы изнутри. формацией с минимальными затрата-
maker_up@samag.ru ми. В то же время в ящик пользователя
Дизайн обложки Круговорот почты в сети, помимо полезных писем попадает спам,
Николай Петрочук или Архитектура а почта часто используется для распро-
современных почтовых странения компьютерных вирусов.
По вопросам распространения систем
обращайтесь по телефону: Знание основ освобождает от необхо- Доставку гарантируем:
(095) 928-8253 (доб. 120) димости запоминать тысячи фактов. качество обслуживания
Попробуем подойти к построению поч- в пакетных сетях
107045, г. Москва, товой системы, опираясь на этот при- Если вы частенько работаете по ssh уда-
Ананьевский переулок, дом 4/2, стр. 1 нцип, и сделаем акцент не на настрой- ленно, слушаете интернет-радио или
тел./факс: (095) 928-8253 ку компонентов почтового сервера просто играете в on-line-игры, то навер-
Сайт журнала: www.samag.ru (об этом и так достаточно написано), няка замечали, что получаемое от этого
а на взаимосвязь между компонента- удовольствие прямо пропорционально
РУКОВОДИТЕЛЬ ПРОЕКТА ми и на протоколы, по которым они об- нагрузке на вашу сеть. Будь то Windows
Петр Положевец щаются между собой. Update с вашей же машины или FlashGet
УЧРЕДИТЕЛИ с соседней, все равно приложениям на-
Владимир Положевец Загрузка и загрузчики до будет «поделиться». Вот вам и «изю-
Александр Михалев Любая система, прежде чем начнет ра- минка» совместного использования ин-
ИЗДАТЕЛЬ ботать, должна загрузиться. Если на ва- тернет-канала – постоянные скачки, рыв-
ЗАО «Издательский дом шей машине установлено несколько ОС, ки и задержки. Иными словами – ваши
«Учительская газета» еще нужно как-то выбрать, что именно данные не получают соответствующе-
загружать. И проблемы с загрузкой и за- го качества обслуживания (Quality of
Отпечатано типографией грузочными секторами, пожалуй, мож- Service). И к несчастью, это так же неиз-
ГП «Московская Типография №13» но отнести к одним из самых неприят- бежно, как налоги.
Тираж 9000 экз.
Уважаемые читатели!
Журнал зарегистрирован
в Министерстве РФ по делам печати, Спешите оформить подписку
телерадиовещания и средств массо- на первое полугодие 2006 года!
вых коммуникаций (свидетельство
ПИ № 77-12542 от 24 апреля 2002 г.). Приобрести новые и старые номера журнала
вы можете через интернет-магазины LinuxCenter.ru и Allsoft.ru.
За содержание статьи ответственность
несет автор. За содержание рекламно-
го объявления ответственность несет
рекламодатель. Все права на опубли-
кованные материалы защищены. Доставка почтой в любую точку России.
96