DiBR
обычная кошмарная
домашняя страничка
Ежекакполучится околокомпьютерное обозрение
 
  <<<  предыдущий 31 октября 1999 следующий  >>>  
   Последний выпуск       Архив       Ссылки       Полезности       humor.filtered       О сайте   
          Слева, где кнопочки висят, обратите внимание - между dz и leader'ом зелененькая кнопочка такая появилась. Нижегородское компьютерное обозрение. Почти конкурент, однако :-)
          Свершилось. Долго я убеждал себя, что настройка DNS - это просто, что с da.ru пора сваливать, и наконец-то это произошло. Первичный NS стоит у меня, вторичный - на ns.kis.ru, домен делегирован... В-общем, мой новый адрес - http://dibr.nnov.ru.
          И в связи с этим, вспоминая cooler'овские "сисадминские байки" хочется сделать отдельный выпуск, практически без новостей (ну, может, парочку, самых интересных). Сделать выпуск про сервер.
          Есть такой жанр в кино, да и не только - "The making of..." - когда по следам успешного фильма, музыкального клипа, спектакля или еще чего-нибудь выпускается коротенький фильмик с не вошедшими в фильм кадрами, подробностями вроде "как мы сделали вот этот эффект", неудачными дублями, ляпами актеров и прочим. У меня, конечно, не кино, но и я очень надеюсь, что сие чтение будет не только развлекательно, но в чем-то и полезно.
          Итак. Цветом буду выделять то, о чем я пишу: таким цветом - просто история создания сервера, таким - что-нибудь потенциально полезное, а таким - свои эмоции на тему, как все криво :-)
          А началось все довольно прозаично. Датой начала можно довольно точно назвать июль 98 года. Тогда, имея Интернет на работе захотелось мне отвести немного интернета домой. Задача вполне понятная, вполне классическая, и решения в общем-то известны. Поскольку выделенной специально под это машинки у меня тогда не было, работали все под windows 95 и изменить это было нереально (пересадите-ка человека, привыкшего к винворду под старофис для линукса - он же с ума сойдет), пришлось строить систему под windows 95.
          Выглядело все просто - dial-in сервис из пакета Microsoft PLUS (со своими классическми граблями - хоть он и сервер, но адрес клиенту не отдает, да и проверяет почему-то только пароль, но не имя пользователя) и WinGate в качестве прокси. С задачей своей (отвечать на звонки и давать мне интернет) эта штука более-менее справлялась. При условии, что ее было кому "пнуть" ресетом, когда у wingate или у MS plus отъезжала крыша. Поскольку крыша отъезжала обычно невовремя, был спаян "механический мужик", принудительно ребутивший всю эту конструкцию в 9 часов вечера.
         
Хоть оно в принципе и работало, рекомендовать такую конструкцию для массового повторения не могу однозначно - слишком часто я обнаруживал с утречка винду в любимой позиции - синий экран с надписью "мне плохо". Да и времена wingate, при всем его бурном прошлом, уже прошли - для раздачи интернет по офису/домашней сетке имеет смысл ставить либо WinRoute либо SyGate - оба умеют NAT, что намного приятнее чем прокси, а использовать windows 9х как dial-in сервер... лучше уж прикупить памяти и поставить NT. А еще лучше... но об этом потом.
         
Ни о каком вебе и страничках речи не было, лишь бы хотя бы это кое-как работало. А через полтора месяца я удрал в трехмесячную командировку, оставив на "автопилоте" домашний фидошный узел, работавший теперь через этот новый инетовский канал. Вернувшись я узрел... в-общем, сетевыми решениями на базе 95 не занимаюсь теперь из принципа - винда уделала себя до потрясающего состояния "мы грузимся, показываем десктоп и засыпаем с песочными часиками". Винда была, естественно, переустановлена (намного лучше ей от этого, впрочем, не стало), а я задумался о чем-то большом и светлом, о ka9q например, или о PCROUTE/DOS...
         
