Архивы: по дате | по разделам | по авторам

SOHO: Internet для всех,<br>или IP Masquerading vs. WinGate

Архив
автор : ОГАНЕС ИСААКЯН    04.05.1998

Хочу предупредить вас сразу: эта статья ни в коей мере не претендует на новизну темы - скорее наоборот. Технология подключения к "Сети сетей" давно не является тайной за семью печатями.

Ваша фирма хочет подключиться к Internet? - Никаких проблем. Первое, что вам нужно, - это канал передачи данных, второе - зарегистрированные IP-адреса. Армия Internet-провайдеров (ISP), а также количество разнообразных коммерческих предложений и технических решений на этом рынке растет "не по дням, а по часам". Тем не менее, до сих пор самой большой проблемой в Москве (а возможно, и в России) является "последняя миля". Для частных, а также крупных корпоративных пользователей решение более или менее ясно. В первом случае это тривиальный dial-up, во втором - существует много различных способов постоянного подключения, простейшие из которых - медная пара или беспроводной доступ. Но какой же можно найти выход, если в вашей фирме 10-20 компьютеров, с каждого из которых должны быть доступны Internet-услуги, но в то же время прокладка и последующая техническая поддержка "последней мили" нерентабельны? По-видимому, остается пользоваться тем же dial-up. Но при этом возникает другая проблема: с выделением достаточного количества зарегистрированных IP-адресов.

При нехватке зарегистрированных адресов вы, конечно, можете воспользоваться адресами, зарезервированными для частных сетей, но маршрутизация (передача данных) на такие адреса в Internet отсутствует. Таким образом, локальная сеть вашей фирмы оказывается отделена от Internet устройством firewall, то есть реально получать информацию из Internet может только один компьютер (имеющий зарегистрированный адрес и PPP-соединение с провайдером, далее - маршрутизатор/сервер).

Тем не менее, существует несколько схем, при которых почти все сервисы становятся доступны также и тем компьютерам, которые находятся за firewall.

Первая, и наиболее распространенная, применение прокси-сервера. Вы настраиваете свое клиентское ПО так, чтобы оно не получало всю информацию непосредственно, а запрашивало ее с компьютера, напрямую подключенного к Internet. Все остальные схемы (насколько мне известно) основаны на том принципе, что канал передачи данных в Internet однозначно определяется четырьмя параметрами: IP-адресом и портом отправителя, IP-адресом и портом получателя. Благодаря тому, что номера портов зафиксированы только для серверных приложений, а клиентское приложение может само выбирать номер порта при установлении соединения, мы получаем большой простор для деятельности. Кроме того, поставив в соответствие порт 25 на вашей шлюзовой машине порту 25 на какой-нибудь внутренней машине вашей сети (то есть просто передавая пакеты, приходящие к 195.14.33.199:25, на 192.168.0.2:25 и обратно), вы можете организовать на 192.168.0.2 SMTP-сервер, на самом деле не подключенный к Internet.

В "Компьютерре" #238 (тема номера - рецепты сетей) было предложено два решения с Windows 95/NT в качестве операционной системы для маршрутизатора: многоцелевой прокси-сервер со встроенным Socks 5 сервером WinGate и собственно Socks server. Оба эти решения показались мне не совсем подходящими для реализации поставленной задачи.

Что касается собственно Socks, то, по моему мнению, это просто не адекватное средство для решения подобных задач: основная мощь Socks заключается в реализации Kerberos и других мощных средств защиты в условиях firewall; кроме того, по признанию самого автора, для полноценной работы в Internet нельзя обойтись одним лишь Socks. WinGate, на первый взгляд, является более подходящим средством в данной ситуации, реализуя к тому же оба основных принципа: proxy и mapped links (рис. 1). Тем не менее, при более близком практическом знакомстве выяснилось, что WinGate обладает следующими недостатками:

1. Совершенно непонятно, по какой схеме выбираются из списка dial-up-соединения (например, у вашего ISP три различных номера, причем часто по первому в рабочее время дозвониться нельзя, а по второму можно, но бывает и наоборот), и приходится соединяться вручную.

