// Engineering Log
Прокси-серверы: Часть 5 — 3proxy
Опубликовано 21.09.2026
// Быстрый маршрут
Эта статья относится к теме Сети и маршрутизация.
3proxy — бесплатный прокси-сервер с открытым исходным кодом, который в одной небольшой программе объединяет HTTP-прокси, SOCKS-прокси, прокси для почтовых протоколов и FTP, перенаправление портов и кеширующий DNS. Автор — Владимир Дубровин, известный под псевдонимом 3APA3A; с этим псевдонимом и связано название программы. Проект развивается с 2000 года, в августе 2026 года вышла версия 1.0.0. 3proxy работает в Linux, BSD, macOS и Windows.
Какие службы есть в 3proxy
Каждая служба запускается отдельной командой в файле конфигурации. По документации (man 3proxy.cfg) доступны:
proxy— HTTP- и HTTPS-прокси (порт по умолчанию 3128); HTTPS проходит методом CONNECT без расшифровки;socks— SOCKS4, SOCKS4.5 и SOCKS5 (порт по умолчанию 1080);pop3pиsmtpp— прокси для получения и отправки почты;ftppr— FTP-прокси;tcppmиudppm— перенаправление TCP- и UDP-портов на другой адрес;dnspr— кеширующий DNS-прокси; работает только вместе с командамиnserverиnscache;tlspr— прокси для TLS-соединений;admin— веб-интерфейс для просмотра статистики и конфигурации;auto— служба, которая сама определяет протокол клиента.
Главное отличие от Dante — в 3proxy есть не только SOCKS, но и HTTP-прокси, учёт трафика, лимиты и ограничение скорости по пользователям. Это делает его удобным для небольшого офиса или для раздачи прокси нескольким клиентам с одного сервера.
Установка
Для Linux проект выпускает deb-пакеты для Ubuntu 22.04 и новее и для Debian 12 и новее — для процессоров x86-64, ARM64 и 32-битных ARM. Их можно скачать со страницы выпусков на GitHub или подключить подписанный apt-репозиторий https://3proxy.org/repo/. В репозитории два канала: current — текущая ветка 1.x, lts — ветка 0.9 с долгосрочной поддержкой.
После установки конфигурация находится в файле /etc/3proxy/3proxy.cfg. Для добавления пользователей в поставку входит скрипт add3proxyuser:
sudo add3proxyuser ivan 'СложныйПароль'Скрипт рассчитан на стандартную конфигурацию из пакета, где список пользователей хранится в отдельном файле. В примере ниже пользователи для наглядности заданы прямо в конфигурации. Служба управляется через systemd: sudo systemctl enable --now 3proxy.
Пример конфигурации
Ниже — конфигурация для небольшого офиса: HTTP-прокси и SOCKS5 с паролями, запрет обращений во внутренние сети через прокси, журнал с ежедневной ротацией и ограничение скорости для одного пользователя.
nserver 1.1.1.1
nserver 8.8.8.8
nscache 65536
log /var/log/3proxy/3proxy.log D
rotate 30
users ivan:CL:ПарольИвана olga:CL:ПарольОльги
auth strong
deny * * 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
allow ivan,olga
bandlimin 10000000 olga
proxy -p3128
flush
auth strong
allow ivan
socks -p1080Как это читается:
nserverиnscache— DNS-серверы, через которые 3proxy разрешает имена, и размер кеша ответов;log ... Dиrotate 30— журнал с ротацией раз в сутки, хранятся 30 архивных файлов;users— пользователи и пароли. ТипCLозначает пароль открытым текстом; в рабочей конфигурации лучше хранить хеш, типCR(например,ivan:CR:$1$...— такой хеш даёт командаopenssl passwd -1);auth strong— вход только по имени и паролю. Другие варианты:iponly— только по адресу клиента,none— без проверки,cache— запоминать успешную авторизацию;denyиallow— правила доступа. Их поля идут в порядке: пользователи, адреса клиентов, адреса назначения, порты, операции, дни недели, время суток. Звёздочка означает «любой». Правила проверяются сверху вниз, поэтому запрет на внутренние сети стоит первым;bandlimin 10000000 olga— ограничение входящей скорости для пользователя olga до 10 Мбит/с;proxy -p3128— запуск HTTP-прокси с текущим набором правил;flush— сброс правил: всё, что ниже, относится только к следующим службам. Здесь SOCKS-прокси доступен только пользователю ivan.
Порядок в файле важен: служба получает те правила, которые были объявлены выше неё и после последнего flush.
Правила можно ограничивать и по времени. Например, так доступ открыт только по будням в рабочие часы:
allow * 198.51.100.0/24 * * * 1-5 09:00:00-18:00:00Учёт трафика по пользователям
Счётчики позволяют ограничить объём трафика, например, 5 ГБ в сутки для каждого пользователя. Команда counter задаёт файл, в котором 3proxy хранит накопленные значения, а countin — сам лимит в мегабайтах:
counter /var/lib/3proxy/3proxy.counters
countin 1 D 5000 ivan
countin 2 D 5000 olgaПервое число в countin — номер записи в файле счётчиков, буква — период (H — час, D — сутки, W — неделя, M — месяц), затем лимит и список пользователей. Когда лимит исчерпан, пользователь до конца периода получает отказ. Эти строки, как и правила доступа, должны стоять выше службы, к которой относятся.
Цепочки прокси
3proxy умеет отправлять соединения не напрямую, а через вышестоящий прокси. Команда parent дополняет последнее правило allow:
allow *
parent 1000 socks5 203.0.113.5 1080 user password
proxy -p3128Здесь клиенты подключаются к HTTP-прокси на порту 3128, а 3proxy отправляет их соединения дальше через SOCKS5-прокси на 203.0.113.5. Число 1000 — вес: если указать несколько parent с весами, дающими в сумме 1000, 3proxy будет выбирать между ними случайно. Так можно распределить нагрузку между несколькими выходными серверами.
Проверка
sudo systemctl restart 3proxy
curl -x http://ivan:ПарольИвана@192.0.2.10:3128 https://ifconfig.me
curl -x socks5h://ivan:ПарольИвана@192.0.2.10:1080 https://ifconfig.meОбе команды должны вывести внешний адрес сервера с 3proxy.
Другие полезные возможности
- Перенаправление портов. Команда
tcppm 8080 10.0.0.5 80принимает соединения на порту 8080 и передаёт их на порт 80 внутреннего сервера — удобно, когда нужно быстро открыть доступ к одному сервису. - Анонимный HTTP-прокси. Ключ
-aу службыproxyубирает из запросов заголовки, по которым целевой сервер мог бы узнать адрес клиента. - Учёт и лимиты трафика. Команды
counter,countinиcountoutведут счётчики и ограничивают объём трафика пользователя за час, день, неделю или месяц. Командыbandliminиbandlimoutограничивают скорость. - Понижение привилегий. Команды
setuidиsetgidпереводят процесс от root на непривилегированного пользователя после запуска служб, аchrootзапирает его в отдельном каталоге.
Типичные ошибки
- Правила объявлены после службы. Если
allowстоит ниже строкиproxy, на эту службу оно не действует. - Забыт
flush. Без него вторая служба наследует все правила первой, и доступ оказывается шире или уже задуманного. - Открытый прокси. Конфигурация с
auth noneи без ограничения адресов быстро находится сканерами. Всегда ограничивайте доступ паролем или адресами клиентов. - Пароли открытым текстом. Тип
CLудобен для проверки, но в рабочей конфигурации храните хеши. - Пароль передаётся без шифрования. В HTTP-прокси с базовой авторизацией и в SOCKS5 имя и пароль идут по сети открыто. При подключении через интернет защищайте канал туннелем.
Достоинства и ограничения
Достоинства:
- много служб в одной небольшой программе;
- мало потребляет ресурсов;
- гибкие правила по пользователям, адресам, портам и времени;
- встроенные счётчики трафика и ограничение скорости;
- работает в Linux, BSD, macOS и Windows.
Ограничения:
- нет полноценного кеширования веб-страниц, как у Squid;
- не подходит как обратный прокси и балансировщик перед веб-сервисами — для этого есть Nginx и HAProxy;
- настройка только через текстовый файл, а порядок строк в нём имеет значение, что поначалу приводит к ошибкам;
- по отдельным функциям специализированные программы глубже: например, правила SOCKS у Dante детальнее.
Когда выбирать 3proxy
3proxy подходит, когда с одного сервера нужно раздать HTTP- и SOCKS-прокси нескольким пользователям, вести учёт их трафика и ограничивать скорость или объём. Для одной задачи — только SOCKS5 — проще Dante, для фильтрации веб-трафика и отчётов о посещённых сайтах — Squid.
// Похожая задача
Если у вас похожая ситуация
Эта статья относится к одной из рабочих тем. Можно продолжить чтение по теме, перейти на главную, чтобы понять, чем я занимаюсь, или сразу открыть услуги.
Тема статьи
Сети и маршрутизация
MikroTik, VPN, маршрутизация, DNS, BGP, доступ и проблемы связности.
Часто с этим приходят
- Поднять VPN и безопасный доступ в офис или облако
- Починить маршрутизацию, DNS или нестабильный канал
- Настроить MikroTik, firewall и внешние подключения
// Следующий шаг
Если вам нужна не только статья, а помощь по этой теме, удобнее сразу перейти в услугу. Главная и подборка материалов остаются рядом.
Открыть услуги// Contact
Нужна помощь?
Свяжись со мной и я помогу решить проблему
Написать в TelegramОтвечаю в течение рабочего дня (03:00–13:00 GMT)
Или оставьте заявку здесь:
// Related