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: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а или 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 не есть глюки пространственно-временного континуума в районе Редмонда, а всего-навсего новаяполитика микрософт по отношению к сервис-пакам, и это скорее всего будет повторяться в дальнейшем :-)






Архив dibr