June 21

Разворачиваем 3proxy на Ubuntu

Введение

3proxy — это компактный и гибкий прокси-сервер с открытым исходным кодом, поддерживающий протоколы HTTP, HTTPS, SOCKS, FTP и другие. Он особенно популярен благодаря своей легкости, простоте настройки и широким возможностям по контролю доступа. Ниже в статье я расскажу как развернуть его на Ubuntu и примеры подключения.

Настройка

Установка зависимостей

– Установим необходимые пакеты для сборки

sudo apt update && sudo apt install build-essential make -y

Клонирование репозитория

— Скачиваем исходный код 3proxy с GitHub:

git clone https://github.com/z3APA3A/3proxy.git
cd 3proxy

Сборка 3proxy

— Собираем прокси-сервер:

make -f Makefile.Linux

— После сборки создаём директорию и копируем бинарник:

sudo mkdir -p /usr/local/3proxy/bin
sudo cp ./bin/* /usr/local/3proxy/bin/

Создание конфигурационного файла

  • Создаём директорию и файл конфигурации:
sudo mkdir -p /etc/3proxy
sudo nano /etc/3proxy/3proxy.cfg
  • Пример конфигурации с поддержкой HTTP и SOCKS5
nscache 4000
timeouts 1 5 30 60 180 1800 15 60
users <имя_пользователя>:CL:<пароль>
auth strong
allow <имя_пользователя>
proxy -p3128
socks -p1080
flush

Замените <имя_пользователя> во всех местах конфига и <пароль> на свои значения.

По остальным значениям: nscache 4000 - Создаёт DNS-кэш на 4000 записей timeouts 1 5 30 60 180 1800 15 60 - Это по сути: timeouts <t1> <t2> <t3> <t4> <t5> <t6> <t7> <t8>

t1 — На соединение с клиентом

t2 — На соединение к удалённому хосту

t3 — Бездействие между чтением запроса

t4— Ожидание ответа от удалённого хоста

t5 — Простой соединения

t6 — Keep-alive

t7 — Макс. время ожидания запроса

t8 — Макс. время ответа

auth strong — Указывает, что будет использоваться авторизация с логином и паролем.

allow <имя_пользователя> — Разрешает доступ пользователю <имя_пользователя>, указанному выше в конфиге.

proxy -p3128— Запускает HTTP-прокси на порту 3128.

socks -p1080 — Запускает SOCKS5-прокси на порту 1080.

flush — Завершает конфигурацию.

Запуск прокси

Для проверки работы запустим сначала вручную:

/usr/local/3proxy/bin/3proxy /etc/3proxy/3proxy.cfg

Проверка через curl

Запускаем с другого ПК Curl, чтобы проверить работу прокси:

— HTTP: curl -x http://<имя_пользователя>:<пароль>@<ваш_IP>:3128 https://ifconfig.me

— SOCKS5: curl -x socks5h://<имя_пользователя>:<пароль>@<ваш_IP>:1080 https://ifconfig.me

Если в ответ вернулся IP - значит все работает корректно.

Настройка автозапуска через systemd

— Создаём systemd unit-файл:

sudo nano /etc/systemd/system/3proxy.service

— Добавляем содержимое:

[Unit]
Description=3proxy Proxy Server
After=network.target

[Service]
ExecStart=/usr/local/3proxy/bin/3proxy /etc/3proxy/3proxy.cfg
Restart=always
User=nobody
LimitNOFILE=512

[Install]
WantedBy=multi-user.target

— Активируем и запускаем:

sudo systemctl daemon-reexec
sudo systemctl enable 3proxy
sudo systemctl start 3proxy

— Проверяем что запустился сервис:

sudo systemctl status 3proxy