Бесплатный прокси-сервер для Windows (ES Proxy)
В этой статье будет рассказано о ES Proxy - бесплатном консольном прокси-сервере для ОС Windows. В статье представлен пример установки и настройки прокси-сервера. По шагам будут разобраны основные моменты конфигурирования ES Proxy.
На что способен и где скачать ES Proxy?
Из наиболее значимых достоинств программы:- Он бесплатный:
Данная программа может использоваться любым лицом или организацией для любых целей, не противоречащих закону, в том числе коммерческих, без какой-либо оплаты авторам. Ни сейчас, ни когда-либо в будущем никто не имеет права требовать какой бы то ни было оплаты за использование данной программы. Допускается лишь получение платы за оказание консультаций, проведение работ по установке, настройке и сопровождению данного сервера.
- Это консольный прокси-сервер, которому для работы не нужна графическая оболочка. Благодаря этому сервер работает очень быстро, даже на «слабом» компьютере.
- В ES Proxy реализована система квотирования, которая позволяет организовать выход в Internet нескольким компьютерам одновременно через один внешний канал, при этом его «ширина» распределяется динамически между активными пользователями. Это реализовано посредством присвоения каждой группе пользователей индивидуального значения веса, пропорционально которому будет происходить распределение Internet-канала.
- Настраиваемый шейпер скорости.
- Поддержка родительского прокси (актуально для спутникового Internet`а).
- Хорошая реализация кэширования.
- Выставление ограничений для групп пользователей:
- потребление дневного входящего/исходящего трафика, недельного и месячного;
- указать рабочие дни;
- указать «черный» список url-адресов;
- Настраиваемое перенаправление портов.
- Все действия пользователей вносятся в log-файл. При необходимости можно отключить.
Скачать ES Proxy можно — ES Proxy.zip или на официальном сайте (больше не доступен).
Рекомендую скачать с сайта ITShaman, так как после установки этой сборки потребуется минимальная настройка «под себя».
Установка ES Proxy
Ниже описана установка ES Proxy, скаченного с сайта ITShaman. Более подробную информацию о установке и настройке программы можно найти на официальном сайте программы.
Установка ES Proxy по шагам:
- Распаковываем скаченные файлы в папку C:/Program Files/ES Proxy
- Устанавливаем программу в качестве системной службы, для этого в Windows-консоли набираем:
sc create «es» binpath= «C:/Program Files/ES Proxy/espsrv.exe» start= auto displayname= «es proxy»
В последнем параметре можно указать любое другое, выбранное Вами, значение, которое будет соответствовать имени процесса в ОС. Более подробнее об установке программ в качестве системных служб можно прочитать в статье «Работа с системными службами из консоли в Windows: создание, удаление, запуск, остановка и изменение параметров».
- Запускаем системную службу:
net start es
Настройка ES Proxy
ES Proxy состоит из:
- esps40.ini — основного конфигурационного файла, в котором содержатся основные сведения работы прокси-сервера: родительский прокси, HTTP-порт, параметры использования кэш и т. д.
- users.ini — конфигурационный файл, в котором содержится вся информация о группах пользователей: группы, логины, IP-адреса и права пользователей, а так же назначается вес группы (квотирование).
- esps4_cache_rules.ini — конфигурационный файл, в котором содержатся правила кэширования различных объектов: *.gif, *.png, *.html и т.д.
- esps4_routers_list.ini — конфигурационный файл, в котором содержится информация о перенаправлении портов.
Все конфигурационные файлы для удобства разбиты на секции. Все пробелы и переносы в файлах игнорируются и нужны только для визуального удобства системного администратора. После каждой команды и между параметрами ставится знак «:«.
Ниже приведено содержимое конфигурационных файлов с комментариями ключевых моментов прокси-сервера.
содержимое esps40.ini (нажать для развертывания)
[Server]
Master=
# IP-адрес родительского прокси-сервера. Если он отсутствует, то поле остается пустым.
Port=80
# Порт для подключения пользователей по протоколу HTTP.
Idle Thread Time=100
# Время в милисекундах холостого хода рабочих потоков.
Threads=100
# Целое положительное число количества рабочих потоков.
Threads Type=1
[FTP]
Enable=1
# (0 или 1) разрешение на работу фтп-прокси.
Port=21
# Порт для подключения пользователей по протоколу FTP.
Scan for server name from the begin=0
Log Enable=1
# (0 или 1) ведение log-файла.
Log File Name=C:Program FilesES proxyesps4_ftp.log
# Путь к log-файлу.
Info Log Enable=0
# (0 или 1) ведение log-файла с дополнительной информацией.
;Info Log File Name=C:Program FilesES proxyesps4_ftp_info.log
;Путь к log-файлу
[Connect]
Enable=1
# (0 или 1) Глобальное разрешение использование HTTPS-протокола по методу Connect.
Use Parent=1
# (0 или 1) разрешение работы через родительский прокси.
Log Enable=1
# (0 или 1) ведение log-файла.
Log File Name=C:Program FilesES proxyesps4_https.log
# Путь к log-файлу.
[Statistics]
Show Zero Day Users=1
Show Zero Week Users=1
Show Zero Month Users=1
[Users]
Groups File=C:Program FilesES proxyuser.ini
# Путь к конфигурационному файлу, содержащему настройки групп пользователей.
Count=3
# Количество пользователей, подключаемых к прокси-серверу.
Wait Free Thread=100
# Время ожидания (в секундах) освобождения потоков для системы квотирования.
Threads Limit=32
# Количество входящих потоков, которые распределяются между пользователями системой квотирования.
Input Rate Limit=1048576
# Скорость входящего потока в байтах (1Мб/сек = 1048576).
Output Rate Limit=1048576
# Скорость исходящего потока в байтах (1Мб/сек = 1048576).
Save Users File Name=C:Program FilesES proxyuser.dat
# Путь к файлу для хранения временной информации во время остановки системной службы.
Show Names=1
Show MAC=0
Report Disable URLs=1
[Main Log]
Enable=1
# (0 или 1) ведение log-файла
File Name=C:Program FilesES proxyesps4_m.log
# Путь к log-файлу запуска и остановки сервера.
[Access Log]
Enable=1
# (0 или 1) ведение log-файла
File Name=C:Program FilesES proxyesps4_http.log
# Путь к log-файлу регистрации доступа клиентов по HTTP.
[Error Log]
Enable=0
# (0 или 1) ведение log-файла.
;File Name=C:Program FilesES proxyesps4_errors.log
# log-файл регистрации ошибок.
[Cache]
Enable=1
# (1 или 0) разрешение или запрещение работы кэша.
Path=C:Program FilesES proxyCache
# Путь к директории содержащей кэш.
Rules File=C:Program FilesES proxyesps4_cache_rules.ini
# Путь к файлу, в котором содержатся правила хранения для различных типов объектов в кэше.
Max Size=50
# Максимально допустимый размер кэша в Мб.
Test Time=1800
# Периодичность проверки (в секундах) сервером своего кэша.
Clear Log Enable=0
# (0 или 1) ведение log-файла очистки кэша.
;Clear Log File Name=C:Program FilesES proxyesps4_clear_cache.log
# Путь к log-файлу.
[Wait Socket]
Retry Connect=1
# Количество повторов при неудаче связаться с удаленным сокетом.
Retry DNS=1
# Количество повторов при неудаче определения IP-адреса по имени запрошенного ресурса.
Write Local=1000
# Допустимый таймаут на запись для локальных сокетов.
Read Local=1000
# Допустимый таймаут на чтение для локальных сокетов.
Read Remote=1000
# Допустимый таймаут на чтение для удаленных сокетов.
Write Remote=1000
# Допустимый таймаут на запись для удаленных сокетов.
[Routers]
Enable=1
# (0 или 1) разрешение использования перенаправления портов TCP.
List File Name=C:Program FilesES proxyesps4_routers_list.ini
# Путь к файлу, где находятся настройки перенапрвления портов TCP.
Threads=32
# Целое положительное число количества рабочих потоков роутинга портов.
Log Enable=1
# (0 или 1) ведение log-файла.
Log File Name=C:Program FilesES proxyesps4_routers_list.log
# Путь к log-файлу.
[UDP Routers]
Enable=0
# (0 или 1) разрешение использования перенаправления портов UDP.
;List File Name=C:Program FilesES proxyesps4_udp_routers_list.ini
# Путь к файлу, где находятся настройки перенапарвления портов UDP.
;Threads=32
# Целое положительное число количества рабочих потоков роутинга портов.
Log Enable=0
# (0 или 1) ведение log-файла.
;Log File Name=C:Program FilesES proxyesps4_udp_routers_list.log
# Путь к log-файлу.
[Exclude From Limits]
Enable=0
;List File Name=
содержимое users.ini (нажать для развертывания)
<div class="red">GROUP : admin :</div> <div class="sect"> <div class="blue"># Имя первой группы (групп может быть несколько).</div> <span class="green">USER</span> : <span class="seren">192.168.1.1</span> : <span class="seren">255.255.255.255</span> : <div class="blue"># В группе один пользователь с IP-адресом 192.168.1.1</div> <span class="green">Enable HTTPS Port</span> : <span class="seren">443</span> : <div class="blue"># Разрешены HTTPS соединения для группы на 443 порту.</div> <span class="green">Weight</span> : <span class="seren">3</span> : <div class="blue"># Вес группы, учитывающийся при распределении входящего канала.</div> <span class="green">Show Statistics</span> : <span class="seren">1</span> : <div class="blue"># (0 или 1) запрещает или разрешает просмотр статистики.</div> </div> <div class="red">GROUP : users :</div> <div class="sect"> <div class="blue"># Имя второй группы.</div> <span class="green">USER</span> : <span class="seren">192.168.0.2</span> : <span class="seren">255.255.255.0</span> : <div class="blue"># В группе несколько пользователей имеющие IP-адреса из диапазона 192.168.0.2-192.168.0.255.</div> <span class="green">Enable HTTPS Port</span> : <span class="seren">443</span> : <div class="blue"># Разрешены HTTPS соединения для группы на 443 порту.</div> <span class="green">Weight</span> : <span class="seren">2</span> : <div class="blue"># Вес группы, учитывающийся при распределении входящего канала.</div> <span class="green">Show Statistics</span> : <span class="seren">0</span> : <div class="blue"># (0 или 1) запрещает или разрешает просмотр статистики.</div> <span class="green">Day Input Limit</span> : <span class="seren">500</span> : <span class="seren">M</span> : <div class="blue"># Дневной лимит входящего трафика 500 Мб (вторым параметром может быть: B-байты; K-килобайты; M-мегабайты; G-гигабайты).</div> ;Day Output Limit : : <div class="blue"># Дневной лимит исходящего трафика (вторым параметром может быть: B-байты; K-килобайты; M-мегабайты; G-гигабайты).</div> ;Week Input Limit : : <div class="blue"># Недельный лимит входящего трафика (вторым параметром может быть: B-байты; K-килобайты; M-мегабайты; G-гигабайты).</div> ;Week Output Limit : : <div class="blue"># Недельный лимит исходящего трафика (вторым параметром может быть: B-байты; K-килобайты; M-мегабайты; G-гигабайты).</div> ;Month Input Limit : : <div class="blue"># Месячный лимит входящего трафика (вторым параметром может быть: B-байты; K-килобайты; M-мегабайты; G-гигабайты).</div> ;Month Output Limit : : <div class="blue"># Месячный лимит исходящего трафика (вторым параметром может быть: B-байты; K-килобайты; M-мегабайты; G-гигабайты).</div> ;Day Off: 0 : <span class="blue"># Понедельник</span> <div>;Day Off: 1 : <span class="blue"># Вторник</span></div> ;Day Off: 2 : <span class="blue"># Среда</span> <div>;Day Off: 3 : <span class="blue"># Четверг</span></div> ;Day Off: 4 : <span class="blue"># Пятница</span> <div>;Day Off: 5 : <span class="blue"># Суббота</span></div> ;Day Off: 6 : <span class="blue"># Воскресенье</span> <div class="blue"># Запрещает работу в указанный день (может повторятся несколько раз).</div> ;Max Input Rate: : <div class="blue"># Максимально входящая скорость в байтах - шейпер (автором ПО не рекоменуется к использованию без особой нужды).</div> ;Max Output Rate: : <div class="blue"># Максимально исходящая скорость в байтах - шейпер (автором ПО не рекоменуется к использованию без особой нужды).</div> <span class="green">Disable URL</span> : <span class="seren">*porno*.*</span> : <div class="blue"># Запрещены все URL с встречающимся сочетанием *porno*.*</div> <span class="green">Enable URL</span> : <span class="seren">*sporno*</span> <div class="blue"># Но разрешается URL содержащий в имени *sporno* (в примере адрес porno.com не будет отображаться, а sporno.ru будет)</div>
содержимое esps4_cache_rules.ini (нажать для развертывания)
<div class="red">URL : *images/* :</div> <div class="sect"> <span class="green">Min save time</span> : <span class="seren">20</span> : <span class="seren">H</span> : <div class="blue"># Минимальное время сохранения в кэше объекта *.gif 3 часа (второй параметр может быть: M-минуты; H-часы; D-дни; W-недели).</div> <span class="green">Max save time</span> : <span class="seren">10</span> : <span class="seren">D</span> : <div class="blue"># Максимальное время сохранения в кэше объекта *.gif 7 дней (второй параметр может быть: M-минуты; H-часы; D-дни; W-недели).</div> </div> <div class="red">URL : *.gif :</div> <div class="sect"> <span class="green">Min save time</span> : <span class="seren">3</span> : <span class="seren">H</span> : <div class="blue"># Минимальное время сохранения в кэше объекта *.gif 3 часа (второй параметр может быть: M-минуты; H-часы; D-дни; W-недели).</div> <span class="green">Max save time</span> : <span class="seren">7</span> : <span class="seren">D</span> : <div class="blue"># Максимальное время сохранения в кэше объекта *.gif 7 дней (второй параметр может быть: M-минуты; H-часы; D-дни; W-недели).</div> </div> <div class="red">URL : *.png :</div> <div class="sect"> <span class="green">Min save time</span> : <span class="seren">3</span> : <span class="seren">H</span> : <div class="blue"># Минимальное время сохранения в кэше объекта *.gif 3 часа (второй параметр может быть: M-минуты; H-часы; D-дни; W-недели).</div> <span class="green">Max save time</span> : <span class="seren">7</span> : <span class="seren">D</span> : <div class="blue"># Максимальное время сохранения в кэше объекта *.gif 7 дней (второй параметр может быть: M-минуты; H-часы; D-дни; W-недели).</div> </div> <div class="red">URL : *.jpg :</div> <div class="sect"> <span class="green">Min save time</span> : <span class="seren">3</span> : <span class="seren">H</span> : <div class="blue"># Минимальное время сохранения в кэше объекта *.gif 3 часа (второй параметр может быть: M-минуты; H-часы; D-дни; W-недели).</div> <span class="green">Max save time</span> : <span class="seren">7</span> : <span class="seren">D</span> : <div class="blue"># Максимальное время сохранения в кэше объекта *.gif 7 дней (второй параметр может быть: M-минуты; H-часы; D-дни; W-недели).</div>
содержимое esps4_routers_list.ini (нажать для развертывания)
Router: pop.mail.ru :
# Название правила перенаправления портов.
remote server : pop.mail.ru :
# Удаленный сервер POP
remote port : 110 :
# Удаленный порт подключения к указанному серверу.
local port : 110 :
# Локальный порт, на который будут приходить сообщения от пользователей.
Router: smtp.mail.ru :
remote server : smtp.mail.ru :
# Удаленный сервер SMTP
remote port : 25 :
# Удаленный порт подключения к указанному серверу.
local port : 25 :
# Локальный порт, на который будут приходить сообщения от пользователей.
Хотелось бы заострить внимание на системе квотирования, реализованной в ES Proxy. Эта система предназначена для распределения внешнего канала между группами пользователей в заданном соотношении. В конфигурационном файле users.ini каждой группе можно задать определенный вес (Weigh). Само по себе значение веса большой роли не играет, играет отношение этого значения между разными группами. Для наглядности работы квотирования приведу пример с сайта проекта:
Например, общая полоса сервера составляет 100000 байт в секунду, а общее количество допустимых сессий – 100. Допустим также, что работают два клиента, один из группы директоров, с весом 3, а другой – из группы менеджеров, с весом 1. В этом случае, директор получит 75% всех ресурсов (то есть 75000 байт в секунду и 75 сессий), а менеджер – 25% (то есть 25000 байт в секунду и 25 сессий). При большем количестве активных «директоров» и «менеджеров» каждый из них получит меньше байт в секунду и меньше сессий, чем в этом примере, но любой директор, при указанном распределении весов, всегда получит ровно в три раза больше ресурсов, чем любой менеджер.
Между пользователями одной группы входящий канал делится на равные части, система квотирования распределяет ресурсы канала только при одновременной работе пользователей из разных групп.
Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.
Вдохновлен
Добавлю то, что насчет первой команды консоль ругалась на синтаксис. service name es нужен в кавычках и путь к программе тоже должен быть в кавычках тк содержит пробелы.
вот команда:
sc create “es” binpath= “C:/Program Files/ES Proxy/espsrv.exe” start= auto displayname= “es proxy”
Автору, в свою очередь, спасибо за статью! Я долго искал проксик с диамическим распеределением полосы пропускания сети между клиентами.
Команду поправил, спасибо.
Винды под рукой нет, так что поверю на слово. :)) Название службы вроде можно без кавычек, т.к. без пробелов, а в пути – правильно подметили, упустил.
Еще раз спасибо.
Да не за что:)
Сейчас вот вожусь с такой проблемой: как поднять SOCKS на ES Proxy?
Суть в том, чтобы распределить канал между машиной с торрентом и несколькими пользователями. Создал 2 группы с весовыми коэффициентами 25% на торрент и 75% на пользователей. Задумка следующая: когда пользователи не активны, весь канал потребляет торрент, как пользователь подключился – можно серфить с 75% канала.
Вот только торрент (uTorrent 1.8.5) по HTTP не работает. Проще по SOCKS сделать ИМХО.
Вроде ES не умеет подымать прокси через socks. Можете задать вопрос разработчику прокси-сервера.
Очень рад что наткнулся на это прокси, пока не ставил но возник вопрос, авторизация пользователей возможна только по IP адресу? или по логину тоже? Если второй вариант возможет то можно пример.
К сожалению авторизация по логину и паролю ES Proxy не работает
Жаль, что по логину нельзя, придется искать что то другое, тоже бесплатное.
Попробуйте 3proxy
Ок как нить попробую. Хотя уже хочу сервер на Linux в скором будущем перевести.
3proxy работает и на Linux, либо посмотрите на Squid
Можно ли задавать диапозон IP адресов таким образом 192.168.0.1-192.168.0.10, а не по маске?
Вроде нет, но точно не знаю, т.к. не было в этом необходимости.
Я не могу установить сервер, у меня сеть сервер Win Ser 2008 и клиенты XP и Win 7,
служба устанавливается, но она никак не реагирует на файл параметров, логи не создаются, к ней никак нельзя подцепится, служба слушает порт 3128, и плевать ей хотелось на пареметр PORT, да и по этому порту клиенты не цепляются, Помогите
После редактирования конфигурационного файла нужно перезапустить ES-сервер. Все должно меняться, посмотрите права на все файлы ES, возможно дело в этом. У меня были проблемы на Win7, после того как размещенные на диске C: файлы ES-а отказывались работать. Перенос всего на диск D: все поправил.
Помогите советом. Ни кто из знакомых не сталкивался с подобной поблемой. Надо решить следующую задачу: пользователь перемещается с ноутом, но должен подключаться к чужому серверу всегда с одного и того же конкретного IP (на ноуте установлен клиент-банк). Для этого предложено арендовать в датацентре сервер с Win2008 и настроить на нем прокси-сервер. Какое ПО порекомендуете в качестве прокси-сервера (платное тоже устроит). Спасибо.
Я всегда пользуюсь сайтом dostupest.ru, на других вырусов можно поймать
По поводу Windows 2008 server: мозг кипел но нашел: при установке в качестве службы винда копирует espsrv.exe в папку c:\windows. Там же сервис создает свой esps40.ini. Заменить на свой отредактированный, перезапустить службу, наслаждаться.
такой вопрос а если у меня клиент с внешним айпишником, допустим совсем от другого провайдера, как в таком случае его добавить в список пользователей?
Хм…
А зачем Вам обсчитывать пользователя не из вашей сети? Если Вы просто планируете дать ему доступ из вне, то, наверное, нужно поколдовать с с файлом esps4_routers_list.ini
Получилось настроить подобным образом на одном компьютере, только пришлось копировать фаил esps40.ini в папку виндовс. Но не получается подключится к созданному прокси с другого компьютера, находившимся в одной сети. Как можно это исправить?
Перенаправление портов через маршрутизатор не дало результата.
А ОС у Вас XP или 7?
Подскажите, как настроить запуск в консоли? ругается SCManager “нет доступа”, запускаю консоль от имени администратора, тот же эффект.
Не совсем понял Ваш вопрос
Долго ломал голову почему же эта штука не работает…) в итоге наткнулся на еще один сайт, где вычитал умную вещь).
Чтобы работали ВСЕ порты в конфиге юзеров стоит прописать
Enable Https Port : 0 :
По настройкам сходите на Http://www.urengoy.net/esproxy/
Сайт ES Proxy в настоящее время расположен по адресу http://esproxy.extrasystems.biz/
Спасибо, судя по описаниям стоящая вещь, пробовал некоторые прокси с графической оболочкой, показалось что замедляют скорость интернет, на Linux конечно же Squid, а вот для Windows пришлось поискать.