Тариф успешно добавлен в корзину
В корзину
url image

Установка и настройка 3proxy

3proxy — это бесплатный и кроссплатформенный прокси-сервер с открытым исходным кодом. Его можно использовать, чтобы быстро поднять SOCKS5 или HTTP-прокси на своем виртуальном или выделенном сервере, а также для развертывания прокси-шлюза в небольших сетях.

3proxy поддерживает множество протоколов: HTTP/HTTPS, SOCKS 4/4.5/5, FTP, POP3, SMTP. Встроенные функции:

  • авторизация по IP-адресу и имени/паролю;
  • возможность ограничивать скорость и задавать лимиты для сетевого трафика;
  • контроль доступа при помощи ACL (Access Control List — список управления доступом).

В статье рассмотрим установку и настройку 3proxy на сервере с Linux, а также его запуск в Docker.

Установка

Установить 3proxy можно двумя способами: скачать готовый deb или rpm-пакет, собрать из исходного кода. Разберём оба подхода для различных дистрибутивов Linux — AlmaLinux 10.1, CentOS 10, Debian 13, Ubuntu 24.04.

Установка готового пакета

Скачать готовый deb или rpm-пакет можно на официальной странице проекта в GitHub. Для скачивания потребуется утилита wget. Мы будем использовать последнюю актуальную версию — 0.9.5. Все команды необходимо выполнять от имени root-пользователя.

Для дистрибутивов на основе Debian (Ubuntu, Debian) установка выполняется командой:

wget https://github.com/3proxy/3proxy/releases/download/0.9.5/3proxy-0.9.5.x86_64.deb

Для дистрибутивов AlmaLinux или CentOS используйте:

wget https://github.com/3proxy/3proxy/releases/download/0.9.5/3proxy-0.9.5.x86_64.rpm

Для установки пакета в Ubuntu или Debian выполните команду:

dpkg -i 3proxy-0.9.5.x86_64.deb

Для установки пакета в AlmaLinux или CentOS выполните:

rpm -i 3proxy-0.9.5.x86_64.rpm

Запустите сервис 3proxy (независимо от дистрибутива):

systemctl start 3proxy.service

Проверьте статус сервиса:

systemctl status 3proxy.service

Если в статусе отображается active (running), то 3proxy успешно запущен и готов к работе.

Установка сборкой из исходного кода

При необходимости (например, если нужна более свежая версия) 3proxy можно собрать из исходного кода.

Для начала установим необходимые пакеты. Для дистрибутивов Ubuntu и Debian воспользуемся командой:

apt -y install gcc make wget tar libssl-dev

Для дистрибутивов AlmaLinux или CentOS:

dnf install gcc make wget tar openssl-devel -y

Переходим в каталог src, который используется для хранения исходных кодов программ:

cd /usr/local/src

Скачиваем tar-архив с исходным кодом программы:

wget https://github.com/3proxy/3proxy/archive/refs/tags/0.9.5.tar.gz

Разархивируем его:

tar -xvf 0.9.5.tar.gz

Переходим в директорию:

cd 3proxy-0.9.5/

Создаем символическую ссылку на файл Makefile:

ln -s Makefile.Linux Makefile

Запускаем процесс компиляции:

make -f Makefile.Linux

Устанавливаем программу: 

make install

Запускаем 3proxy и проверяем статус:

systemctl start 3proxy.service && systemctl status 3proxy.service

Если в статусе отображается active (running), то 3proxy успешно запущен и готов к работе.

Открываем порты

При использовании ufw:

sudo ufw allow 3128/tcp
sudo ufw allow 1080/tcp

При использовании firewalld:

sudo firewall-cmd --permanent --add-port=3128/tcp
sudo firewall-cmd --permanent --add-port=1080/tcp
sudo firewall-cmd --reload

При использовании iptables:

sudo iptables -A INPUT -p tcp --dport 3128 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 1080 -j ACCEPT

