Универсальный доступ в Internet

По мере того как Internet наполняется новыми службами и приложениями, администраторам становится все сложнее находить разумный компромисс между корпоративной безопасностью и возможностями пользователей. Естественно, первая чаша весов перевешивает, в результате чего большинство локальных сетей защищаются брандмауэром, а единственная тропинка в Сеть ведет через HTTP proxy-сервер.

Тем самым существенно обедняются наши возможности. В подобной конфигурации нельзя обеспечить полноценную работу FTP-клиентов, IP-телефонов, программ для обмена мгновенными сообщениями и многих других, использующих протокол, отличный от HTTP. Сюда же попадают мультимедийные приложения (в том числе и онлайновые игры, хотя в данном контексте это — самый последний аргумент) и даже почтовые клиенты в определенных ситуациях — попробуйте, к примеру, находясь за брандмауэром, забрать свою корреспонденцию с внешнего POP-сервера.

Естественно, устанавливать собственный proxy-сервер для каждого приложения неразумно, да и накладно, использовать же обычный NAT и открывать необходимые порты брандмауэра — довольно небезопасно. Между тем давным-давно существует технология, способная достаточно эффективно решить описанную проблему, причем раз и навсегда.

SOCKS

Речь идет о SOCKS — специальном протоколе и поддерживающем его ПО. Главным компонентом является SOCKS-сервер, с которым общаются клиентские программы. Формально он выполняет ту же роль, что и NAT, или специализированный сервер-посредник (proxy), с той лишь разницей, что работает на сеансовом уровне, т. е. "выше" первого и "ниже" второго. Этот маленький, на первый взгляд, нюанс дает множество преимуществ.

Одно из важнейших — универсальность SOCKS-технологии, заключающаяся в автоматической поддержке любых Internet-приложений, как существующих, так и тех, что будут разработаны. Кроме того (и в отличие от NAT), обеспечиваются широкие возможности администрирования на уровне пользователей и приложений и полноценные двусторонние коммуникации.

Сегодня "в ходу" две, в принципе несовместимые между собой, версии SOCKS-протокола — 4 и 5, — из которых первая выделяется простотой, а вторая — поддержкой не только TCP, но и UDP, а также средствами аутентификации. Впрочем, конкретные реализации могут поддерживать обе версии.

Серверное ПО имеется практически для всех платформ и выпускается многими разработчиками (в числе наиболее известных — NEC). Нередко оно распространяется бесплатно. Впрочем, основным предметом настоящей статьи является как раз не серверная, а клиентская сторона.

Клиенты-универсалы

Настройка SocksCap
не вызовет затруднения даже у новичка

Дело в том, что для обеспечения полноценного доступа в Internet недостаточно только наличия SOCKS-сервера, протокол также должен поддерживаться пользовательскими программами, которые принято называть "соксифицированными".

С одной стороны, такого ПО не так уж мало, по крайней мере в эту категорию попадают наиболее распространенные броузеры и клиенты систем обмена мгновенными сообщениями. Впрочем, даже они далеко не всегда работают корректно (может поддерживаться только 4-я версия протокола).

С другой — многие привычные программы слыхом не слыхивали о SOCKS. К примеру, FTP-клиента подобрать не так уж просто — не подойдут ни стандартная утилита Windows, ни даже популярнейший WS_FTP Pro. Из "беспроблемных" программ вспоминается разве что FTP Voyager (наверняка есть и другие).

Выход, однако, имеется, причем столь же универсальный, как и сама SOCKS-технология. Идея состоит в использовании специальных системных драйверов (или клиентов), которые выступают в качестве еще одного посредника — теперь уже между пользовательской (в принципе, произвольной) программой и SOCKS-сервером. Задача его состоит в инкапсуляции TCP- и UDP-трафика в SOCKS-запросы и переадресации их SOCKS-серверу. Какой именно трафик подлежит обработке, зависит от реализации драйвера, но обычно в той или иной форме указывается самим пользователем.

NEC

Не удивительно, что подобное ПО можно найти у одного из известнейших разработчиков SOCKS-продуктов — NEC. Компания предлагает универсальные SOCKS-драйверы для всех версий Windows (16- и 32-разрядных) — SocksCap. Загрузить их можно совершенно бесплатно на Web-странице, там же находится и список протестированных приложений.

К сожалению, 100%-ная совместимость не гарантируется, поскольку даже относительно простое современное приложение имеет довольно сложную архитектуру и множество нюансов. К примеру, стандартный FTP-клиент из Windows, будучи принудительно "соксифицированным" с помощью Socks­Cap, прекрасно работает с одними узлами и некорректно — с другими. Тем более не приходится удивляться проблемам с Internet Explorer 4 в режиме Active Desktop.