Не все помнят, но в те времена, когда 286 считался весьма крутым компьютером, интернет уже вовсю существовал, и его уже было нужно чем-то роутить, диалапить и делать прочую серверную мишуру - почту, скажем, релэить. Поскольку на Cisco Router'ы а равно и на Большие Машины С Юниксом денег не всегда хватало, радиолюбителем Филом Карном был разработан (и огромной толпой других любителей - доведен до приличного уровня) пакет ka9q (назван по любительскому позывному Карна). Пакет весьма забавный - решение основных "серверных" задач интернет, таких как работа с PPP/SLIP/модемами, сетевыми карточками, роутинг (в том числе и динамический, вах!), ARP Proxy, работа с почтой, ftpd, удаленный доступ телнетом, а главное - возможность настройки всего и вся, и скрипты там, где они нужны. То есть, почти идеальный инструмент для небольшого сервера, но при этом требующий всего-навсего XT-шку с 640к памяти!. Ну, с ХТ-шками отдельные проблемы (короткие ISA-слоты, поэтому не все сетевухи нормально себя чувствуют), но на 286 ka9q чувствует себя более чем комфортно.
          ka9q я немного поизучал, оказалось весьма приятной программой из серии "собрал из помойки сервер, настроил, пнул в угол и накрыл тряпочкой - пусть работает". Дополнительный плюс - влазит на дискетку (да знаю я про PicoBSD, знаю:-)) и (если на дискетке поставить защиту от записи, а в самом ka9q не включать логирование) - абсолютно корректно относится к нажатию reset на полном скаку.
         
Единственное, во что я уперся - ни nat, ни tcp proxy в комплекте не обнаружилось, а самое плохое - и не предвиделось, ввиду некоторой "монолитности" проекта (то есть, sources included, но что толку - сам я nat не напишу, поскольку просто запутаюсь в десятках килобайт Сишного кода). Поэтому от ka9q пришлось с сожалением отказаться. Что впрочем, не означает, что ka9q не найдет своего применения - как "бюджетный роутер" для домашней сетки трудно придумать что-то лучше. Если еще учесть, что в цене "помоечной" 286 на первом месте будет стоять корпус и сетевухи, если таковые есть... :-))
          С меньшим энтузиазмом я изучал коммерческого конкурента ka9q - программу PCROUTE/DOS. Она в принципе умела NAT, более того - это и было ее основным предназначением, но какое-то ощущение корявости заставило меня посмотреть в сторону юниксообразных систем, и приобрести по случаю с рук 486sx25/4Mb/540Mb за $60. Для сервера, чиста в натуре. Там разберемся - ka9q, pcroute или еще чего.
          Кстати, до этого момента не знал, что 486 бывают на 25(!) мегагерц. Век живи - век учись.
         
Вообще-то любопытная складывается ситуация. Несколько лет назад при слове "сервер" представлялось что-то большое, белое и блестящее (или наоборот - компактное, черное и приятное на ощупь), но неизменно за сумасшедшие деньги. "Клиентская" же машинка - недорогой терминал к "серверу", или "писишка" - вешь тогда тоже недешевая, но с серверами по цене несравнимая.
          Сейчас же сплошь и рядом ситуация обратна. Секретарше на стол фиг укупишь что-нибуть мельче 400 целерона с 32 метрами памяти (а если и найдешь на рынке или с рук что-то помельче, то любимый офис с солитером и "скрепышом" заставит почувствовать боль за бесцельно проведенные в свопе годы:-)). В то же время небольшой (подчеркну - небольшой. Не рамблер, не яндекс и не альтависта, а скажем, dibr) сервер вполне нормально будет работать на 386/8Мб, а то и более древней технике. Парадокс, однако. "Тонкий клиент" становится толще "мелкого сервера".
         
