Александр Рубин. Интернет-cервер под Linux
---------------------------------------------------------------
© Copyright Александр Рубин (rubin@alvis.ru)
Home page: http://www.alvis.ru/~rubin/
Системный администратор ЗАО "Альвис Плюс"
Статья опубликована в журнале Data-communications RE
Date: 29 Mar 1999
---------------------------------------------------------------
(Linux - свободно распространяемый UNIX клон, написанный с нуля Линусом
Торвалдсом (Linus Torvalds) с помощью большой команды добровольцев по всей
Сети.)
С начала 1998 года интерес к Linux во всем мире резко возрос.
Компьютерные журналы публикуют статьи про эту ОС и интервью с ее Линусом
Торвалдсом. Под Linux были "портированы" практически все коммерческие
системы управления базами данных: Interbase, Ingres, Informix, Oracle, DB2 и
другие.
Коммерческие производители софта и железа начали серьезно относится к
Linux. Сначала IBM, а потом Compaq заявили о выпуске своих серверов
BrandName с ОС Linux.
О всплеске интереса к Linux в России можно судить по статистике
поисковой системы Rambler. В списке самых "запрашиваемых" слов (Top 100
Search Words) слово "linux" стоит на втором (!) месте, в то время как "nt" -
на 40. И это при том, что полгода назад слова "linux" вообще не было в этом
списке.
Кейт Доусон (http://www.tbtf.com/archive/0138.html#s03) еще в феврале
1998 опубликовал информацию IDС о том, что число установок Linux во всем
мире достигло порядка 7 млн. Цифра, сравнимая с количеством установок NT.
В России (как и во всем мире) разные клоны UNIX традиционно
используются Интернет- провайдерами. Крупные провайдеры работают на серверах
Sun, более мелкие - на свободно распространяемых UNIX: FreeBSD и Linux
В качестве Internet сервера Linux предоставляет все необходимые
возможности: почтовый сервер, web-сервер, прокси-сервер, dns и news-сервера,
развитые средства маршрутизации. Все это может хорошо работать на одной
машине.
Linux не сильно требовательна к "железу". Небольшой маршрутизатор на
Linux может успешно работать на PC с 486 процессором. Такой сервер может
маршрутизировать TCP/IP в сети из 10-20 а то и больше машин с каналом в
Интернет 64-128к.
В Linux существует понятие дистрибутива и ядра. На самом деле Linux -
это только ядро. Дистрибутив - это поставка ядра Linux и прикладных
программ, поставляемых с ядром. Один из самых популярных дистрибутивов Linux
- RedHat (последняя версия - RedHat 5.2). Практически во все новые
дистрибутивы входит основной набор серверных программ. В RedHat входит Mail
сервер sendmail, web-сервер Apache, DNS-сервер named.
Sendmail - является традиционным для UNIX SMTP-сервером. Несмотря на
некоторые трудности в конфигурировании - это надежное средство работы с
почтой. Основное достоинство sendmail - гибкость. В sendmail можно настроить
практически все что нужно: алиасы, сложный форвард, несколько виртуальных
серверов, защита от спама, ограничения размера почтового ящика и многое
другое. Для Linux также существуют также другие smtp сервера (Qmail, Smail
Zmail и др.)
По статистике NetCraft (http://www.netcraft.com/Survey/) web - сервер
Apache работает на 53% всех серверов в Интернет
По результатам исследований Алексея Тутубалина, создателя русского
Apache (http://www.lexa.ru/ru-survey/) и Валерия Коржова
(http://ruc.osp.ru/igor/spider.html) Apache установлен на 74% и 72 %
русскоязычных Интернет -серверов. (Данные на декабрь 1998 года). Всего
Алексей Тутубалин исследовал 9193 российских Web серверов, а Валерий Коржов
- 8099. Русский Apache, согласно Тутубалину, установлен на 53% серверов.
Успех сервера Apache в всем мире, по мнению СomputerWeekly, (N6, 1998,
c.1,20,46) основан на трех составляющих
Apache распространяется бесплатно, причем бесплатно распространяется не
только двоичный код, но и исходный текст. Это обеспечивает серверу
исключительную гибкость. Архитектура Apache отличается модульностью, что
также облегчает настройку.
Apache часто обновляется. Первая версия появилась в декабре 1995 г. и с
тех пор разработчики несколько раз переписывали ядро системы заново в целях
усовершенствования продукта. Кроме того, хотя коллектив разработчиков Apache
официально не берет на себя обязательств по обслуживанию пользователей, на
практике качество сервиса оказывается гораздо лучшим, чем у коммерческих
продуктов конкурентов.
Быстродействие сервера. Начиная с версии 1.2 Apache поддерживает
протокол HTTP 1.1, который выполняет загрузку Web-страниц в 4 - 8 раз
быстрее, чем HTTP 1.0. Компании Microsoft и Netscape реализовали HTTP 1.1
гораздо позже, чем группа разработчиков Apache.
(Небольшой сравнительный анализ, правда несколько устаревший, некоторых
WWW серверов, а также полный список всех известных серверов Web можно найти
в Библиотеке Мошкова,
http://kulichki.rambler.ru/moshkow/WEBMASTER/serwerswww.txt)
Apache, вернее его русский вариант (Russian Apache) - это, де-факто,
стандарт для русскоязычного Web-сервера.
(Последняя версия - 1.3.3 PL27.3, можно бесплатно взять с
http://apache.lexa.ru/)
Именно в Русском Apache впервые появилась серверная перекодировка "под
клиента", то есть вывод Web -страницы в той кодировке, которую поддерживает
операционная система и броузер. Последние версии Русского Apache содержат
развитые средства работы с русским языком: возможность задания разных
кодировок для разных директорий на сервере, перекодировка "под клиента",
задание разных префиксов или директорий для разных кодировок (например,
http://www-win.company.ru и http://www-koi.company.ru или http://www.
company.ru/win и http://www.company.ru/koi). Перекодируется также
информация, поступающая от клиента (запросы GET, PUT, POST).
Основу русифицированной версии составляет Web-сервер Apache к которому
добавлен ряд новых функций. Кроме перекодировки русских букв к новым
функциям относятся:
Выдача правильных значений параметра "Content-Type:- Charset=" в
соответствии с указанным согласованием;
Вывод при необходимости заголовка "Expires:" для proxy-серверов
корректное кэширование Web-страниц (если proxy-сервер совместим с
протоколом HTTP 1.1).
По "настраиваемости" и гибкости данный сервер, несомненно занимает одно
из первых мест. Сравнение с Microsoft Internet Information Server (IIS) 3.0
явно не пользу Microsoft. Например, такую простую вещь как задание двух
вариантов стандартного документа сервера (например, index.htm и index.html
или index.cgi) в IIS сделать стандартными средствами нельзя.
В Apache можно настроить практически все. При этом настройку может
производить как администратор сервера (с помощью файлов настройки или даже с
помощью графической утилиты), так и конкретной пользователь (с помощью
специального файла (обычно .htdocs), если администратор разрешил эту опцию).
Ключевые возможности Apache
Поддержка виртуальных хостов (virtual hosts) - позволяет держать на
одной машине несколько виртуальных web- серверов.
Развитая система аутентификации - позволяет ограничить доступ к разным
директориям на основе файла паролей или по IP адресу.
Работа с CGI скриптами, вcтроенный интерпретатор Perl
Модульность системы
Модульность Apache позволяет не только подключить свои модули, но и
даже дописать недостающие функции.
Валерий Коржов (http://ruc.osp.ru/igor/spider.html) описывает случай,
когда во
время тестирования типов Web серверов сервер города Сызрани
(http://www.syzran.ru) ответил, что он называется Syzran. Когда же
исследователи заглянули на основную страницу сервера, они обнаружили
картинку "Powered by russian Apache", то есть это оказался все тот же
Apache, но переделанный под свои нужды.
Вся информация о том, кто и когда посещал ваш сервер и какие директории
на нем смотрел сохраняется в log файлах (обычно access_log, error_log и др).
Существует множество программ (скриптов), анализирующих Log файлы и выдающих
отчеты (обычно в формате HTML) с графиками. Большая коллекция ссылок на
такие программы представлена на сервере Cgi-Resources
(http://www.cgi-resources.com/). Скрипты на языке Perl, анализирующие Log
файлы, можно найти в разделе Logging Accesses and Statistics
(http://www.cgi-resources.com/Programs_and_Scripts/Perl/Logging_Accesses_and_Statistics/)
Proxy - сервер squid обеспечивает две основные функции, необходимые для
работы корпоративной и распределенной сети: ускоряет работу с Интернет (www,
ftp) для пользователя и дает возможность администратору ограничить
пользователю доступ к разным ресурсам Интернет.
(Squid, последняя версия 1.22, можно бесплатно взять с
http://squid.nlanr.net/Squid/)
При использовании squid можно на 20-30% снизить нагрузку на канал в
Интернет, что при использовании низкоскоростных каналов (модем 33.600,
выделенная линия 64 кб) или большого количества пользователей ведет к
ускорению работы для каждого пользователя в отдельности.
Сервер squid позволяет ввести ограничения на доступ пользователям к
разным сайтам, при этом разные пользователи могут обладать разными правами.
Можно сделать и так, что у каждого пользователя есть свой логин и пароль на
доступ в Интернет и работать он сможет с любой машины в локальной сети. В
это случае администратор может отследить кто какие ресурсы использует.
Дополнительные функции Squid
Иерархия Proxy
Редиректоры (Redirectors)
"Прозрачный" Proxy
Squid позволяет создавать иерархию Proxy (иерархию кэшей). Иерархия
кешей это структура кеширующих прокси-серверов расположенных логически как
родительский/дочерний и братский узлы, таким образом, что кеши
ближайшие к каналу в Internet являются родителями тем, которые находятся
дальше от точки входа в Internet. При обращении пользователя к Proxy
серверу, Squid ищет информацию сначала в своем кэше, а затем,
последовательно, во всех кэшах иерархии. Можно зарегистрировать свой сервер
Squid в базе NLANR (http://ircache.nlanr.net/Cache/joining.html) и выбрать
себе подходящие родительские/дочерние узлы. Если ваш провайдер Интернет
использует Proxy сервер можно попросить его включить ваш сервер Squid в его
иерархию.
Преимущества иерархического кеширования заключаются в снижении загрузки
канала, уменьшении времени доступа, лучшей устойчивости к сбоям.
Squid Redirectors "подменяют" одни документы другими. Эту функцию можно
использовать для блокирования доступа пользователей к различным серверам
(например, содержащим информацию "для взрослых"). Также представляет интерес
возможность фильтровать рекламу (баннеры) на WWW страницах.
Андрей Ковалев (http://ethereal.ru/~avk/anti-ad.html) предлагает
простой скрипт (на Perl) для Squid, позволяющий фильтровать рекламу. Его
идея основана на том, что URL большинства "баннерных служб" (Reklama.Ru,
InterReklema и др) хорошо известны. Таким образом скрипт вызывает Squid
Redirectors и вместо загрузки программы, генерирующей баннер, загружает
любую картинку с локального сервера. Благодаря этому скрипту можно сильно
снизить нагрузку на канал в Интернет.
"Прозрачный" Proxy позволяет пользоваться Proxy сервером без настройки
браузера. По умолчанию Squid работает через порт 3128, поэтому чтобы
пользователь работал через Proxy ему необходимо настроить соответствующие
опции Браузера. Сервер Squid можно настроить на работу через порт 80, после
этого весь стандартный http трафик пойдет через Squid.
Анализ Log файлов
На странице http://squid.nlanr.net/Squid/Scripts/ перечислены ссылки на
программы, позволяющие анализировать Log файлы Squid. Программа sqmgrlog
(http://www.orso.x5.net/index.html) генерирует отчет (в HTML формате) по
использованию Интернет (кто куда "ходил" по http и ftp) на основе файла
access.log. Если в Squid используется аутентификация, в отчете вместо IP
адресов будет присутствовать имя пользователя. Отчет можно разместить на Web
так, чтобы его можно было читать через WWW.
Все рассмотренное выше программное обеспечение распространяется в
исходных кодах и будет также работать под большинством реализаций UNIX, как
некоммерческих (например FreeBSD), так и коммерческих.
При использовании FireWall (см ниже) proxy-сервер позволит
пользователям закрытой корпоративной сети работать с WWW и FTP.
Одна из ключевых возможностей Linux, встроенная в ядро системы, - это
так называемые функции "маскарадинг" (IP Masquerade) и "файерволинг"
(Firewalling).
IP Masquerade - вариант Proxy сервера.
С помощью IP Masquerade можно организовать подключение к Интернет машин
в локальной сети через один IP адрес(через одну телефонную линию). В этом
случае Linux-машина используется как Gateway. Машина-gateway подключается к
Интернет с помощью модема. На все машины в локальной сети назначаются
"фиктивные" IP-адреса (из свободной зоны, например c 192.168.0.1 по
192.168.0.10). После этого все машины в данной локальной сети получают
доступ в Интернет через gateway. IP Masquerade - это, также, хорошее
средство защиты сети, так как все машины, кроме gateway, не видны из
Интернет.
С помощью возможностей "файерволинга" можно организовать firewall
сервер на базе Linux. Существуют два типа Firewall сервера
IP Firewall (или Firewall с фильтрацией пакетов)
Proxy сервер
Собственно говоря, первый тип сервера обеспечивает защиту сети от атак
извне, а второй - позволяет устанавливать ограничения для пользователей
внутренней сети.
IP Firewall построен на фильтрации пакетов. С помощью firewall этого
типа можно фильтровать пакеты, на основе данных о портах, сети отправителя
пакета и информации о типе пакета. Например, можно закрыть все порты за
исключением нескольких. После этого все пакеты, посланные на закрытые порты
будут отражены firewall-сервером.
Proxy сервер обеспечивает "непрямой" выход в Интернет через Firewall. С
помощью Proxy сервера пользователь работает с ресурсами Интернет не
напрямую, а через сервер. Таким образом для каждого пользователя можно
задавать список доступных им ресурсов Интернет.
Реализация Firewall сервера для Linux может включать в себя все три
компонента:
IP Masquerade
IP Firewall
Proxy сервер (Squid)
С помощью IP Masquerade мы закрываем все компьютеры в локальной сети
(кроме серверов) от атак извне (другими словами, мы их делаем невидимыми,
задав им "несуществующие" адреса и подменяя их на адрес данной машины). С
помощью IP Firewall мы защищаем сервера (важные сервисы Интернет, например
www, ftp и другие) от "направленных" атак хакеров. С помощью Proxy сервера
мы, даем возможность пользователям закрытой корпоративной сети работать в
Интернет, сокращаем интенсивность обращения к внешним ресурсом за счет
кеширования данных, а также устанавливаем для них ограничения.
Контроллер домена Windows NT
Одна из основных функций Windows NT - контроллер домена и подключение
сетевых дисков с Windows станций. После выхода системы "Samba Server 2.0"
эта возможность теперь есть и для Linux. С помощью этой системы каждый
пользователь корпоративной сети может работать со своей рабочей директории
на сервере Linux как с обычным сетевым диском Windows. Можно редактировать и
сохранять файлы (например html документы) прямо на сервере, не прибегая к
услугам Ftp.
Точно также с консоли Linux можно получить доступ к сетевым дискам в
сети Microsoft.
На каждую директорию средствами операционной системы можно установить
дисковые "квоты" и после этого использовать Linux как файл-сервер.
Интеграция между Linux и Novell может осуществляться путем:
Монтирования томов Novell на Linux
Использование сервера печати Novell на Linux
Маршрутизации протокола IPX
Эмуляторы Mars
Caldera
Недостатки
Как и любое другое сетевое решение Linux- сервер не лишен недостатков.
Основной его недостаток - отсутствие большого количества прикладных
программ, не относящихся к Интернет.
Еще год назад под Linux не было "настоящих" систем управления базами
данных. Сейчас c серверным ПО эта проблема практически решена. На
сегодняшний день под Linux нет стандартных средств документооборота
(GroupWare) и систем планирования рабочего времени (Shreduling).
И хотя IBM заявляет, что планирует выпуск системы документооборота
Lotus Notes под Linux, рассчитывать на появление большого количества такого
рода продуктов, наверное, не стоит. Однако, новое ПО постоянно появляется
Опыт практической эксплуатации Linux
Автор статьи успешно использует Linux в качестве платформы для Интернет
сервера и маршрутизации. Интернет- сервер (IBM PC, Pentium II, 64мб RAM, 3гб
HDD IDE) обслуживает порядка 60 машин в распределенной гетерогенной сети.
Сеть включает в себя два сегмента, связанных по выделенной линии 64к.
Первоначально, в качестве Интернет- сервера использовался сервер под
NT. (Web- сервер - Microsoft Internet Information Server, Mail Server -
Lotus Notes).
Сервер под NT использовался также как сервер документооборота Lotus
Notes.
В течении 3-х месячной эксплуатации Mail Server работал очень
неустойчиво, часто не выдерживал большой нагрузки (прием пересылка больших
писем), чем доставлял много хлопот системным администраторам.
В основную поставку Lotus Notes не входило система защиты smtp сервера
от "спэма", что позволило недоброжелателям из Интернет пользоваться данным
сервером для рассылки своего "спэма". В результате сервер был включен в
"черный список".
Все эти проблемы можно было решить путем установки более мощной машины
(2-х процессорного Pentium -II) и покупкой дополнительного программного
обеспечения. Однако все это требовало серьезных финансовых затрат.
Было принято решение перейти на сервер Linux.
На сервере Linux установлен Web -сервер (Apache Rus.), Ftp- сервер,
прокси-сервер (Squid), Mail-сервер (Sendmail), Dns-сервер (Named),
Samba-server.
Web-сервер отвечает за работу 3 виртуальных серверов, для каждого из
которых ведутся свои log-файлы. За разные директории сервера отвечают
различные сотрудники. Прайс-листы сервера обновляются менеджерами по
локальной сети с помощью Samba Server. Другие директории обновляются
сотрудниками по Ftp.
Прокси-сервер был установлен для контроля за доступом к Интернет и
"разгрузки" выделенной линии (64к). После эксплуатации сервера в течении 6
месяцев удалось "разгрузить" канал в Интернет на 30-50%.
Сеть, как уже говорилась, состоит из двух сегментов, связанных
выделенной линией (точнее ISDN каналом).
За маршрутизацию TCP/IP из (в) Интернет и внутри первого сегмента
отвечает маршрутизатор Cisco. Один канал (ISDN B1, 64к) отведен на Интернет,
второй (B2, 64к) обслуживает выделенную линию между сегментами сети.
Во втором небольшом (10 машин) сегменте сети установлен второй Linux
сервер, которые используется как маршрутизатор, firewall и mail- сервер.
Этот сервер маршрутизирует трафик внутри своей локальной сети, в
Интернет (через выделенную линию и Cisco) и в локальную сеть первого
сегмента.
(см. Рисунок) /* здесь должна быть схема сети */
Маршрутизация почты между сегментами реализована через Алиасы
(Aliases). Главный сервер поддерживает общий почтовый домен (company.ru). В
конфигурации Маil -сервера записано, что почту пользователя из второго
сегмента надо пересылать на Linux сервер, находящийся во втором сегменте.
Пользователи сегмента 2 скачивают почту со своего локального сервера,
что также препятствует "загрузке" выделенной линии.
Точно также, когда пользователь второго сегмента отправляет почту,
локальный сервер пересылает ее на основной сервер. Если почта предназначена
пользователю локальной сети основной Mail сервер просто копирует письмо в
соответсвующюю директорию на сервере. Если же письмо адресовано пользователю
Интернет, Mail сервер отправляет его через SMTP.
Mail - сервер на главной Linux -машине обслуживает несколько почтовых
доменов.
Итак, вкратце, достоинства Linux:
Большие серверные возможности
Гибкая настройка и управление.
Бесплатное распространение.
Исходя из всего вышесказанного, Linux - может быть хорошим и недорогим
решением для Интернет и даже корпоративного сервера.
Информация о ПО, рассмотренном в этой статье
Русский Apache: http://apache.lexa.ru/ Можно бесплатно скачать самую
свежую версию. Документация, "Как настроить?", FAQ.
"Дистрибутивный" Apache: http://www.apache.org
Squid: http://squid.nlanr.net/Squid/ Свежая версия системы,
документация, FAQ
Squid FAQ на русском: http://www.lgg.ru/~linux/books/Squid-faq.html
Документация по Linux в Интернет:
Русскоязычные ресурсы:
Телеконференции:
fido7.ru.linux, fido7.ru.unix.linux - "основная" русскоязычная
конференция по Linux. Рассматриваются все вопросы связанные с ОС Linux от
программирования до настройки.
WWW:
http://www.linux.org.ru - Новости, 10mb документации на русском языке,
переводы Man Pages, HowTo, FAQ, ссылки на другие ресурсы по Linux, поиск по
серверу. Есть также Web форум, где можно задать свои вопросы и получить
ответы на них. Один из самых популярных сайтов про Linux
http://kulichki.rambler.ru/moshkow/ - "юниксоидам всех стран". Большая
коллекция ссылок на ресурсы по UNIX и LINUX (книги М.Уэлш. Инсталляция Linux
и первые шаги, А.Костарев. Настройка Linux Интернет сервером,
Конфигурирование ядра Linux. (пер.А.Костарев) Владимир Водолазский. Путь к
Linux(для новичков) и др.)
http://www.linux.opennet.ru/ Большой каталог ссылок (с описанием) на
Linux ресурсов, обзоры программ, статьи. Удобный интерфейс, рубрикация,
поиск.
http://xtalk.price.ru/linux/ Страница Бориса Тоботраса. Всякая всячина
про Linux, Перевод Linux Meta-FAQ, украинизация Linux, ссылки
http://www.dkd.ot.lt/hompag/linux/koi8/Cover/Cover.htm Линукс-Чайник.
Введение в Linux, "Где взять?", "Как установить?", новости, полезные советы.
http://linuxfocus.nevod.ru/Russian/ Журнал LinuxFocus по русски. "
LinuxFocus - в настоящий момент это единственный многоязыковой электронный
журнал посвященный операционной системе Linux. LF создается и развивается
усилиями многих добровольцев со всего мира. "
http://www.nevod.ru/linux/ - База данных русифицированного программного
обеспечения (Проект), Ежедневные новости Linux от НЕВОД'а, много иллюстраций
(схем), Русский FreshMeat (новости Linux)
http://www.irwin.ru/linux/ - Каталог программ, проектов, сайтов,
документации. Подборка ссылок на русские ресурсы с описаниями
http://www.citforum.ru/operating_systems/unix.shtml - Подборка статей и
книг по Unix и Linux
http://linux.inf.ru/ Linux Information Site: Linux Gazette,
документация по-английски, FTP архив. Довольно неудобный текстовый
интерфейс.
Англоязычные ресурсы:
Телеконференции:
alt.os.linux - "Альтернативная" (неофициальная) конференция по Linux
comp.os.linux.* - группа конференций, каждая из которых посвящена
определенному аспекту ОС. Администрирование, установка, "железо", вопросы и
ответы и др.
WWW:
http://www.linux.org - Официальный сервер Linux
http://www.linuxhq.org - Информация про ядро Linux
http://sunsite.unc.edu/LDP - Linux Documentation Project
(Документация). Один из самых известных сайтов.
http://slashdot.org - Новости Linux
http://www.freshmeat.net - ПО под Linux
Дистрибуция
http://www.redhat.ru - Один из самых известных и популярных
дистрибутивов Linux
http://www.slackware.com/ Дистрибутив SlackWare
http://www.suse.de - Дистрибутив S.u.S.E, немецкая разработка
http://www.cheapbytes.com/ - большое количество различных дистрибутивов
Linux на CD (Debian, SlackWare, RedHat, OpenLinux и др.)
В России
http://www.vinchi.ru/ Vinchi Group. RedHat Linux 5.2 на CD + Некоторая
русская документация, переводы HOW-TO, все необходимое для русификации (10$)
http://cheapbytes.homepage.ru/ Российское представительство CheapBytes
Александр Рубин
Системный администратор
ЗАО "Альвис Плюс"
(rubin@alvis.ru)
Last-modified: Mon, 29 Mar 1999 16:46:12 GMT