В целом SocksCap не отличается удобством работы и богатством настроек, хотя для большинства пользователей ее возможностей будет предостаточно, а использование не вызовет проблем. Для "соксификации" приложения необходимо лишь перетащить его пиктограмму в окно программы либо явно указать исполняемый модуль. Однако запустить его удастся только "изнутри" SocksCap или с помощью специального ярлыка. К "тонкой" настройке относятся список адресов, обращение к которым всегда должно идти напрямую, и реквизиты для автоматической аутентификации.

Одно из достоинств клиента e-Border — средства диагностики

Кроме того, NEC выпускает коммерческий продукт e-Border, в состав которого входят SOCKS-сервер и универсальный SOCKS-клиент, прекрасно работающий и с другими реализациями. В основном программа аналогична SocksCap, однако в некоторых вопросах более удобна. К примеру, при ее использовании нет нужды создавать специальные ярлыки для "соксифицированных" приложений — драйвер самостоятельно отследит запуски всех указанных пользователем исполняемых модулей. К сожалению, клиентская часть e-Border стоит, ни много ни мало, $30, а тестовый период ограничен 30 днями. Зато поддерживается не только платформа Windows, но также различные версии Solaris и Linux.

Основная проблема обеих программ от NEC (впрочем, большинство пользователей с ней вряд ли столкнется) заключается именно в работе на уровне отдельных программ. К примеру, SocksCap не справится с "соксификацией" избранных IP-адресов, обращаться к которым нужно всегда через SOCKS-сервер (а к остальным — обычным образом). В этом случае нужно искать более гибкое решение.

Hummingbird

Таковым может оказаться разработка компании Hummingbird, известной, в частности, своими продуктами из категории Network Connectivity для гетерогенных (Windows/Unix) сетей. Этот бесплатно распространяемый клиентский SOCKS-драйвер для Windows 9х/NT/2000 настраивается из специального конфигурационного (текстового) файла. Уже одно это свидетельствует о том, что данное ПО больше ориентировано на администраторов, чем на конечных пользователей. Впрочем, любой, кто способен узнать IP-адрес нужного узла и понимает назначение маски подсети, безусловно, сможет с ним разобраться. А затраченные на это усилия с лихвой компенсируются широтой и гибкостью настроек.

Hummingbird SOCKS оперирует исполняемыми модулями, IP-адресами (отдельными и целыми подсетями), портами и пользователями. В конфигурации с несколькими SOCKS-серверами драйвер сможет равномерно распределить между ними трафик. После должной настройки обрабатываться будут только действительно подлежащие "соксификации" запросы, что позволит минимизировать накладные расходы и использовать соединение максимально эффективно.

Единственный известный автору недостаток программы — невозможность автоматической аутентификации и отказа от нее (независимо от настроек самого SOCKS-сервера). Пользователю придется вводить свои регистрационные данные после каждой перезагрузки системы, что, конечно же, не слишком удобно. Возможно, разработчики исправят этот недочет в последующих версиях, тем более что нарекания по данному поводу поступают с завидной регулярностью (в соответствующем форуме на узле Hummingbird).

Сам себе администратор

Socks2HTTP достаточно указать координаты HTTP proxy

Что, однако, делать, если SOCKS-сервера нет и в ближайшем времени не предвидится, а необходимая программа иным способом не работает? Ответ может показаться парадоксальным, но компания TotalRC предлагает инсталлировать его на собственном компьютере! Разработанная ею программа Socks2HTTP принимает SOCKS-запросы (только версии 5) и инкапсулирует их в обычный HTTP-трафик, который прекрасно пропускается традиционными proxy-серверами.

Именно такой информацией ограничивается заглавная Web-страница, посвященная Socks2HTTP. На самом же деле все несколько сложнее. Сгенерированный программой трафик доставляется не куда-нибудь, а на узел TotalRC, где он окончательно расшифровывается и только затем отправляется реальному адресату.

Как и во всех подобных схемах, наиболее узким местом оказывается именно узел-посредник. В наших экспериментах время прохождения пакетов увеличивалось многократно, вплоть до того, что некоторые программы, наиболее чувствительные к скорости соединения (к примеру, онлайновые игры), попросту отказывались работать.

Разработчики утверждают, что это — особенность пробной версии, трафик которой умышленно "награждается" наименьшим приоритетом. Возможно, у них действительно были веские аргументы в пользу такого решения, однако оценить реальное качество функционирования сервиса довольно сложно. Тем не менее программы обмена мгновенными сообщениями и почтовые клиенты (с внешним POP-сервером) худо-бедно, но работали.

Стоимость полноценной услуги, кстати, составляет $25, что не так уж и много в тех ситуациях, когда она действительно востребована. Взамен вы получите полную независимость от сетевой конфигурации вашего рабочего места. Кстати, ничто не мешает и в этом случае использовать универсальные "соксификаторы" вроде SocksCap.