С некоторой робостью я решил все-таки сделать шаг вперед - и поставить юникс. Точнее - FreeBSD. Про то, что я думаю о линуксе повторяться не буду, а среди фришных юниксообразных систем, способных работать на не особо сильных духом тачках выбирать особо не из чего. Кстати, я в курсе, что FreeBSD не ставится на 4Мб. Зато она там работает, а поскольку фрю ставить надо раз в жизни (мне не повезло, но об этом позже), дальше она просто работает, установку можно сделать и на нормальной машине, потом просто передернув винт.
         
Ставилась FreeBSD 2.2.6 с компакт-диска, списанного у знакомого фришника. В полезности самых-новых-версий я не уверен до сих пор (и на машинке, которую я хочу поставить дома в угол - пусть роутит, почту качает да за пивом бегает - будет 2.2.6 или 2.2.8, если не поленюсь ее вытянуть, а не 3.х). Выскажу спорное мнение - но мне кажется, именно для небольшого сервера идеальной является 2.2.8 - как наиболее вылизанная версия ветки 2.х. Ну и что, что многопроцессорности нет - где вы видели dual 386 :-))
         
Слухи о "трудности установки юникс", чего я так опасался, оказались сильно преувеличены. Идеологически он не сложнее, чем DOS, благо идеология закладывалась тогда, когда делать сложно было не принято. ...Представьте себе, что вы, вообще-то, разбираетесь в компьютерах, но в принципе не знаете ничего про DOS. Ну, скажем, всю жизнь махали однокнопочной мышью в Макинтоше. Тогда DOS должен казаться каким-то нагромождением сложностей - командная строка (полный кошмар - на маке ничего подобного не было!!), какие-то файлы и расширения вместо документов и их типов, даблклик и то неясно куда делать. К тому же глыбы config.sys, autoexec.bat с какими-то непонятными строками вроде "devicehigh=c:\cdrom\vide-cdd.sys /d:cdrom0 /v", а то и похуже... Но мы-то с вами знаем, что DOS - это очень просто :-)
         
С юниксом - то же самое. Основная идея не сложнее ДОСа - загрузчик грузит ядро, ядро запускает init, init читает rc.conf, ttys... а дальше тот несчастный, кто решил таки настроить юникс, читает маны, маны, маны... шучу :-) Маны читать обязательно, но первая установка и настройка юникса ничуть не сложней первой (первой я сказал! а не десятой в этом месяце) установки и настройки виндов или того же ДОСа. Разумеется, очень желательно иметь представления о том, что требуется - не о том, "как устроена сеть во фре" - хорошо она там устроена - а о том, как устроена сеть вообще.
          При этом (чисто мое мнение, никому не навязываемое) ставить разнообразные "Иксы" и прочие окошечные навороты смысла нет - если это сервер, то X там нафиг не нужен, а если это рабочая станция - то зачем там юникс? Неплохо также рядышком иметь машинку с привычным окружением (у меня это NT + FAR manager), которой можно будет после этапа начальной настройки подсоединиться по ftp и доводить конфигурацию уже из привычного редактора FAR'а (что бы там не говорили - к идеологии vi привыкаешь только после второй бутылки). Ставить надо необходимый минимум, а потом доставлять то что нужно, по мере необходимости.
         
Итак, пара дней разбирательств с инсталлятором, пересборки ядра, настройки mgetty, pppd, natd, прочей фигни (кстати, был поражен, насколько просто по сравнению с виндами настраиваются основные сетевые вещи), и "сервер" - тогда еще скромная 486sx25 c 4Mb(!) памяти водружена на свое законное место - на шкаф, подальше от желающих посмотреть, что это там такое лампочками мигает. Отвечает на звонки, делает этот самый nat (который лучше, чем прокси), дает зайти телнетом и по ftp, и даже не особенно тормозит. Точную дату история не сохранила, но приблизительно это было в феврале 1999 года.
         
