// 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:

bash
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 будет выбирать между ними случайно. Так можно распределить нагрузку между несколькими выходными серверами.

Проверка

bash
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)

Или оставьте заявку здесь:

Подтвердите, что вы не бот.

Написать и получить быстрый ответ