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_x000D_setgid 984_x000D_ setuid 986_x000D_# Пропишите правильные DNS сервера (можно получить в /etc/resolv.conf)_x000D_nserver 8.8.8.8_x000D_nserver 8.8.4.4_x000D_# укажите режим запуска как deamon_x000D_daemon_x000D_# IP-адрес внешнего интерфейса:_x000D_#external 192.168.20.14_x000D_# IP-адрес адрес внутреннего интерфейса:_x000D_#internal 192.168.1.14_x000D_# запуск http proxy на порту 4555_x000D_proxy -p4555 -n -a_x000D_# socks proxy на порту 2333_x000D_socks -p2333_x000D_# путь к логам и формат лога_x000D_log /var/log/3proxy/3proxy.log D_x000D_logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"_x000D_rotate 30_x000D_# Оставьте размер кэша для запросов DNS по умолчанию_x000D_nscache 65536_x000D_# Используйте стандартные таймауты_x000D_timeouts 1 5 30 60 180 1800 15 60_x000D_ # Включите авторизацию по логинам и паролям_x000D_auth cache strong_x000D_users "testproxy:CL:Q#x8!jx!-n$)re;V"_x000D_users "testproxy2:CR:$1$yourSalt$FZ1CZhbunc3enF.ujQCS.1"_x000D_# CL – пароль пользователя укаывается в открытом виде_x000D_# CR зашифрованный пароль (md5), можно получить с помощью команды openssl passwd -1 -salt yourSalt2_x000D_# можно хранить пользователей и пароли в отдельном файле, тогда укажите такую строку users $/etc/3proxy/.proxyauth_x000D_
Создайте собственного демона 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]_x000D_Description=3proxy Proxy Server_x000D_After=network.target_x000D_[Service]_x000D_Type=simple_x000D_ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg_x000D_ExecStop=/bin/kill `/usr/bin/pgrep 3proxy`_x000D_RemainAfterExit=yes_x000D_Restart=on-failure_x000D_[Install]_x000D_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-прокси, построение цепочек соединений, управление доступом, ограничение ширины потребляемого канала, ограничение трафика по времени или по сайтам и т.д.).