Создание отдельного пользователя для 3proxy

Чтобы реализовать принцип наименьших привилегий, создадим отдельного пользователя от имени которого будет запущен прокси-сервер.

  1. Создадим пользователя с именем proxy3:
sudo adduser --system --no-create-home --disabled-login --group proxy3
  1. Получим UID (идентификатор пользователя) и GID (идентификатор группы) созданного пользователя:
id proxy3

Значения uid и gid нужно запомнить. В нашем примере они равны 124 и 125 соответственно. 

Конфигурация с логином/паролем (HTTP + HTTPS + SOCKS5)

Настроим 3proxy как SOCKS5-прокси с аутентификацией по логину и паролю. При использовании этого протокола ваш реальный IP-адрес подменяется адресом прокси-сервера. Это может быть полезно для подключения к корпоративным сетям, а также для веб-скрапинга и сбора данных.

  1. Открываем на редактирование основной конфигурационный файл 3proxy.cfg:
nano /etc/3proxy/3proxy.cfg
  1. Приводим файл к следующему виду:
setgid 124
setuid 125
nserver 8.8.8.8
nscache 65536
log /var/log/3proxy.log D
rotate 30
logformat "L%t %U %C %R %c %r %i %o %T"
auth strong
users user1:CL:PasswordForUser1
proxy -p3128 -i0.0.0.0
socks -p1080 -i0.0.0.0

Описание параметров конфигурации:

  • setgid 124 — уникальный идентификатор пользователя от имени которого будет запущен 3proxy.
  • setuid 125 — уникальный идентификатор группы пользователя от имени которого будет запущен 3proxy.
  • nserver 8.8.8.8  адрес DNS-сервера, который 3proxy будет использовать для разрешения имён хостов. Можно указать сразу несколько адресов.
  • nscache 65536 — размер кэша DNS-записей (количество записей). Позволяет ускорить повторные обращения к одним и тем же доменам и снизить нагрузку на DNS-серверы.
  • log /var/log/3proxy.log D — включает запись логов в файл /var/log/3proxy.log. D — тип ротации: ежедневная (Daily). Можно указать другие варианты: H (почасовая), W (еженедельная), M (ежемесячная), C (каждую минуту). Без типа ротации запись в лог-файл будет происходить бесконечно.
  • rotate 30 — задает количество старых лог-файлов которые необходимо сохранять. После 30-го файла, самый старый файл удаляется.
  • logformat "L%t %U %C %R %c %r %i %o %T" — формат записи строк в лог-файле. Обратите внимание: чем больше данных логируется, тем больше становится файл с логами. Рекомендуется гибко настраивать логирование, указав только необходимые ключи для записи:
    • L — локальное время;
    • %t — timestamp в секундах с 1970-01-01 (формат Unix time);
    • %U — имя пользователя;
    • %C — IP-адрес клиента;
    • %R — IP-адрес целевого сервера (куда идёт запрос);
    • %c — порт клиента;
    • %r — порт целевого сервера;
    • %i — байты, полученные от целевого сервера (входящий трафик);
    • %o — байты, отправленные целевому серверу (исходящий трафик);
    • %T — текст запроса.
  • auth strong — тип аутентификации: логин + пароль.
  • users user1:CL:PasswordForUser1 — создаёт учётную запись с именем пользователя user1 и паролем PasswordForUser1.
  • proxy -p3128 -i0.0.0.0 — запускает HTTP/HTTPS-прокси.
    • -p3128 — порт 3128 для HTTP-прокси;
    • -i0.0.0.0 — слушать на всех интерфейсах.
  • socks -p1080 -i0.0.0.0 — запускает SOCKS5-прокси.
    • -p1080 — стандартный порт SOCKS;
    • -i0.0.0.0 — слушать на всех интерфейсах.

Сохраняем изменения в файле и выходим из него.

  1. Перезапускаем сервис 3proxy и проверяем статус:
systemctl restart 3proxy && systemctl status 3proxy

Если сервис успешно запустился, значит, ошибок нет, и новая конфигурация успешно применена.

  1. Проверим работоспособность прокси сервера с помощью утилиты curl. Вместо IP-адреса 192.168.234.135 необходимо указать свой внутренний IP-адрес сервера. Узнать IP-адрес можно с помощью команды ip a.

Для начала проверим HTTP-прокси:

curl -x http://user1:PasswordForUser1@192.168.234.135:3128 http://ifconfig.me

Далее проверим SOCKS5-прокси:

curl --socks5 user1:PasswordForUser1@192.168.234.135:1080 http://ifconfig.me

Если обе команды вернули внешний IP-адрес, то прокси-сервер работает.

Конфигурация с анонимным доступом

Использовать анонимный доступ нужно очень осторожно. Открытый публичный прокси без защиты быстро находят сканеры, которые используют прокси для рассылки спама, DDoS-атак и другой вредоносной активности. Поэтому доступ по IP-адресу лучше ограничивать, а полностью открытый прокси использовать только для тестов.

Как настроить анонимный доступ: 

  1. Открываем на редактирование основной конфигурационный файл 3proxy.cfg:
nano /etc/3proxy/3proxy.cfg
  1. Приводим конфигурацию к следующему виду:
setgid 124
setuid 125
nserver 8.8.8.8
nscache 65536
log /var/log/3proxy.log D
rotate 30
logformat "L%t %U %C:%c %R:%r %i %o %T"
auth none
allow *
proxy -p3128 -i0.0.0.0 -a
socks -p1080 -i0.0.0.0

Сохраняем изменения в файле и выходим из него.

  1. Перезапускаем сервис 3proxy и проверяем статус:
systemctl restart 3proxy && systemctl status 3proxy

Если в конфигурации нет ошибок, то отобразится статус «active».

  1. Проверяем работоспособность с помощью утилиты curl. Не забудьте поменять IP-адрес на свой:
curl -x http://192.168.234.135:3128 http://ifconfig.me
curl --socks5 192.168.234.135:1080 http://ifconfig.me

Если обе команды вернули внешний IP-адрес, то анонимный прокси-сервер работает.

Запуск 3proxy в Docker

При желании, 3proxy легко запустить в Docker контейнере. Рассмотрим несколько способов.

Запуск анонимного режима

  1. Запустим 3proxy в анонимном режиме без аутентификации:
docker run -d \
  --name 3proxy-anonymous \
  --restart unless-stopped \
  -p 3128:3128 \
  -p 1080:1080 \
  ghcr.io/tarampampam/3proxy:latest
  1. Проверим работоспособность 3proxy:
curl -x http://127.0.0.1:3128 http://ifconfig.me
curl --socks5 127.0.0.1:1080 http://ifconfig.me

Запуск с авторизацией

  1. Запустим 3proxy с использованием аутентификации по логину и паролю. Прежде чем запускать конфигурацию, необходимо остановить или удалить контейнер из предыдущего примера, чтобы избежать конфликта портов. 
docker run -d \
  --name 3proxy-with-password \
  --restart unless-stopped \
  -p 3128:3128 \
  -p 1080:1080 \
  -e AUTH_TYPE=strong \
  -e USERS="user2:CL:PasswordForUser2" \
  ghcr.io/tarampampam/3proxy:1
  1. Проверяем работу:
curl -x http://user2:PasswordForUser2@127.0.0.1:3128 http://ifconfig.me
curl --socks5 user2:PasswordForUser2@127.0.0.1:1080 http://ifconfig.me

Этот материал был полезен?

Скидка новым клиентам
Закажите сервер сегодня и получите скидку на первый месяц аренды!
Наш сайт использует cookies Вы можете отключить их в настройках браузера, но это может ограничить функционал. Оставаясь на сайте, вы соглашаетесь с использованием cookies.