2. Невозможно настроить WG dial-up на установление связи только на скорости выше некоторого порогового значения (например, 24 кбит/с).

3. Ощутимо медленный отклик http proxy cache (возможно, потому, что не реализован какой-нибудь механизм сортировки для быстрого поиска - весь кэш хранится сплошным массивом в одной директории). (Тестирование проводилось на Pentium 166, SDRAM 32 Мбайт, материнская плата ASUSTeK TX97-XE, жесткий диск IDE Quantum FB SE емкостью 4,3 Гбайт.)

4. Довольно маленькие тайм-ауты запроса http: в результате все мои попытки загрузить страничку Free WinGate Forum с сервера WinGate заканчивались ответом "Document contains no data".

5. Отсутствие гибкой системы тайм-аутов отключения модема и критериев его включения (очень неудобно в том случае, когда вы пользуетесь каким-нибудь редким Internet-приложением или у вас разнородная сеть).

6. Очень нестабильная работа WinGate engine.

Кроме того, явно излишняя скупость системных журналов даже в режиме Debug, а также далеко не полная документация (большую часть которой составляют примитивные лирические отступления на тему TCP и UDP) делают инсталляцию и сопровождение WinGate нетривиальными для человека, не желающего вникать в тонкости. Я даже не говорю о том, что системные журналы составлены так, что вам никогда не узнать, кто же это из ваших гадких пользователей вчера провисел 10 часов на линии (и чем же это он там занимался?).

Исходя из тех соображений, что а) маленькая фирма не может позволить себе иметь большой штат сисадминов, б) не может вкладывать крупные суммы в маршрутизатор и в) зачастую в небольшой фирме одному человеку приходится выполнять множество разнообразных задач, - я хочу предложить свой вариант: Linux + IP Masquerading + Diald +... ("Свой" означает не "разработанный мною", а "успешно работающий у меня дома".)

IP Masquerading

Начну свою "рекламную кампанию" с главного: этот вариант, в отличие от вышеописанных, не требует установки дополнительных драйверов и программ на рабочие станции и специальной сложной настройки клиентского программного обеспечения.

HTTP, HTTPS, Telnet, FTP, RealAudio, SMTP, NNTP, POP3 и множество других протоколов работают без каких-либо неудобств (проблемы с двумя каналами в FTP никуда не исчезают, но, например, Cute FTP работает в Firewall PASV mode. Или при наличии специального модуля осуществляется поддержка командного канала в канале данных; впрочем, этого я не проверял). Вообще, по количеству поддерживаемых нестандартных приложений рассматриваемый вариант сильно превосходит WinGate. В целях экономии вашего времени я не буду перечислять все это буйство красок виртуальной реальности :-), тем более что половиной из них я никогда в жизни не пользовался, а о некоторых, к своему стыду, даже не слышал; приведу лишь несколько самых распространенных примеров: из chat - IRC и ICQ, SSH (secure shell - "безопасный" аналог telnet), PPTP (Microsoft point-to-point tunelling Protocol) и NT Logon, а также VDOLive , Real Player, Webcam32. Правда, некоторые специфические chat-программы (например, Microsoft NetMeeting) действительно работают только в одну сторону, но если вы можете побороть это с помощью Socks, то вперед - к вашим услугам sockd (Socks-демон для Unix). Полный же список приложений можно найти по адресу http://ipmasqapps.home.ml.org/.

