3proxy это легкий и довольно производительный кроссплатформенный прокси сервер, который можно развернуть как на Windows, так и в Linux. В этой статье мы покажем, как установить и настроить 3proxy на базе Linux. Инструкция применима для большинства современных дистрибутивов (Debian, Ubuntu, CentOS, RHEL, Rocky, Oracle Linux, и т.д.)
Пакет установки 3proxy отсутствует почти во всех репозиториях Linux, поэтому проще скомпилировать его самостоятельно. Для этого нужно установить компилятор gcc.
В CentOS/RHEL/Oracle Linux/Rocky gcc можно установить с помощью пакетного менеджера yum (dnf):
# yum install gcc
В Debian/Ubuntu используйте команду:
# apt-get install gcc
Скачайте исходные файлы 3proxy с Github и распакуйте архив:
# wget https://github.com/z3APA3A/3proxy/archive/0.9.3.tar.gz
# tar -xvzf 0.9.3.tar.gz
Перейдите в каталог с 3Proxy и скомпилируйте программу:
# cd 3proxy-0.9.3
# make -f Makefile.Linux
Создайте нового пользователя, от имени которого будет работать 3proxy (без доступа к shell и без домашнего каталога):
# useradd -s /usr/sbin/nologin -U -M -r 3proxy
Получите UID и GID нового пользователя:
# id 3proxy
uid=986(3proxy) gid=984(3proxy) groups=984(3proxy)
Создаем каталог для конфигурационного файла 3proxy:
# mkdir /etc/3proxy
Создайте каталог для логов:
# mkdir -p /var/log/3proxy
Скопируйте исполняемый файл 3proxy в /usr/bin:
# sudo cp bin/3proxy /usr/bin/
Предоставьте права для учетной записи 3proxy:
# chown 3proxy:3proxy -R /etc/3proxy
# chown 3proxy:3proxy /usr/bin/3proxy
# chown 3proxy:3proxy /var/log/3proxy
Создайте файл конфигурации:
# mcedit /etc/3proxy/3proxy.cfg
Добавьте в него следующие данные:
# Запуск сервера от пользователя 3proxy setgid 984 setuid 986 # Пропишите правильные DNS сервера (можно получить в /etc/resolv.conf) nserver 8.8.8.8 nserver 8.8.4.4 # укажите режим запуска как deamon daemon # IP-адрес внешнего интерфейса: #external 192.168.20.14 # IP-адрес адрес внутреннего интерфейса: #internal 192.168.1.14 # запуск http proxy на порту 4555 proxy -p4555 -n -a # socks proxy на порту 2333 socks -p2333 # путь к логам и формат лога log /var/log/3proxy/3proxy.log D logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T" rotate 30 # Оставьте размер кэша для запросов DNS по умолчанию nscache 65536 # Используйте стандартные таймауты timeouts 1 5 30 60 180 1800 15 60 # Включите авторизацию по логинам и паролям auth cache strong users "testproxy:CL:Q#x8!jx!-n$)re;V" users "testproxy2:CR:$1$yourSalt$FZ1CZhbunc3enF.ujQCS.1" # CL – пароль пользователя укаывается в открытом виде # CR зашифрованный пароль (md5), можно получить с помощью команды openssl passwd -1 -salt yourSalt2 # можно хранить пользователей и пароли в отдельном файле, тогда укажите такую строку users $/etc/3proxy/.proxyauth
Создайте собственного демона 3proxy для управления им через systemd (подробнее про автозапуск служб и скриптов в Linux):
# touch /etc/systemd/system/3proxy.service
# chmod 664 /etc/systemd/system/3proxy.service
# mcedit /etc/systemd/system/3proxy.service
Добавьте в файл 3proxy.service следующую конфигурацию:
[Unit] Description=3proxy Proxy Server After=network.target [Service] Type=simple ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg ExecStop=/bin/kill `/usr/bin/pgrep 3proxy` RemainAfterExit=yes Restart=on-failure [Install] WantedBy=multi-user.target
Обновите конфигурацию systemd:
# systemctl daemon-reload
Добавьте сервис в автозагрузку и запустите его:
# systemctl enable 3proxy
# systemctl start 3proxy
# systemctl status 3proxy
Добавьте правило в файервол, которое открывает для подключений к прокси порт TCP 4555. Если у вас используется firewalld, добавьте разрешающее правило так:
# firewall-cmd --zone=public --add-port=4555/tcp
# firewall-cmd --reload
Если ваш Linux сервер расположен у внешнего провайдера (AWS, Azure, Oracle Cloud, и т.д.), не забудьте настроить в них соответствующую Security Group для порта 4555.
На этом настройка 3proxy завершена. Задайте IP адрес (имя) хоста с 3proxy и порт в настройках браузера. На компьютеры Windows можно распространить настройки прокси через GPO.
В статье рассмотрена лишь базовая минимальная настройка 3proxy. Вы можете использовать дополнительные возможности 3proxy для реализации более сложны сценариев (SOCKS-прокси, построение цепочек соединений, управление доступом, ограничение ширины потребляемого канала, ограничение трафика по времени или по сайтам и т.д.).