Uncategorized
- Subscribe to this category
- Subscribe via RSS
- 0 posts in this category
Привет линуксоидам!
Бывают же смешные рекламные ролики!
Скачиваем дистриб и распаковываем куда нужно, я это сделал в C:\3proxy. На момент написания обзора крайняя версия была 0.6.1. В каталоге мы увидим три папки и еще всякие файлики. В папке bin хранится сама программа прокси сервера и всякие плагины, в папке cfg хранится пример файла конфигурации и sql скрипт для созадния базы данных, если есть желание хранить журнал в БД. В папке doc справка.
Мы идем в папку bin, там создаем файлик 3proxy.cfg. Открываем его на редактирование, вписываем туда всего три строчки:
auth none
log
proxy
Cохраняем и закрываем. Так выглядит конфиг прокси сервера в минимальном варианте.
Первая строка говорит, что авторизация не требуется, строка log - вывод журнала прямо в окно программы, строка proxy без параметров включает сам прокси сервер на стандартном порту 3128. Запускам 3proxy.exe, настраиваем браузер на прокси сервер localhost и порт 3128 и захоим на какой-нибудь сайт.
В окне 3proxy сразу увидим много строк, это собственно и есть журнал, который мы включили параметром log.
Если на компьютере с 3proxy одна сетевая карта смотрит в локальную сеть, а другая в интернет, то не лишним будет принудительно указать какая из сетевых карт какая. Это делается так:
internal 192.168.1.2
external 10.10.54.22
Суть следующая: internal - это сетевуха локальной сети и её IP-адрес, а external - внешняя. Если внешний интерфейс не постоянный, т.е. подключение к интернет осуществляется, например, по PPPoE, то надо писать так - external 0.0.0.0
Не лишним будет указать IP-адреса DNS серверов провайдера и кэширование, делает это так:
nserver ip-адрес-dns-сервера-1
nserver ip-адрес-dns-сервера-2
nscache 65536
Если необходимо, можно делать статические DNS-записи, в некоторых случаях это тоже помогает что-нибудь заблокировать:
nsrecord www.porno.com 127.0.0.1
Далее настроим запись лог-файлов. В каталоге 3proxy создайте папку logs, а в конфиге измените строку log на следующее:
log C:\3proxy\logs\3proxy.log D
rotate 30
Здесь мы указываем куда сохранять лог-файлы, каждый день будет создаваться новый файл, а длительность хранения составит 30 дней.
В итоге наш конфигурационный файл будет иметь следующий вид:
auth none
log C:\3proxy\logs\3proxy.log D
rotate 30
internal 192.168.1.2
external 10.10.54.22
nserver ip-адрес-dns-сервера-1
nserver ip-адрес-dns-сервера-2
nscache 65536
nsrecord www.porno.com 127.0.0.1
Теперь рассмотрим способы авторизации. Сейчас у нас доступ в интернет разрешен всем, т.к. указан параметр auth none. Это можно поменять на следующие варианты: пользователей можно определять по IP-адресам их компьютеров, в этом случае в конфиг пишется auth iponly, можно по логину и паролю (которые задаем в файле 3proxy) - в этом случае пишем auth strong, а можно использовать более тесную интеграцию с Windows и разрешать доступ в интернет по признаку принадлежности пользователя к определенной группе в Windows. В последнем случае в конфиге надо написать так:
auth windows
authcache user,pass 900
authcache windows
plugin "WindowsAuthentication.dll" WindowsAuthentication "3ProxyAllowedGroup"и у параметра прокси добавить -n:
proxy -n
В Windows нужно создать группу 3ProxyAllowedGroup и затем добавлять туда пользователей. Можно поменять название группы на что-нибудь свое, изменив соответствующий параметр выше.
В случае с auth strong логины и пароли задаются в следующем формате:
users user1:CL:password1
Пароли можно задавать и в зашифрованном виде, кому интересно как это делается - велкам в мануал к 3proxy.
Следующий на очереди инструмент ограничения скорости. Синтаксис команды достаточно простой:
bandlimin <bitrate> <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist>
bitrate - скорость в битах
userlist - список пользователей через запятую без пробела, если у вас авторизация auth strong, в противном случае ставится звездочка
sourcelist - если у вас авторизация auth iponly, то тут указывается список IP-адресов через запятую без пробела, в других случаях ставится звездочка
targetlist - IP-адреса назначения через запятую без пробела. если хотим просто ограничить скорость, то можно не заполнять
targetportlist - порты адресов назначения
commandlist - дополнительные команды
Пример правила:
bandlimin 240000 * 192.168.0.2,192.168.0.3Здесь мы ограничиваем скорость до 24 Кбит/c для двух IP-адресов локальной сети. При этом т.к. IP-адреса перечислены через запятую, то 24 Кбит будет делиться между ними.
Теперь мы дошли до самого главного - создание правил доступа. Для этого используются команды allow, deny и flush. Синтаксис имеет следующий вид:
allow <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist> <weekdays> <timeperiodslist>
deny <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist> <weekdays> <timeperiodslist>
flush
Команда flush используется для сброса существующего списка доступа (это необходимо для того, чтобы можно было задать различные списки доступа для различных служб). allow служит для разрешения соединения, deny - для запрета соединения. В момент установки исходящего соединения просматривается список доступа и находится первая запись, соответствующая запрошенному клиентом соединению. Если запись соттветствует allow - соединение разрешается, deny - запрещается. Если список пуст, то соединение разрешается. Если список не пуст, но подходящей записи нет, то соединение запрещается. При этом:
<userlist> - список логинов пользователей через запятую<sourcelist> - список сетей клиентов через запятую. Сеть задается в формате xxx.yyy.zzz.mmm/l, где l - длина маски сети (количество ненулевых байт). Например, 192.168.1.0/24 соответствует сети с маской 255.255.255.0.
<targetlist> - список сетей назначения через запятую
<targetportlist> - список портов назначения через запятую. можно задать диапазон портов через -, например, 80,1024-65535
<commandlist> - список команд, через запятую, для которых применяется правило:
CONNECT - установить исходящее TCP соединение (например, SOCKSv4/5, POP3 proxy, и т.д.)
BIND - разрешить входящее TCP соединение (SOCKSv5)
UDPASSOC - создать UDP-ассоциацию (SOCKSv5)
ICMPASSOC - создать ICMP-ассоциацию (не реализовано)
HTTP_GET - HTTP GET запрос (HTTP proxy)
HTTP_PUT - HTTP PUT запрос (HTTP proxy)
HTTP_POST - HTTP POST запрос (HTTP proxy)
HTTP_HEAD - HTTP HEAD запрос (HTTP proxy)
HTTP_CONNECT - HTTP CONNECT запрос (HTTP proxy)
HTTP_OTHER - другой HTTP запрос (HTTP proxy)
HTTP - соответствует любому HTTP запросу кроме HTTP_CONNECT (HTTP proxy)
HTTPS - тоже, что HTTP_CONNECT (HTTP proxy)
FTP_GET - FTP get запрос
FTP_PUT - FTP put запрос
FTP_LIST - FTP list запрос
FTP - соответствует любому FTP запросу
ADMIN - доступ к интерфейсу администрирования
<weekdays> задает список дней недели, 1 соответствует понедельнику, 0 или 7 - воскресенье. 1-5 означает с понедельника по пятницу (включительно). 1,3,5 задает нечетные дни недели.
<timeperiodslist> список интервалов дня в формате ЧЧ:ММ:СС-ЧЧ:ММ:СС, например, 00:00:00-08:00:00,17:00:00-24:00:00 задает нерабочее время. Примеры использования листов доступа можно найти в файле 3proxy.cfg.sample в папке cfg.
В завершении обзора еще парочка моментов.
Во-первых, когда вы напишете рабочий конфиг и 3proxy будет запускаться с ним без ошибок, прокси сервер можно установить в качестве службы Windows командой 3proxy.exe --install
При этом в конфигурационном файле добавьте строку service
Во-вторых мы рассмотрели только самые основные возможности прокси сервера. На официальном сайте есть подробная документация на русском языке по настройке большинства аспектов работы 3proxy.
Удачи в освоении!
За время существования блога мы рассмотрели уже не мало разнообразных вариаций прокси серверов на разных платформах. Пришло время дать обобщенную характеристику всем прокси серверам, сравнить их и рассказать о некоторых ньюансах работы в каждом конкретном случае. Думаю, новичкам и тем кто находится в поиске подходящего решения под свои нужды будет удобно сориентироваться.
Операционная система: Windows, Linux, BSD, в т.ч. программные маршрутизаторы
Squid, пожалуй, самый старший прокси сервер их всех. За многие годы он оброс внушительным числом функций. Родная платформа для него Linux, однако, есть версии и под винду. Правда в операционной системе MS прокси работает с некоторыми ограничениями. Поддерживаются такие интересные функции как авторизация через Active Directory, ограничение скорости, белые/черные списки сайтов и пр. Существую дополнительные модули, например, SquidGuard для максимально гибкого управления ограничениями.
Если ставить прокси сервер самостоятельно на любую из платформ, можно создать конфигурационный файл практически любой сложности, который будет учитывать всё что вы хотите. Однако, это потребует некоторой подготовки и времени. Намного проще воспользоваться каким-нибудь программным роутером из коробки, где большинство функций Squid настраивается через удобный web-интерфейс. Единственный недостаток последнего способа - ограниченная гибкость в настройках.
Компактный мультиплатформенный прокси сервер. По функционалу сильно приближен к Squid, но при этом не такой громоздкий. В системе Windows показывает себя в некоторых аспектах даже лучше чем Squid. Из недостатков - 3proxy не умеет работать с Active Directory в полном объеме, не кэширует, т.е. не экономит трафик. Последний пункт не очень актуален во времена безлимитного интернета.
Операционная система: только Windows
Оригинальный прокси сервер, который выделяется среди остальных интересной особенностью фильтровать сайты не по черным/белым спискам, а по рейтингу поисковой базы Google. К сожалению пользователей может разделять только по IP-адресам, список функций несколько скромнее чем у Squid или 3proxy.
Анонимайзеры
Существуют так же и способы обхода прокси серверов. Обобщенно эти штуки называются анонимайзерами. По сути это просто сайты, которые в большинстве своем работают по https протоколу, и которые форвардят через себя нужные пользователю запрещенные сайты. Прокси сервера как правило никак не фильтруют https протокол, но тем не менее способы борьбы с анонимайзерами есть. Можно целенаправленно изменять DNS записи на сайты анонимайзеров, а в случае использования Squid есть еще один интересный способ.