Вообще, процесс подключения какого-нибудь нового приложения (в том редком случае когда оно не работает сразу) заключается в добавлении одной-двух строчек в masquerading policies; в самых сложных случаях нужно скачать какой-нибудь patch и перекомпилировать ядро, что тоже не сложно. Кроме того, вы получите patch для нового вида Internet-сервиса гораздо быстрее, чем любая коммерческая фирма выпустит специальный proxy для Windows 95. Еще вы можете захотеть установить squid - кэширующий прокси-сервер для HTTP и FTP. Он отличается от всех своих "коллег" поразительной гибкостью и скоростью работы. Показательно, что именно он установлен у многих крупных ISP, но при этом не надо думать, что это программа для суперсерверов - я использую ее у себя дома. По статистике, кэширующий proxy-сервер со сравнительно небольшим объемом кэша (максимум 100 Мбайт для рассматриваемого случая) перехватывает до 30% HTTP-запросов, таким образом, существенно уменьшая ваш трафик. В результате а) вы сильно увеличиваете пропускную способность вашего модема и б) пользователь WWW получает информацию из локального кэша на порядок быстрее, чем из Сети. У него есть также еще один интересный option: если в вашей локальной сети есть Web-сервер, к которому нужно организовать доступ извне, то squid может работать в качестве HTTP-акселератора. Это означает, что вам не надо открывать дополнительных портов для доступа к серверу - пользователям извне кажется, что Web-сервером является шлюзовая машина. Еще один трюк, который может быть интересен для маленькой фирмы, - mail-сервер, переписывающий заголовки нелокальной почты (рис. 2). Таким образом, каждый ваш сотрудник может пользоваться собственным "виртуальным" почтовым ящиком e-mail при наличии всего одного почтового ящика у вашего ISP.

Впрочем, на тему Linux и так написано довольно много толстых книг, так что не будем углубляться в дебри.

Сопровождение

Немного об администрировании: грамотное администрирование есть отсутствие оного. Пусть работает компьютер, ведь для этого они и придуманы. Это я о скриптах, которых так боятся многие. Согласитесь, приятно в ответ на просьбу босса подготовить статистический отчет об использовании сети написать коротенькую программу, которая, просматривая системные журналы, посылает ему по почте такой отчет два раза в день, чтобы больше не просил. На самом деле с помощью этих волшебных скриптов (модное словечко, не правда ли) можно решить раз и навсегда проблемы dial-up, описанные выше, автоматической отправки почты, а также множество других. Само собой разумеется, что после первоначальной установки система полностью (вплоть до установки нового программного обеспечения) управляется с любого компьютера посредством telnet (ssh, rlogin, etc.). Мое напутствие: не забывайте изредка стирать пыль с клавиатуры, чтобы не вызывать ненужных подозрений у начальства.

Документация и TS