Установка и настройка natd, кстати, классно прошла "по бумажке" - в левой руке распечатанный ман по natd, в правой - FreeBSD handbook, в средней - клавиатура. "Сделайте так-то" - делаю, "теперь так-то" - делаю, "осторожно, здесь грабли" - хлоп граблями с размаху по лбу :-) Грабли простые - по инструкции нужно включить ipfirewall в ядре (в моем случае - пересобрать ядро), после чего... срабатывает привычка "я изменил ядро, нужно сразу перегрузиться", не дочитав при этом бумажку, в которой следующей строчкой написано, что firewall, которому не прописали рулезы, встает в позицию "никому ничего нельзя", после чего остается только втыкать в сервер монитор и клавиатуру и прояснять ситуацию локально - никаких телнетов уже нет, они остались за ненастроенным firewall'ом :-)
          Настройка DNS (о ней, впрочем, потом) заметно веселее - в man'е по named честно предупреждают, что "если вы не совсем уверены, что хорошо себе представляете как настраивать первичную зону, и что может быть при неверной настройке..."
         
...И только в конце марта мне пришло в голову, что имея готовый интернет и готовый сервер грех не сделать на этом веб-страничку. Да не хоумпейдж на геоситиз с фотками любимой собачки жучки, а что-то типа cooler'а или dz - чем я хуже, в конце концов?
          Поскольку подручный сервер тогда имел целых четыре мегабайта памяти, ставить апач я не рискнул - тяжеловат, да и не особо нужен, и выбор пал на маленький (но вполне функциональный) веб-сервер thttpd (раздают его на www.acme.com). Установка "по бумажке" прошла гладко, небольшая доработка напильником (настройка hhtp-хидеров) тоже была несложной - ввиду наличия исходников. После этого началось изучение html и методов автоматизации его создания (я вовсе не фанат набивать все руками, равно как и не считаю нормальным при изменении двух букв в коде последовательно открывать полсотни страниц в фронтпейдже и править там эту пару букв.
          Выбор средства автоматизации остановился на макропроцессоре M4 (используется, например, в большинстве юниксов для автоматической генерации конфига sendmail'а - sendmail.cf). Теоретически :-) M4 есть только для юниксов, практически же Cygnus Solutions выпустила совершенно замечательный набор GNUтого утиля, "портированного" (перенесенного, а не то что вы могли подумать) под win32. Практически - M4 есть язык сам по себе, "компилятор текста в текст", с возможностью определять свои макросы, ну, и все чем положено в языках. После этого я мог единожды создать файл с описанием того, как чего должно выглядеть (почти как "стилевой файл" в ТеХ'е), и после изменения дизайна просто "пересобирать" все странички с новым файлом макросов - исходники выпуска не изменялись, а оформление автоматически генерилось из макросов стилевого файла.
         
Сразу замечу - сейчас бы я так не сделал. Поскольку изначально выбранный веб-сервер не умел практически ничего кроме plain http и CGI, пришлось изворачиваться, и компенсировать одну кривизну другой кривизной. Сейчас бы я выбрал что-нибудь вроде PHP - тоже язык, с похожими возможностями, но интерпретация ведется на сервере в момент выдачи странички, что позволило бы избежать "пересборки" и перезаливки сайта на сервер целиком. Впрочем... img height= и width= у меня сейчас подставляются автоматически довольно замухрежным вызовом нескольких программ (alchemy+grep+cut), занимающим вполне заметное время на моем cel450A. Одно дело, когда это делается раз в неделю дома, совсем другое - 100 раз в день при отдаче странички клиенту. Не уверен, что на PHP я бы нашел достаточно элегантное решение. Хотя - люди же как-то делают. Может, и руками.
          То есть, если есть PHP - имеет смысл взвалить все что можно на него, если нет - можно искать что-то свое.
         
Так оно и жило. До июня (точную дату не помню, а смотреть лениво), когда dibr был замечен и обозрен в cooler'е. Вот тогда я и понял (придя утром на работу, и убедившись, что сервер практически лежит, непрерывно шурша диском), что 4 мегобайта - это хорошо, но не очень.
          К 12 апреля сервер был экстренно проапгрейжен до 16 мегобайт памяти (дефицитнейшая вещь оказалась - "короткие" 32-пиновые SIMMы по 4Мб штучка, пришлось покупать почти по цене антиквариата:)) С тех пор и до сегодня dibr.nnov.ru стоит на все той же 486sx25/16Mb, и весьма неплохо себя чувствует (LA < 0.1 почти всегда). Ах да, когда-то тогда еще посыпался диск, в результате чего пришлось срочно искать новый и спешно переставлять фрю. К ее чести, кстати, скажу, что она держалась до последнего - когда я обнаружил, что не запускается mgetty и для профилактики ее перегрузил - выяснилось, что mgetty не запускается по очень простой причине - не было больше mgetty, он попал (вместе с заметной частью других системных файлов) на осыпавшуюся часть диска... Что диск медленно осыпается я, в-общем-то, знал, но надеялся, что все обойдется.
         
