3proxy - бесплатный и открытый прокси-сервер, который используется для различных целей, таких как фильтрация трафика, кэширование и блокирование конкретных веб-сайтов. Он поддерживает различные протоколы, такие как SOCKS v4/v4a/v5, HTTP, HTTPS, FTP, POP3, SMTP, и поддерживает методы аутентификации, такие как SOCKS5 имя пользователя/пароль, NTLM, LDAP, Kerberos и SSO.
Сервер сильно настраиваем, обеспечивая детальное управление использованием пропускной способности и параметрами подключения. 3proxy может быть установлен на платформах Windows, Linux и macOS. Это легкий и простой в использовании прокси-сервер, подходящий для небольших и средних сетей. Возможна аренда vps прокси.
Необходимо аккуратно, так как нежелательно устанавливать сервер без авторизации. Это может привести к несанкционированному использованию сервера злоумышленниками для организации рассылки спама и большого трафика.
Для начала необходимо установить несколько пакетов и зависимостей.
Для AlmaLinux выполняется команда:
yum -y install gcc wget tar
а для Debian:
apt install -y build-essential wget tar
Затем скачиваем файлы с официального сайта проекта 3proxy, распаковываем архив и компилируем скачанные файлы.
Далее создаем необходимые директории для конфигурационных файлов и логов, переносим исполняемый файл 3proxy
, а также создаем нового пользователя "proxyuser
" и назначаем ему права на директории. Для создания нового конфигурационного файла выполняем команду:
touch /etc/3proxy/3proxy.cfg
Назначаем права только для пользователя root с помощью chmod 600 /etc/3proxy/3proxy.cfg
.
После создания нового конфигурационного файла необходимо правильно его заполнить. Для этого записываем uid
и gid
пользователя "proxyuser
", затем используем текстовый редактор для копирования и вставки текста из примера файла конфигурации. Сохраняем изменения в файле конфигурации и получаем установленный 3proxy с поддержкой http(s) и socks5-proxy.
Ниже приведем образец конфигурационного файла:
Настройка запуска сервера от пользователя proxyuser
(вставляем uid и gid нашего пользователя, которые мы узнали ранее). setgid 991
setuid 991
Указываем правильные сервера имен. Посмотреть можно в /etc/resolv.conf:
nserver 8.8.8.8
nserver 8.8.4.4
Используем таймауты и размер кэша для запросов DNS по умолчанию: timeouts 1 5 30 60 180 1800 15 60
nscache 65536
Указываем режим запуска как daemon: daemon
Указываем IP-адрес внешнего интерфейса сервера: external 111.111.111.111
(либо игнорируем строку, если IP один).
Указываем IP-адрес внутреннего интерфейса сервера: internal 192.168.0.1
(либо игнорируем, чтобы прокси слушал все IP).
Настраиваем http proxy на стандартном порту 3128: proxy -p3128 -n -a
(укажите свой порт, предварительно проверив, что он работает).
Настраиваем socks proxy на стандартном порту 1080: socks -p1080
(укажите свой порт, предварительно проверив, что он работает).
Указываем путь к логам, формат лога и ротацию: log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30
Дальше создаем файл-инициализации для systemd и настраиваем верные права:
# touch /etc/systemd/system/3proxy.service
# chmod 664 /etc/systemd/system/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 proxyuser`
RemainAfterExit=yes
Restart=on-failure
[Install]
WantedBy=multi-user.target
Сохраняем и обновляем конфигурацию systemd:
# systemctl daemon-reload
Запускаем 3proxy и добавляем его в автозагрузку:
# systemctl start 3proxy
# systemctl enable 3proxy
Настройка закончена. На порту 3128 теперь у вас работает http-proxy, на порту 1080 — socks-proxy.
Первая проблема - есть вероятность, что после регистрации нового домена он не будет доступен вам из-за кеширования доменных имён. Чтобы решить эту проблему, необходимо дождаться обновления записей DNS или добавить IP-адрес вашего сервера и новый домен в файл hosts. Это позволит обращаться к новому домену, пока записи в DNS не обновятся.
Проблема вторая - если использовать прокси-сервер с дефолтными портами, то рано или поздно возможно обнаружение сервера. Для того, чтобы решить эту проблему, рекомендуется изменить порты.
Например, на http proxy можно установить порт 7834, а на Socks - 7835. Однако, такие порты также могут быть обнаружены, поэтому в firewall можно настроить доступ к серверу только с определенных адресов, в то время как остальным будет запрещен доступ. Это решение является достаточно надежным, хотя не слишком гибким, поскольку вам может не быть доступен статический IP-адрес.
Проблема третья - в случае, если вы используете прокси-сервер и ведете логи всех соединений, то со временем они могут стать достаточно объемными и занять большую часть свободного места на диске. Чтобы избежать этой проблемы, необходимо предварительно позаботиться о ротации логов или о том, чтобы не вести их вовсе.
Существуют различные методы ротации логов, которые позволяют сохранять только последние несколько файлов логов и автоматически удалять более старые записи. Поэтому лучше всего заранее настроить процесс ротации логов, чтобы избежать переполнения диска. Это поможет сохранить все данные и избежать потери информации при использовании прокси-сервера.
users proxyuser:CL:password
daemon
log /var/log/3proxy/3proxy.log D
rotate 30
auth strong
proxy -n -a
setgid 65534
setuid 65534
Еще необходимо создать директорию под логи и выставить права (мы запускаем сервер с минимальными правами nobody в системе используя директивы setgid/setud
):
mkdir /var/log/3proxy ; chown nobody /var/log/3proxy
Рассмотрим вариант установки 3proxy в Docker.
Для начала потребуется установить некоторые пакеты (а для недавно установленных OS Debian и Ubuntu, возможно, ещё потребуется обновить индекс пакетов apt
командой # apt update
).
Для AlmaLinux и CentOS:
# yum install docker docker-compose
для Ubuntu и Debian:
# apt install docker docker.io docker-compose
Скачиваем образ:
# docker pull 3proxy/3proxy
По умолчанию 3proxy использует безопасную среду chroot в /usr/local/3proxy
с uid 65535
и gid 65535
, и ожидает, что конфигурационный файл 3proxy будет помещен в /usr/local/etc/3proxy
. Пути в конфигурационном файле должны указываться относительно /usr/local/3proxy
, то есть должно быть /logs
вместо /usr/local/3proxy/logs
. В chroot требуется разрешение для nserver
.
Для этого создадим директорию и конфигурационный файл 3proxy:
# mkdir -p /etc/dockerapp/3proxy
# touch /etc/dockerapp/3proxy/3poxy.conf
Далее с помощью любого удобного для вас текстового редактора необходимо отредактировать созданный конфигурационный файл 3proxy.conf. Для запуска 3proxy в Docker достаточно минимальной конфигурации:
nserver 8.8.8.8
socks -p3129
Для того чтобы добавить логирование и пользователя, необходимо в файл конфигурации 3proxy добавить:
log /logs/3proxy.log
auth strong
users "proxyuser:CR:87beeef3f4ee4661ac1897eca216fc26"
Вместо «87beeef3f4ee4661ac1897eca216fc26
» необходимо указать хэш MD5 пароля для пользователя proxyuser. Узнать хэш MD5 можно с помощью онлайн генераторов.
Запустим 3proxy с помощью docker-compose. Для этого потребуется создать файл конфигурации в формате .yml
:
# touch /etc/dockerapp/3proxy/docker-compose.yml
Вставляем туда с помощью текстового редактора следующий текст:
version: "2.1"
services:
3proxysvc:
image: 3proxy/3proxy:latest
container_name: 3proxy
volumes:
- /etc/dockerapp/3proxy/conf:/usr/local/3proxy/conf
ports:
- 8080:3129
restart: unless-stopped
Сохраняем. В данном файле мы указали внешний порт 8080. Теперь можем запускать:
# docker-compose -f /etc/dockerapp/3proxy/docker-compose.yml up -d
Получим примерно такой ответ:
Creating network "3proxy_default" with the default driver
Creating 3proxy ... done
Проверяем:
# docker ps
Получим ответ, где будут указаны ID контейнера, образ, статус, используемые порты и имя:
48cc0cd140cd 3proxy/3proxy:latest "/bin/3proxy /etc/3p…" 5
Примените скидку, вставив промокод в специальное поле при оформлении заказа: