3proxy настройка прокси сервера в Windows
- Font size: Larger Smaller
- Hits: 32020
- 0 Comments
- Bookmark
Скачиваем дистриб и распаковываем куда нужно, я это сделал в 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.
Удачи в освоении!