Вообще-то FreeBSD не особо любит жить на битых дисках (хотя - кто это любит). Поэтому диск все-таки по возможности должен быть БББ (Без Бэд Блоков), или хотя бы не сыпаться на ходу. Хотя даже на осыпающемся диске установка с bad blocks handling (или как-то так) и регулярный bad144 позволит какое-то время прожить. До тех пор, пока бэдблоком не задавит что-нибудь важное, вроде ядра :-)
         
Все-таки одна из приятностей юникса, кроме нетребовательности к ресурсам, есть способность полностью автономной работы - когда на этой неделе я устанавливал bind (и по старой виндовой привычке ребутнулся - "проверить, что все встанет"), заметил, что uptime составляет 39 дней. Цифра скромная по юниксовым меркам, и вызвана тем, что примерно месяц назад в лаборатории был ремонт, в ходе которого серверу рубанули питание. UPS, увы, не предусмотрен, потому без перезагрузки не обошлось :-) При этом уже несколько месяцев сервер не знает, что такое "клавиатура" или "монитор" - только я ингода зайду телнетом - запустить wget, или еще что-нибудь. Для виндов такая работа, увы, нетипична - время от времени виндам нужна нянька, чтобы тыкнуть в какой-нибудь диалог типа "ну, повис модем, ну да, пнуть его и дальше, и нечего меня спрашивать" или перегрузиться потому, что "винда устала и больше работать не хочет, и так уже больше суток на посту".
          Уфф. А на этой неделе я наконец-то поставил bind (DNS под FreeBSD). Тут уже без поллитра (и знакомого сисадмина) не разберешься (тем более, что мне был нужен primary NS, о настройке которого в мане сказано примерно следующее: "мы бы вам не советовали настраивать primary zone server, если вы не прочитали все соответствующие RFC (список прилагается), не поняли все, что там написано, или не в курсе, к каким ужасным последствиям может привести..."). Впрочем, primary NS нужен не так уж чтобы и часто. Но нужен. Например, чтобы поиметь домен не на да.ру, потратившись при этом только на пиво знакомому админу, поставившему у себя secondary NS :-)
         
Вот, в общем, и все. Ах да. Планируются небольшие изменения с организацией "текущего" выпуска (до сих пор текущий выкладывался как index.html (точнее, как today.html, с соответствующей заточкой httpd), сейчас я хочу сделать redirect из index.html в соответствующий issueXXYYZZ.html). Будем надеяться, что сие пройдет безболезненно :-)
          Не прошло и месяца с момента выхода Post-SP6 фиксов к NT, как вышел и сам SP6. В списке рассылки NTBUGTRAQ даже было письмо, объясняющее, что выход Post-SP6 раньше SP6 не есть глюки пространственно-временного континуума в районе Редмонда, а всего-навсего новая политика микрософт по отношению к сервис-пакам, и это скорее всего будет повторяться в дальнейшем :-)




<<<

архив

>>>

Версия для печати.