31 октября 1999


          слева, где кнопочки висят, обратите внимание - между dz и leaderом зелененькая кнопочка такая появилась.нижегородское компьютерное обозрение [http://www.computer.nnov.ru]. почти конкурент, однако :-)
         свершилось. долго я убеждал себя, что настройка dns - это просто, что с da.ru [http://www.da.ru] пора сваливать,и наконец-то это произошло. первичный ns стоит у меня, вторичный - на ns.kis.ru [http://www.kis.ru], домен делегирован...в-общем, мой новый адрес - http://dibr.nnov.ru [http://dibr.nnov.ru].
         и в связи с этим, вспоминая cooler [http://cooler.irk.ru]овские "сисадминские байки" хочетсясделать отдельный выпуск, практически без новостей (ну, может, парочку, самых интересных).сделать выпуск про сервер.
         есть такой жанр в кино, да и не только - "the making of..." - когда по следам успешного фильма,музыкального клипа, спектакля или еще чего-нибудь выпускается коротенький фильмик с не вошедшими в фильм кадрами,подробностями вроде "как мы сделали вот этот эффект",неудачными дублями, ляпами актеров и прочим. у меня, конечно, не кино, но и я очень надеюсь,что сие чтение будет не только развлекательно, но в чем-то и полезно.
         итак. цветом буду выделять то, о чем я пишу: таким цветом - просто история создания сервера, таким - что-нибудь потенциальнополезное, а таким - свои эмоции на тему, как все криво :-)
         
а началось все довольно прозаично. датой начала можно довольно точно назвать июль 98 года.тогда, имея интернет на работе захотелось мне отвести немногоинтернета домой. задача вполне понятная, вполне классическая, и решения в общем-то известны.поскольку выделенной специально под это машинки у меня тогда не было, работали все подwindows 95 и изменить это было нереально (пересадите-ка человека, привыкшего к винвордупод старофис для линукса - он же с ума сойдет), пришлось строить систему под windows 95.
         выглядело все просто - dial-in сервис из пакета microsoft plus (со своими классическми граблями- хоть он и сервер, но адрес клиенту не отдает, да и проверяет почему-то только пароль, но неимя пользователя) и wingate [http://wingate.deerfield.com/] в качестве прокси. с задачей своей (отвечать на звонки и давать мнеинтернет) эта штука более-менее справлялась. при условии, что ее было кому "пнуть" ресетом,когда у wingate или у ms plus отъезжала крыша. поскольку крыша отъезжала обычно невовремя,был спаян "механический мужик", принудительно ребутивший всю эту конструкцию в 9 часов вечера.
         
хоть оно в принципе и работало, рекомендовать такую конструкцию для массового повторенияне могу однозначно - слишком часто я обнаруживал с утречка винду в любимой позиции - синий экранс надписью "мне плохо". да и времена wingate, при всем его бурном прошлом, уже прошли -для раздачи интернет по офису/домашней сеткеимеет смысл ставить либо winroute [http://www.winroute.com/] либо sygate [obz001.html] - оба умеют nat,что намного приятнее чем прокси, а использовать windows 9х как dial-in сервер... лучше ужприкупить памяти и поставить nt. а еще лучше... но об этом потом.
         
ни о каком вебе и страничках речи не было, лишь бы хотя бы это кое-как работало. а через полтора месяцая удрал в трехмесячную командировку, оставив на "автопилоте" домашний фидошный узел,работавший теперь через этот новый инетовский канал. вернувшись я узрел... в-общем,сетевыми решениями на базе 95 не занимаюсь теперь из принципа - винда уделаласебя до потрясающего состояния "мы грузимся, показываем десктоп и засыпаем с песочными часиками".винда была, естественно, переустановлена (намного лучше ей от этого,впрочем, не стало), а я задумался о чем-то большом и светлом, о ka9q [http://ftpsearch.city.ru:8000/ftpsearch?query=ka9q] например, или о pcroute/dos [http://ftpsearch.city.ru:8000/ftpsearch?query=pcrte]...
         
не все помнят, но в те времена, когда 286 считался весьма крутым компьютером, интернет ужевовсю существовал, и его уже было нужно чем-то роутить, диалапить и делать прочую серверную мишуру- почту, скажем, релэить. поскольку на cisco routerы а равно и на большие машины с юниксомденег не всегда хватало, радиолюбителем филом карном был разработан (и огромной толпойдругих любителей - доведен до приличного уровня) пакет ka9q [http://ftpsearch.city.ru:8000/ftpsearch?query=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 [http://ftpsearch.city.ru:8000/ftpsearch?query=pcrte].она в принципе умела nat, более того - это и было ее основным предназначением, но какое-тоощущение корявости заставило меня посмотреть в сторону юниксообразных систем,и приобрести по случаю с рук 486sx25/4mb/540mb за $60. для сервера, чиста в натуре. там разберемся -ka9q, pcroute или еще чего.
         кстати, до этого момента не знал, что 486 бывают на 25(!) мегагерц. век живи - век учись.
         
вообще-то любопытная складывается ситуация. несколько лет назад при слове "сервер" представлялосьчто-то большое, белое и блестящее (или наоборот - компактное, черное и приятное на ощупь),но неизменно за сумасшедшие деньги. "клиентская" же машинка - недорогой терминал к "серверу",или "писишка" - вешь тогда тоже недешевая, но с серверами по цене несравнимая.
          сейчас же сплошь и рядом ситуация обратна. секретарше на стол фиг укупишь что-нибутьмельче 400 целерона с 32 метрами памяти (а если и найдешь на рынке или с рук что-то помельче, то любимый офис с солитером и "скрепышом" заставит почувствовать боль за бесцельно проведенные в свопе годы:-)).в то же время небольшой (подчеркну - небольшой. не рамблер [http://www.rambler.ru], не яндекс [http://www.yandex.ru] и не альтависта [http://altavista.com], а скажем, dibr [http://dibr.nnov.ru])сервер вполне нормально будет работать на 386/8мб, а то и более древней технике. парадокс, однако."тонкий клиент" становится толще "мелкого сервера".
         
с некоторой робостью я решил все-таки сделать шаг вперед - и поставить юникс. точнее - freebsd [http://www.freebsd.org].про то, что я думаю о линуксе повторяться не буду, а среди фришных юниксообразных систем,способных работать на не особо сильных духом тачках выбирать особо не из чего.кстати, я в курсе, что freebsd [http://www.freebsd.org] не ставится на 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:cdromvide-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 [http://cooler.irk.ru]а или dz [http://www.dz.ru] - чем я хуже, в конце концов?
         поскольку подручный сервер тогда имел целых четыре мегабайта памяти, ставить апач я не рискнул - тяжеловат,да и не особо нужен, и выбор пал на маленький (но вполне функциональный) веб-сервер thttpd(раздают его на www.acme.com [http://www.acme.com/software/thttpd/]). установка"по бумажке" прошла гладко, небольшая доработка напильником (настройка hhtp-хидеров) тоже была несложной -ввиду наличия исходников. после этого началось изучение html и методов автоматизации его создания(я вовсе не фанат набивать все руками, равно как и не считаю нормальным при изменении двух букв в кодепоследовательно открывать полсотни страниц в фронтпейдже и править там эту пару букв.
         выбор средства автоматизации остановился на макропроцессоре m4 (используется, например,в большинстве юниксов для автоматической генерации конфига sendmailа - sendmail.cf).теоретически :-) m4 есть только для юниксов, практически же cygnus solutions [http://www.cygnus.com] выпустиласовершенно замечательный набор gnuтого утиля, "портированного" (перенесенного, а не то что вы могли подумать)под win32. практически - m4 есть язык сам по себе, "компилятор текста в текст", с возможностьюопределять свои макросы, ну, и все чем положено в языках. после этого я мог единожды создатьфайл с описанием того, как чего должно выглядеть(почти как "стилевой файл" в техе), и после изменения дизайна просто "пересобирать"все странички с новым файлом макросов - исходники выпуска не изменялись, а оформление автоматически генерилосьиз макросов стилевого файла.
         
сразу замечу - сейчас бы я так не сделал. поскольку изначально выбранный веб-серверне умел практически ничего кроме plain http и cgi, пришлось изворачиваться, и компенсироватьодну кривизну другой кривизной. сейчас бы я выбрал что-нибудь вроде php - тоже язык,с похожими возможностями, но интерпретация ведется на сервере в момент выдачи странички, чтопозволило бы избежать "пересборки" и перезаливки сайта на сервер целиком. впрочем...img height= и width= у меня сейчас подставляются автоматически довольно замухрежнымвызовом нескольких программ (alchemy+grep+cut), занимающим вполне заметное время на моем cel450a. одно дело,когда это делается раз в неделю дома, совсем другое - 100 раз в день при отдаче странички клиенту.не уверен, что на php я бы нашел достаточно элегантное решение. хотя - люди же как-то делают.может, и руками.
         то есть, если есть php - имеет смысл взвалить все что можно на него, если нет - можно искать что-то свое.
         
так оно и жило. до июня (точную дату не помню, а смотреть лениво), когда dibr был замечен иобозрен в cooler [http://cooler.irk.ru]е. вот тогда я и понял (придя утром на работу, и убедившись, чтосервер практически лежит, непрерывно шурша диском), что 4 мегобайта - это хорошо, но не очень.
         к 12 апреля [issue120699.html] сервер был экстренно проапгрейжен до 16 мегобайт памяти(дефицитнейшая вещь оказалась - "короткие" 32-пиновые simmы по 4мб штучка, пришлось покупать почти по цене антиквариата:))с тех пор и до сегодня dibr.nnov.ru [http://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 [issue101099.html#6] фиксов к nt, как вышел и самsp6 [http://www.microsoft.com/ntserver/nts/downloads/recommended/prem_sp6/updates.asp].в списке рассылки ntbugtraq даже было письмо [issue311099/letter.txt], объясняющее, чтовыход post-sp6 раньше sp6 не есть глюки пространственно-временного континуума в районе редмонда, а всего-навсего новаяполитика микрософт по отношению к сервис-пакам, и это скорее всего будет повторяться в дальнейшем :-)



оригинал страницы находится на http://dibr.nnov.ru/issue311099.html.(с) dibr
при перепечатке ссылка обязательна.<< * >>