Говорят, что хорошая документация - половина успеха программного обеспечения. Помимо FAQ и HOWTO на все случаи жизни, поставляемых с дистрибутивом, существует замечательный источник документации - Linux Documentation Project (http://sunsite.unc.edu/LDP/), который содержит все, начиная с учебников по сетям и заканчивая документацией на сложные проекты, находящиеся на стадии разработки. К тому же все HOWTO написаны не теоретиками, а активными пользователями и представляют собой четкие и ясные инструкции о том, как настроить тот или иной программный продукт. Что же касается технической поддержки Linux-юзеров, IRC-каналов и тому подобного - см. "Компьютерру" #238 (статья г-на Ткачева).

Установка

Знающие люди сочтут мое поведение не очень честным. Действительно, в бочку меда IP Masquerading добавляет дегтя некоторая затрудненность первоначальной установки Linux. Г-н Ткачев совершенно справедливо упоминал в своей статье копание в стокилобайтных скриптах при настройке, однако он забыл сообщить, что, без преувеличения, 80% текста - это комментарии, довольно полно описывающие каждую значащую строчку. Ко всему прочему замечательная программа RPM (Red Hat Package Manager) выполняет за вас инсталляцию всего программного обеспечения, а сами packages поставляются со стандартными настройками, работающими для большинства случаев. Таким образом, от вас совсем не требуется быть специалистом в области Unix, чтобы заставить все это работать. Кстати говоря, все ПО, упомянутое в этой статье и относящееся к Linux, входит в дистрибутив RedHat 4.2, так что вам не придется рыскать по WWW в поисках нужных программ. Впрочем, если вам захочется экзотики, то к вашим услугам гигантский ftp-архив tsx11.mit.edu.

Стоимость

Еще один вопрос, нередко играющий решающую роль в процессе выбора: стоимость проекта. Предоставляю вам самим подсчитать стоимость в случае Windows 95 + WinGate - я не очень осведомлен о ценах (всю информацию можно найти на www.wingate.net и, наверное, www.microsoft.com). Linux, а также описанное ПО распространяется бесплатно.

Пункт второй - стоимость платформы, или, если угодно, "железа". Компания Deerfield предлагает использовать свой WinGate на любой рабочей станции, так как "он почти не отнимает ресурсов". Это-то, конечно, правда, но горе вам, если вы, работая на шлюзовой машине, станете перезагружать ее в тот самый сокровенный момент, когда ваша секретарша скачивает новую выкройку с www.burda-moden.com. Придется использовать в качестве маршрутизатора отдельную машину. Но это отнюдь не означает больших дополнительных расходов - для минимальной конфигурации в нашем случае вполне подойдет и 386/4Mb RAM/40Mb HDD (по моему мнению, оптимальной конфигурацией для организации proxy- и mail-серверов является 486DX100/8-16Mb RAM/300-500Mb HDD) против P200/8Mb в случае Windows/WinGate.

При оценке стоимости немаловажен также вопрос масштабируемости:

1. Linux работает с любым point-to-point-каналом, начиная от модемов для коммутируемых линий, short-range-модемов, ISDN и заканчивая волоконной оптикой и что там еще есть.

2. Linux поставляется с полным комплектом ПО, необходимого для построения Internet/intranet-серверов (возможно, это не идеальный вариант выбора ОС для мощного сервера, но затронутая тема по определению не касается крупных фирм (и мощных серверов)). Кроме того, его модульность позволяет либо сосредоточиться на конкретной задаче и не распылять ценные вычислительные ресурсы, либо, наоборот, работать сервером всего, что только взбредет в голову, - так, у меня дома один компьютер работает одновременно Web-, FTP-, proxy-, DNS-, dial-up-, print- и файл- сервером.

В заключение позвольте задать вам вопрос: каковы ваши требования к серверу или маршрутизатору (вообще к любому оборудованию, являющемуся орудием производства)? Если вы действительно цените свое время и деньги, то я могу ответить за вас - стабильность, надежность, максимальная автоматизация выполняемых задач. Очевидно, что с этой точки зрения на данный момент Linux гораздо лучше оснащена для задач подобного рода. Кроме того, по моему личному мнению, Linux гораздо стабильнее Windows 95/NT. Впрочем, по поводу стабильности, защищенности и быстродействия в прессе и так слишком споров на тему Windows NT vs. Linux. Существует также не менее двух телеконференций, посвященных этому, так что, с вашего позволения, я не буду подливать масла в огонь. На самом деле IP Masquerading - довольно элегантное решение, позволяющее весьма экономно, но в то же время вполне профессионально организовать доступ к Internet.

Впрочем, бытует мнение, что интерфейс командной строки безнадежно устарел и скоро будет окончательно вытеснен современным графическим интерфейсом; к тому же размер дистрибутива WinGate и возможность при наличии определенных знаний установить означенный продукт на любую машину, оснащенную Windows 95, не более чем за 15 минут - это большой плюс.

Оставляю окончательный выбор за вами. Желаю успеха.

 

Словарик к статье

Linux - клон Unix-системы, работающий, в частности, на PC (www.linux.org/). Распространяется бесплатно на условиях GNU license. Правда, я пользуюсь RedHat 4.2 (а не 5.0), так как он более стабилен. URL - www.redhat.com/.

IP Masquerading - опция ядра, позволяющая маршрутизировать IP-пакеты, прозрачно преобразовывая IP-адрес отправителя и порт приложения типа 192.168.0.2:1237 (из внутренней подсети) в адрес (и порт) типа 195.14.33.199:1415 и обратно, создавая, таким образом, на выходе иллюзию чересчур активной машины. Если не вдаваться в слишком сложные технические подробности, то можно воспринимать это как нечто типа mapped links, но в то же время работает низкоуровневый протокол ICMP, то есть программы ping и traceroute. Желающие могут обратиться к http://ipmasq.home.ml.org/.

Diald - демон, добавляющий в таблицы маршрутизации ядра псевдо-default route (SLIP-линию на себя) и разбирающий приходящие IP-пакеты в соответствии с некоторыми критериями. Как только пакет отвечает этим критериям, демон автоматически устанавливает PPP-соединение с провайдером. By Eric Shenk, www.loonie.net/~eschenk/diald.html.

© ООО "Компьютерра-Онлайн", 1997-2022
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.