3proxy — це легкий, високопродуктивний набір проксі-серверів, який можна встановити та налаштувати для надання послуг HTTP, HTTPS, SOCKSv4/4.5/5 та FTP-проксі, а також для відображення TCP-портів та перенаправлення трафіку, переважно шляхом компіляції з вихідного коду на Unix-подібних системах або за допомогою попередньо зібраних бінарних файлів на Windows.
3proxy — це компактний та універсальний проксі-сервер, розроблений для середовищ, що вимагають мінімального споживання ресурсів та високої конфігурованості. Його невеликий розмір та ефективність роблять його придатним для вбудованих систем, особистого використання або сценаріїв, де повнофункціональний проксі, такий як Squid, є надмірним.
Передумови
Перед встановленням 3proxy переконайтеся, що цільова система відповідає наступним вимогам:
- Операційна система: Unix-подібна система (Linux, FreeBSD, macOS) для компіляції або Windows для бінарної дистрибуції. Цей посібник зосереджений на Linux.
- Компілятор: GCC або Clang (для компіляції з вихідного коду).
- Інструменти збірки: Утиліта
make. - Мережевий доступ: Можливість завантажувати вихідні файли.
- Привілеї користувача:
rootабоsudoдоступ для встановлення та налаштування системної служби.
Встановлення
Встановлення 3proxy зазвичай включає завантаження вихідного коду, його компіляцію, а потім розміщення бінарних файлів та файлів конфігурації у відповідних місцях.
Завантаження вихідного коду
Завжди завантажуйте останню стабільну версію з офіційного веб-сайту 3proxy або його репозиторію GitHub.
# Перейдіть до тимчасового каталогу
cd /tmp
# Завантажте останню стабільну версію (замініть на поточну версію, якщо вона відрізняється)
# Перевірте https://3proxy.ru/ або https://github.com/3proxy/3proxy для отримання останнього посилання
wget https://3proxy.ru/0.9.4/3proxy-0.9.4.tar.gz
# Розпакуйте архів
tar -xzf 3proxy-0.9.4.tar.gz
# Перейдіть до розпакованого каталогу
cd 3proxy-0.9.4
Компіляція та встановлення
3proxy використовує простий Makefile. Компіляція проста.
# Компіляція 3proxy
make -f Makefile.Linux
# Створення каталогів для встановлення
mkdir -p /usr/local/3proxy/bin
mkdir -p /usr/local/3proxy/etc
mkdir -p /usr/local/3proxy/logs
# Встановлення скомпільованого бінарного файлу та прикладу конфігурації
cp src/3proxy /usr/local/3proxy/bin/
cp 3proxy.cfg.sample /usr/local/3proxy/etc/3proxy.cfg
# Встановлення відповідних дозволів (необов'язково, але є хорошою практикою)
chmod 755 /usr/local/3proxy/bin/3proxy
chmod 640 /usr/local/3proxy/etc/3proxy.cfg
Для систем, що вимагають специфічних функцій (наприклад, NTLM-автентифікації, підтримки IPv6), зверніться до src/Makefile.Linux для отримання прапорів компіляції. Наприклад, щоб увімкнути NTLM: make -f Makefile.Linux NTLM.
Базова конфігурація
Основний файл конфігурації для 3proxy — це 3proxy.cfg. Він визначає порти прослуховування, типи проксі, методи автентифікації та правила доступу. Місце розташування за замовчуванням — /usr/local/3proxy/etc/3proxy.cfg.
Основні директиви
Мінімальний 3proxy.cfg включає:
nserver: Вказує DNS-сервери для розпізнавання імен хостів.timeouts: Встановлює різні тайм-аути з'єднання.log: Визначає шлях та формат файлу журналу.users: Оголошує користувачів для автентифікації.auth: Вказує метод автентифікації.proxy,socks,tcppm: Визначає проксі-сервіси.
Приклад: Простий HTTP/HTTPS проксі
Ця конфігурація налаштовує HTTP/HTTPS проксі на порту 3128, вимагаючи базової автентифікації для користувача з іменем testuser та паролем password123.
# /usr/local/3proxy/etc/3proxy.cfg
# Глобальні налаштування
nserver 8.8.8.8 # Google Public DNS
nserver 8.8.4.4
# Тайм-аути в секундах
timeouts 1 5 30 60 180 1800 15 60
# Налаштування журналу
# log /usr/local/3proxy/logs/3proxy.log D # Щоденна ротація
log /usr/local/3proxy/logs/3proxy.log
logformat "- +_L%t.%. %N.%O %I %E %U %C:%c %R:%r %O %h %T"
# Користувачі для автентифікації: user:password
users testuser:CL:password123
# Метод автентифікації
# CL: Пароль у відкритому вигляді (не рекомендується для продакшну)
# LM: Хеш LAN Manager
# NT: Хеш NTLM
# P: Зашифрований пароль (внутрішній формат 3proxy, використовуйте `3proxy -e` для генерації)
auth strong # Використовуйте сильну автентифікацію (вимагає LM/NT або P)
# Для простих CL паролів використовуйте 'auth iponly,basic'
# Дозволити доступ для автентифікованих користувачів
allow testuser
# Визначити сервіс HTTP/HTTPS проксі
# -p 3128: Прослуховує порт 3128
# -n: Вимикає NTLM-автентифікацію для цього сервісу (якщо глобальний NTLM увімкнено)
# -a: Вмикає базову автентифікацію
proxy -p3128
Щоб згенерувати зашифрований пароль за допомогою 3proxy -e:
/usr/local/3proxy/bin/3proxy -e password123
Вивід (наприклад, _E_01000000010000000000000000000000) потім можна використовувати в директиві users з префіксом _E_: users testuser:_E_01000000010000000000000000000000.
Запуск 3proxy
Після налаштування 3proxy.cfg запустіть сервер:
/usr/local/3proxy/bin/3proxy /usr/local/3proxy/etc/3proxy.cfg
Щоб запустити його у фоновому режимі як демон:
/usr/local/3proxy/bin/3proxy /usr/local/3proxy/etc/3proxy.cfg -d
Розширені теми конфігурації
Методи автентифікації
3proxy підтримує різні методи автентифікації:
iponly: Автентифікація виключно на основі IP-адреси клієнта (без імені користувача/пароля).basic: HTTP Basic Authentication (надсилає облікові дані у відкритому вигляді).digest: HTTP Digest Authentication.ntlm: NTLM-автентифікація (вимагає компіляції з підтримкою NTLM).strong: Автоматично вибирає найсильніший доступний метод.
Приклад з auth iponly:
# /usr/local/3proxy/etc/3proxy.cfg
auth iponly
allow 192.168.1.0/24 # Дозволити всім клієнтам з цієї підмережі без явної автентифікації користувача
proxy -p3128
Контроль доступу
Директиви allow та deny контролюють доступ клієнтів на основі різних критеріїв. Правила обробляються по черзі. Застосовується перше відповідне правило.
# /usr/local/3proxy/etc/3proxy.cfg
# Заборонити конкретні IP-адреси
deny 192.168.1.10
# Дозволити конкретного користувача
allow myuser
# Дозволити конкретну підмережу для HTTP/HTTPS
allow * 192.168.1.0/24 * * HTTP HTTPS
# Заборонити доступ до конкретних доменів призначення
deny * * .example.com
Синтаксис для allow/deny такий: allow [користувач] [src_ip] [dst_ip] [target_port] [protocol]. * діє як шаблон.
Ланцюгові проксі (батьківські проксі)
3proxy може пересилати запити до іншого проксі-сервера за допомогою директиви parent.
# /usr/local/3proxy/etc/3proxy.cfg
# Ланцюг до вихідного HTTP-проксі
parent 1000 http 192.168.1.100 8080 myuser:mypass
# Ланцюг до вихідного SOCKS5-проксі
parent 1000 socks5 192.168.1.101 1080
Перший аргумент 1000 — це тайм-аут у мілісекундах.
SOCKS-проксі
Щоб налаштувати SOCKS-проксі (v4, v4.5, v5), використовуйте директиву socks.
# /usr/local/3proxy/etc/3proxy.cfg
# Визначити сервіс SOCKS-проксі на порту 1080
socks -p1080
Відображення TCP-портів (TCPPM)
Директива tcppm дозволяє пересилати TCP-з'єднання з локального порту на віддалений хост та порт.
# /usr/local/3proxy/etc/3proxy.cfg
# Пересилати з'єднання з локального порту 2222 на remotehost:22 (SSH)
tcppm -p2222 remotehost.example.com 22
Конфігурація журналювання
Директива log вказує файл журналу. logformat визначає структуру виводу. rotate налаштовує ротацію журналів.
# /usr/local/3proxy/etc/3proxy.cfg
# Журнал у /usr/local/3proxy/logs/access.log
log /usr/local/3proxy/logs/access.log
# Користувацький формат журналу
logformat "- +_L%t.%. %N.%O %I %E %U %C:%c %R:%r %O %h %T"
# Ротувати журнали щодня (D), щотижня (W), щомісяця (M) або за розміром (S<байти>)
rotate D /usr/local/3proxy/logs/archive
Системна інтеграція (служба systemd)
Для надійної роботи запустіть 3proxy як службу systemd.
-
Створіть файл служби:
/etc/systemd/system/3proxy.service```ini
[Unit]
Description=3proxy Lightweight Proxy Server
After=network.target[Service]
Type=forking
ExecStart=/usr/local/3proxy/bin/3proxy /usr/local/3proxy/etc/3proxy.cfg -d
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
User=nobody # Або спеціальний непривілейований користувач, наприклад '3proxy'
Group=nogroup # Або спеціальна група[Install]
WantedBy=multi-user.target
`` *Примітка*: Створіть користувача/групу3proxy, якщо бажаєте:sudo useradd -r -s /sbin/nologin 3proxy. Налаштуйте права власності файлів для/usr/local/3proxy/logs`. -
Перезавантажте systemd, увімкніть та запустіть службу:
bash sudo systemctl daemon-reload sudo systemctl enable 3proxy.service sudo systemctl start 3proxy.service sudo systemctl status 3proxy.service
Поради щодо усунення несправностей
- Перевірте журнали: Завжди звертайтеся до файлу журналу 3proxy (
/usr/local/3proxy/logs/3proxy.logза замовчуванням) для пошуку повідомлень про помилки або проблеми з доступом. - Правила брандмауера: Переконайтеся, що брандмауер (наприклад,
ufw,firewalld,iptables) дозволяє вхідні з'єднання до портів прослуховування 3proxy (наприклад, 3128, 1080).
bash # Приклад для ufw sudo ufw allow 3128/tcp - Синтаксис конфігурації: Перевірте
3proxy.cfgна наявність синтаксичних помилок. 3proxy особливо вимогливий до формату конфігурації. - Дозволи: Переконайтеся, що бінарний файл 3proxy має дозволи на виконання, а каталог журналів доступний для запису користувачем, який запускає службу.
- Перезапустіть службу: Після будь-яких змін конфігурації перезавантажте або перезапустіть службу 3proxy (
sudo systemctl restart 3proxy).
3proxy проти Squid
| Функція | 3proxy | Squid |
|---|---|---|
| Використання ресурсів | Мінімальне (низьке CPU, RAM) | Помірне до високого (залежить від навантаження/функцій) |
| Складність | Відносно проста, текстова конфігурація | Складна, розширені параметри конфігурації |
| Типи проксі | HTTP, HTTPS, SOCKS, FTP, TCPPM | HTTP, HTTPS, FTP, ICP, ESI |
| Кешування | Немає вбудованого кешування | Надійне, висококонфігуроване кешування |
| Перехоплення SSL | Обмежене/базове | Розширене, на основі сертифікатів |
| Автентифікація | Basic, Digest, NTLM, на основі IP | Комплексна (LDAP, Kerberos, RADIUS) |
| Випадок використання | Легкий, особистий, вбудований | Корпоративний, високий трафік, фільтрація контенту |
| Розробка | Активна, один розробник | Активна, керована спільнотою |